Spring依赖注入
来源:互联网 发布:淘宝网机票查询 编辑:程序博客网 时间:2024/05/16 12:33
依赖注入或者说是控制反转,说白了就是使用了配置文件,这种思想的最大的好处就是增加了模块的重用性灵活性。下面介绍几种依赖注入的方式:
Spring提供的Setter注入是最常用的一种Bean注入法,通过Setter注入后,直接将Bean的属性值输出在页面中
1.当前Bean对象要注入到哪个对象中,就需要在哪个对象中为当前这个对象设置私有属性,并设置属性的getter返回器和setter设置器。如:User对象注入到TestUtil对象中,那么就需要在TestUtil类中设置User对象属性,并设置getter()和setter()方法,TtstUtil类的代码如下:
public class TestUtil{private User user;public User getUser(){return user;}public void setUser(User user){this.user=user;}}
2.在Spring的xml配置文件中,通过<bean>标签对Bean进行依赖注入配置。<bean>标签的属性主要有两个,id属性用于配置Bean的唯一标识,Bean在注入的时需要根据这个标识查找Bean对象;class属性用于指定完整的Bean类。代码如下:
<!--为User对象属性赋值 - -><bean id="user" class="com.lh.entity.User"/><!-- 配置TestUtil,注入User --><bean id="testUtil" class="com.lh.util.TestUtil"><property name="user" ref="user"/></bean>
二、应用构造器注入法
类在被实例化的时候,其构造方法将被调用并且只能调用一次。因此构造器常被用于类的初始化操作。
1.在TestUtil类中创建一个构造方法,并传递一个User参数
public class TestUtil{private User user;Public TestUtil(User user){ //构造方法This.user =user;}Public boolean getUserInfo(){If(user != null) {Return true;} else{Return false;}}}
2.Spring中的<constructor-arg>是<bean>元素的子元素,通过该元素可以实现为当前业务对象注入其所依赖的对象。xml中的配置如下:
<!--为User对象属性赋值 - -><bean id="user" class="com.lh.entity.User"/><!-- 配置TestUtil,注入User --><bean id="testUtil" class="com.lh.util.TestUtil"><constructor-arg ><ref bean="user"></constructor-arg></bean>
三、应用@Autowired注解实现Bean的注入
可以利用Spring提供的@Autowired注解实现Bean的注入。@Autowired注解实现依赖注入时,可以标注于以下4种不同的情况。
(1)可以在类的构造方法上标注@Autowired注解,实现Bean的注入。如:
Public class TestUtil{private User user; //声明要注入的对象@AutowiredPublic TestUtil(User user){ //构造方法this.user = user;}}
(2)将@Autowired注解标注于属性,实现Bean的注入。在标注属性时,这个属性需要提供getter和setter方法,如:
Public class TestUtil {@Autowiredprivate User user;public User getUser(){Return user;} Public void setUser(User user) {this.user =user;}}
(3)将@Autowired注解标注于setter方法之上,实现Bean的注入,如:
Public class TestUtil {private User user;public User getUser(){Return user;} @AutowiredPublic void setUser(User user) {this.user =user;}}
(4)将@Autowired注解标注于任意方法之上(只要改方法定义了需要被注入的参数即可实现Bean的注入)
Public class TestUtil {private User user;@AutowiredPublic void setUser(User user) {this.user =user;}}
@Resource与@Autowired注解类似,除了可以直接在属性域上标注@Resource,还可以在构造方法或者普通方法定义标注@Resource。
1.将TestUtil类中将@Autowired注解修改为@Resource注解,如
Public class TestUtil {@Resource(name="book") //指定要注入的对象,book为Spring配置文件中定义的Bean的idPrivate Book book ;Public Book book;Public Book getBook() {Return book;}Public void setBook(Book book) {this.book =book;}}
2.然后在Spring的配置文件中队Bean进行配置。针对@Resource注解,在配置文件中还需要配置
CommonAnnotationBeanPostProcessor,只有这样使用的@Resource注解发挥作用。如:
<beans><bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/><!-- 配置User对象 --><bean id="book" class="com.lh.util.Book"/><!-- 配置TestUtil --><bean id="testUtil" class="com.lh.util.TestUtil"/></beans>
不管是使用@Resource或@Autowired注解,都需要添加相应的BeanPostProcessor容器,但如果使用
<context:annotation-config>的话,就不必配置BeanPostProcessor了,因为<context:annotation-config>已经把
AutowiredAnnotationBeanPostProcess和CommonAnnotationBeanPostProcessor注册到容器了。
小结:
Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。我们可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
0 0
- Spring依赖注入:注解注入
- spring 的依赖注入
- Spring依赖注入实践经验
- Spring的依赖注入
- Spring依赖注入
- spring(依赖注入-DI)
- spring依赖注入
- spring依赖注入
- 白话spring依赖注入
- Spring依赖注入方式
- Spring的依赖注入
- Spring依赖注入
- Spring依赖注入方式
- Spring 依赖注入
- spring依赖注入方式
- spring的依赖注入
- Spring依赖注入方式
- Spring依赖注入方式:
- 三色旗问题
- 使用接插件需要注意的问题
- 几种常见的浏览器以及内核
- vim 插件
- HDU - 5050 Divided Land
- Spring依赖注入
- DSP6000的上电及供电
- Eclipse相关使用方法
- iOS中基于Socket的 C/S 结构网络通信(上)
- 数据结构——邻接矩阵的最小生成树Prim算法
- HDU - 5047 Sawtooth
- DSP6000的几个简单优化技巧
- java反射与动态代理
- php通过MongoClient连接mongodb时报Cannot assign requested address异常的查询解决经过