SpringXML方式配置bean的自动装配autowire

Spring的自动装配,也就是定义bean的时候让spring自动帮你匹配到所需的bean,而不需要我们自己指定了。

例如:

User实体类里面有一个属性role

1
2
3
4
5
6
7
public class User {
     private int id;
     private String username;
     private String password;
     private Role role;
     /*****省略get and set****/
}

在我们的applicationConext.xml文件里,假如有两个role对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<? xml version = "1.0" encoding = "UTF-8" ?>
     xsi:schemaLocation="http://www.springframework.org/schema/beans
 
     < bean id = "role" class = "com.fz.entity.Role" ></ bean >
     < bean id = "role1" class = "com.fz.entity.Role" ></ bean >
     < bean name = "user" class = "com.fz.entity.User" scope = "prototype" >
         < property name = "role" ref = "role" ></ property >
     </ bean >
</ beans >

此时<property name="role" ref="role"></property>找到的就是第一个role对象,但是在bean上配置上了autowire之后,则可以不用写<property name="role" ref="role"></property>这个属性了。则是如下的写法:

1
2
3
4
5
6
7
8
9
10
11
<? xml version = "1.0" encoding = "UTF-8" ?>
     xsi:schemaLocation="http://www.springframework.org/schema/beans
 
     < bean id = "role1" class = "com.fz.entity.Role" ></ bean >
     < bean id = "role2" class = "com.fz.entity.Role" ></ bean >
     < bean name = "user" class = "com.fz.entity.User" scope = "prototype" autowire = "default" >       
     </ bean >
</ beans >


autowire的意思就是spring帮你匹配容器里的bean,而匹配规则有如下几种

11222052_Iqry.png

default:如果在bean上指定了default,则它会去beans标签上去找default-autowire属性

no:不匹配,但是bean必须定义ref元素

byName:根据名字匹配(如果容器里没有该name的bean,则该属性为null)

byType:根据类型匹配(如果同时找多个相同类型的bean,则报错)

constructor:根据构造器匹配(很少使用)


总结:

1、autowire可以写在bean上,也可以写在根元素beans上(写在beans则表示所有的bean都按此规则来自动匹配)

<bean autowire="byName">     <beans autowire="byName">















转载于:https://my.oschina.net/u/1045699/blog/786567

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值