spring有多种依赖注入的形式,下面仅介绍spring通过xml进行IOC配置的方式:
1, Set注入
需要配置的bean.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <description>Spring quick start</description> <bean id="student" class="org.heinrich.action.Student"> <property name="user" ref="user"> </property> </bean> <bean id="user" class="org.heinrich.action.User"></bean> </beans>
两个实体类 Student , User
package org.heinrich.action; public class User { public void read(){ System.out.println("I am reading Book of Thinking Java"); } } package org.heinrich.action; public class Student { private User user; public void testDi(){ user.read(); } public void setUser(User user) { this.user = user; } }
测试SpringTest类
package org.heinrich.action; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringTest { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml"); Student student = (Student)ctx.getBean("student"); student.testDi(); } }
显示的结果
I am reading Book of Thinking Java
其中bean.xml还可以配置成
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <description>Spring quick start</description> <bean id="student" class="org.heinrich.action.Student"> <property name="user"> 重点: <bean id="user" class="org.heinrich.action.User"></bean> </property> </bean> </beans>
2, 构造器注入
主要代码Student类需要给一个构造方法,参数是需要注入的类型
package org.heinrich.action; public class Student { private User user; public Student(User user) { super(); this.user = user; } public void testDi() { user.read(); } }
然后配置bean.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <description>Spring quick start</description> <bean id="student" class="org.heinrich.action.Student"> <constructor-arg ref="user"/> </bean> <bean id="user" class="org.heinrich.action.User"></bean> </beans>
bean.xml还有另外一个配置方式
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <description>Spring quick start</description> <bean id="student" class="org.heinrich.action.Student"> <constructor-arg> <bean id="user" class="org.heinrich.action.User"></bean> </constructor-arg> </bean> </beans>
测试结果
I am reading Book of Thinking Java