Spring的两种常见的注入
2016-01-08 00:00
549 查看
摘要: 平常的java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是“控制反转”,通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员,而控制反转是指new实例工作不由我们程序员来做而是交给spring容器来做。
spring有多种依赖注入的形式,下面仅介绍spring通过xml进行IOC配置的方式:
1, Set注入
需要配置的bean.xml文件
两个实体类 Student , User
测试SpringTest类
显示的结果
其中bean.xml还可以配置成
2, 构造器注入
主要代码Student类需要给一个构造方法,参数是需要注入的类型
然后配置bean.xml
bean.xml还有另外一个配置方式
测试结果
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
相关文章推荐
- Spring中的集合的注入方式
- java设计模式——单例模式
- Head First Java 阅读笔记
- java文件cmd窗口编译后,运行class文件时报找不到类的错误。
- java文件cmd窗口编译后,运行class文件时报找不到类的错误。
- JAVA生成持久化流水号
- Spring框架工作原理及其优缺点详解
- JAVA CAS原理深度分析
- [java] java 线程join方法详解
- springmvc 声明响应内容的格式和编码
- Java简单爬虫系列(4)--- 正则表达式获取百度LOGO
- springmvc 多文件上传接收方式
- JAVA正则表达式语法大全
- java多线程简易爬虫
- HeadFirst Java
- Java Day9
- This application requires Java Runtime Environment
- LeetCode – Two Sum (Java)
- Spring 4 MVC入门实例
- [转]java构造方法的访问修饰符