IOC(依赖注入)具体实现
From http://easy115.com/2012/01/05/spring%E7%94%A8%E6%B3%95%E5%B0%8F%E7%BB%93-ioc%E4%BB%A5%E6%9D%A5%E6%B3%A8%E5%85%A5%E5%85%B7%E4%BD%93%E6%97%B6%E9%97%B4.html
大致分为3种注入方式: <constructor-arg index="0"> <value>Janet</value> </constructor-arg> 2.setter方法注入 <property name="password"> <value>12345678</value> </property> 3.特殊注入 <property name="hobbyList"> <list> <value>篮球</value> <value>发财</value> <value>泡MM</value> </list> </property> <2>Map <map> <entry key="Eric"> <value>80</value> </entry> <entry key="Janet"> <value>60</value> </entry> <entry key="Jason"> <value>100</value> </entry> </map> <3>Properties <property name="attributeList"> <props> <prop key="name">Jason</prop> <prop key="hobby">足球</prop> </props> </property> <4>Set <property name="nameList"> <set> <value>Eric</value> <value>Janet</value> <value>Coco</value> </set> </property> (2)如果bean中的属性是另外一个bean的对象那么用ref 属性指向那个bean对象的id属性,例如: <ref bean="date"/> 1、构造器注入 public class User { private String userName; private String password; public User( String userName,String password ) { this.userName = userName; this.password = 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; } } 配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="userBean" class="ioc.constructor_injection.beans.User"> <constructor-arg index="0"> <value>Janet</value> </constructor-arg> <constructor-arg index="1"> <value>88888888</value> </constructor-arg> </bean> </beans> 具体应用: public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext( "./src/ioc/constructor_injection/config/config.xml"); // 取得一个实例 User user = (User) ac.getBean("userBean"); System.out.println( user.getUserName() + " - " + user.getPassword() ); } 2、setter方法注入 public class User { private String userName; private String password; public User() { } 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; } } 配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="userBean" class="ioc.setter_injection.beans.User"> <property name="userName"> <value>Eric</value> </property> <property name="password"> <value>12345678</value> </property> </bean> </beans> 具体应用: public static void main(String[] args) { ApplicationContext ac = new FileSystemXmlApplicationContext( "./src/ioc/setter_injection/config/config.xml"); User user = (User) ac.getBean("userBean"); System.out.println( user.getUserName() + " - " + user.getPassword() ); } 3、List注入 public class User { private List hobbyList = new Vector(); public List getHobbyList() { return hobbyList; } public void setHobbyList(List hobbyList) { this.hobbyList = hobbyList; } } 配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="userBean" class="ioc.collection_injection.list_injection.beans.User"> <property name="hobbyList"> <list> <value>篮球</value> <value>发财</value> <value>泡MM</value> </list> </property> </bean> </beans> 具体应用: public static void main(String[] args) { ApplicationContext ac = new FileSystemXmlApplicationContext( "./src/ioc/collection_injection/list_injection/config/config.xml"); // 取得一个实例 User user = (User) ac.getBean("userBean"); List < String > hobbyList = user.getHobbyList(); for ( String hobby: hobbyList ) { System.out.println( hobby ); } } 4、Map注入 public class User { private Map nameList = new HashMap(); public Map getNameList() { return nameList; } public void setNameList(Map nameList) { this.nameList = nameList; } } 配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="userBean" class="ioc.collection_injection.map_injection.beans.User"> <property name="nameList"> <map> <entry key="Eric"> <value>80</value> </entry> <entry key="Janet"> <value>60</value> </entry> <entry key="Jason"> <value>100</value> </entry> </map> </property> </bean> </beans> 具体应用: public static void main(String[] args) { ApplicationContext ac = new FileSystemXmlApplicationContext( "./src/ioc/collection_injection/map_injection/config/config.xml"); // 取得一个实例 User user = (User) ac.getBean("userBean"); Map map = user.getNameList(); Object [] list = map.keySet().toArray(); for ( Object key: list ) { String name = ( String )key; String age = ( String )map.get( name ); System.out.println( name + " - " + age ); } } 5、Properties注入 public class User { private Properties attributeList = new Properties(); public Properties getAttributeList() { return attributeList; } public void setAttributeList(Properties attributeList) { this.attributeList = attributeList; } } 配置文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="userBean" class="ioc.collection_injection.properties_injection.beans.User"> <property name="attributeList"> <props> <prop key="name">Jason</prop> <prop key="hobby">足球</prop> </props> </property> </bean> </beans> (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |