您好,欢迎访问一九零五行业门户网

模拟spring功能

1、建立user.java,内容如下:
package net.model; /** * @项目名:spring2.5 * @包名:net.model * @文件名:user.java * @日期:jun 22, 2011 4:31:22 pm * @备注: * @作者:apple */ public class user { private string username; private string password; public string getusername() {return username;} public void setusername(string username) {this.username = username;} public string getpassword() {return password;} public void setpassword(string password) { this.password = password; } }
2、建立userdao.java,内容如下:
package net.dao; import net.model.user; /** * @项目名:spring2.5 * @包名:net.dao * @文件名:userdao.java * @日期:jun 22, 2011 4:12:42 pm * @备注: * @作者:apple */ public interface userdao { public void save(user u); }
3、建立userdaoimpl.java,内容如下:
package net.dao.impl; import net.dao.userdao; import net.model.user; /** * @项目名:spring2.5 * @包名:net.dao.impl * @文件名:userdaoimpl.java * @日期:jun 22, 2011 4:13:45 pm * @备注: * @作者:apple */ public class userdaoimpl implements userdao { public void save(user u) { // todo auto-generated method stub system.out.println("user save..."); } }
4、建立userservice.java,内容如下:
package net.service; import net.dao.userdao; import net.dao.impl.userdaoimpl; import net.model.user; /** * @项目名:spring2.5 * @包名:net.service * @文件名:userservice.java * @日期:jun 22, 2011 4:15:47 pm * @备注: * @作者:apple */ public class userservice { private userdao userdao ; public userdao getuserdao() { return userdao; } public void setuserdao(userdao userdao) { this.userdao = userdao; } public void add(user u){ userdao.save(u); }//这里可以调用任务实现了userdao接口的save方法了。 }
5、建立beanfactory.java,内容如下:
package net.factory; /** * @项目名:spring2.5 * @包名:net.factory * @文件名:beanfactory.java * @日期:jun 22, 2011 4:37:08 pm * @备注: * @作者:apple */ public interface beanfactory { public object getbean(string name); }
6、建立classpathxmlapplicationcontext.java,内容如下:
package net.util; import java.lang.reflect.method; import java.util.hashmap; import java.util.list; import java.util.map; import net.dao.userdao; import net.factory.beanfactory; import net.model.user; import net.service.userservice; import org.jdom.document; import org.jdom.element; import org.jdom.input.saxbuilder; /** * @项目名:spring2.5 * @包名:net.util * @文件名:classpathxmlapplicationcontext.java * @日期:jun 22, 2011 4:19:35 pm * @备注: * @作者:apple */ public class classpathxmlapplicationcontext implements beanfactory{ private map<string,object> beans = new hashmap<string, object>(); public classpathxmlapplicationcontext() throws exception{ saxbuilder sb=new saxbuilder();//创建一个saxbuilder对象 document doc=sb.build(classpathxmlapplicationcontext.class.getclassloader().getresourceasstream("beans.xml")); //构造文档对象 element root=doc.getrootelement(); //获取根元素 list list=root.getchildren("bean");//取名字为bean的所有元素 for(int i=0;i<list.size();i++){ element element=(element)list.get(i); string id = element.getattributevalue("id"); string clazz = element.getattributevalue("class"); system.out.println(id + ":" + clazz); object o = class.forname(clazz).newinstance(); beans.put(id, o); //* 以下for循环是实现模拟spring自动装配(注入)功能 //一开始列出此bean的所有property子元素 for (element propertyelement : (list<element>)element.getchildren("property")){ //获取property子元素中 属性为name的值(也就是需要注入的参数名称) string name = propertyelement.getattributevalue("name"); //获取property子元素中 属性为bean的值 (需要注入参数的类型),此处的bean值是已经在上面初始化好了的bean的id了。 string bean = propertyelement.getattributevalue("bean"); //因此此处获取指定id的bean object beanobject = beans.get(bean); //组成set方法名称:set + 第一个字母大写 + 其它的字母 string methodname = "set" + name.substring(0,1).touppercase() + name.substring(1); system.out.println("methodname = " + methodname); //获取bean的set方法,参数(方法名,参数:此参数的类型) method m = o.getclass().getmethod(methodname, beanobject.getclass().getinterfaces()[0]); //使用反映机制,执行method方法,从而实现注入功能 m.invoke(o, beanobject); } } } public object getbean(string name){ return beans.get(name); } public static void main(string[] args){ beanfactory factory=null; try { factory = new classpathxmlapplicationcontext(); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } userservice service = (userservice)factory.getbean("userservice"); user u = new user(); service.add(u); } }
7、建立beans.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?> <beans> <bean id="u" class="net.dao.impl.userdaoimpl"> </bean> <bean id="userservice" class="net.service.userservice"> <property name="userdao" bean="u"/> </bean> </beans>
其它类似信息

推荐信息