Spring依赖注入的方式

Spring依赖注入的方式
一、 在Spring中配置一个bean时,如果需要给该bean提供一些初始的值,则需要通过依赖注入方式实现。 依赖注入就是通过Spring将bean所需要的一些参数传递给bean实例对象的过程。
二、 spring的依赖注入有3种方式:
使用属性的setter方法注入 ,这是最常用的方式;
使用构造器注入;
使用Filed注入(用于注解方式)
三、 属性注入
1、 属性注入是通过setXxx()方法注入Bean的属性值或依赖对象。
2、 属性注入方式的优点:
具有可选择性
灵活性高
3、 属性注入是实际应用中常采用的注入方式。
4、 属性注入在XML配置的方式:
四、 属性注入案例步骤
1、 编写 com.gx.model.Car (用于依赖对象的演示), com.gx.model.PersonSetter :
2、 在applicationContext.xml中配置:
3、 编写测试方法:
4、 注意:属性注入要求Bean提供一个无参的构造函数,并为需要注入的属性提供对应的Setter方法。 Spring先调用Bean的无参构造函数实例化Bean对象,然后通过反射的方式调用Setter方法注入属性值。
五、 构造函数注入
1、 构造函数注入是除属性注入之外的另一种常用的注入方式
2、 构造函数注入的方法:
3、 在类中,可以不用为属性设置setter方法,但是必须要生成该类带参数的构造方法
4、 在配置文件中配置该类的bean,并配置构造器,在配置构造器中用到 节点。
5、 constructor-arg标签属性:
6、 name属性:通过参数名找到参数列表中对应参数;
7、 index属性:通过参数在参数列表中的索引找到参数列表中对应参数,index从0开始;
8、 type属性:通过参数数据类型找到参数列表中对应参数;
9、 value属性:设置参数列表参数对应的值,用于设定基本数据类型和String类型的数据;
10、 ref属性:如果参数值为非基本数据类型,则可通过ref为参数注入值,其值为另一个bean标签id或name 属性的属性值;
六、 构造器注入案列步骤
1、 编写 com.gx.model.PersonConstructor 类:
2、 在applicationContext.xml中配置:
3、 编写测试方法:
4、 注意: 对于由于参数数目相同(或参数名相同)而类型不同所引起的潜在配置歧义问题,Spring容器可 以正确启动且不会给出报错信息,它将随机采用一个匹配的构造函数实例化Bean,而被选择的构造函数 可能并不是用户所希望的。因此,必须特别谨慎,以避免潜在的错误。
七、 使用Filed注入(用于注解方式)
1、 编写IUserDao接口和对应的实现类UserDaoImpl:
2、 配置applicationContext.xml
3、 在 beans 属性内部最上部 添加配置:
4、 注意:只有配置这部分的行才可以引入注解的命名空间,否则报错。以上的配置隐式的注册了多个对注 释进行解析的处理器:AutowiredAnnotationBeanPostProcessor、 CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor等。 如果配置了 context:component-scan 后, context:annotation-config 就可以省略。这是因为在搞 版本的Spring中, context:component-scan 配置项其实也包含了自动注入上述processor的功能
5、 编写测试方法:
八、 使用Filed注入(全注解方式)测试
1、 在2.4.3中UserDaoImpl的基础上添加@Repository注解
2、 在2.4.3的UserServiceImpl上添加@Service的注解:
3、 在src下添加新的applicationContext_two.xml配置文件(为了避免和以前的冲突):
4、 编写测试类 TestFiledAnnotation:
九、 Spring依赖注入的其他方式(扩展)
1、 p名称空间注入
2、 使用之前定义的 com.gx.model.PersonSetter
3、 在Spring的配置文件applicationContext.xml上添加p名称空间
4、 在applicationContext.xml里配置:
5、 编写测试方法:
十、 复杂类型的注入
1、 编写测试类com.gx.model.CollectionBean
2、 在applicationContext.xml里配置:
3、 编写测试方法:
十一、 依赖注入时Spring EL的使用
1、 使用之前定义的 com.gx.model.PersonSetter
2、 在applicationContext.xml里配置:
3、

4、 编写测试方法: 5、 /** * 测试依赖注入时 Spring EL的使用 */ @Test public void testSpringEL() { PersonSetter personSetterSpringEL = (PersonSetter) context.getBean("personSetterSpringEL"); System.out.println(personSetterSpringEL);}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值