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种注入方式:
1.构造器注入
要求:(1)bean必须提供附带属性的构造方法
(2)配置文件中构造方法标签名constructor-arg ,属性名index="0",0代表构造方法中的第一个参数,例如:
<constructor-arg index="0"> <value>Janet</value> </constructor-arg>
2.setter方法注入
要求:(1)bean必须提供无参构造方法
(2)要赋值的属性必须提供setter方法
(3)配置文件配置方式,如:
<property name="password"> <value>12345678</value> </property>
3.特殊注入
要求:(1)如果bean中有List,Map,Set,Properties属性,配置文件中赋值方式分别如下:
<1>List和数组
<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、构造器注入
Bean:
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方法注入
(注意,使用setter方式依赖注入,bean必须提供系统默认无参构造器)
Bean:
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注入
Bean:
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注入
Bean:
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注入
Bean:
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>
具体应用:
public static void main(String[] args) { ApplicationContext ac = new FileSystemXmlApplicationContext( "./src/ioc/collection_injection/properties_injection/config/config.xml"); // 取得一个实例 User user = (User) ac.getBean("userBean"); Properties p = user.getAttributeList(); System.out.println( p.get( "name" ) + " - " + p.getProperty( "hobby" ) ); }
6、Set注入
Bean:
public class User { private Set nameList = new HashSet(); public Set getNameList() { return nameList; } public void setNameList(Set 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.set_injection.beans.User"> <property name="nameList"> <set> <value>Eric</value> <value>Janet</value> <value>Coco</value> </set> </property> </bean> </beans>
具体应用:
public static void main(String[] args) { ApplicationContext ac = new FileSystemXmlApplicationContext( "./src/ioc/collection_injection/set_injection/config/config.xml"); // 取得一个实例 User user = (User) ac.getBean("userBean"); Set < String > nameList = user.getNameList(); for ( String name: nameList ) { System.out.println( name ); } }原文链接:https://www.f2er.com/javaschema/286911.html