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>
具体应用: 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注入 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 );
}
} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
