Spring4类属性自动装配和方法注入

1.自动装配(beans最外层头部标签里添加default-autowire =”xxx”)

xxx的取值
①byName

一个beanA(Person)中有属性是另外一个类对象(beanB如User),
依赖注入后,beanA类中定义的对象属性值会根据beanB注入命名比如为user来匹配对应的类对象User user。

public class Person {
private String name;
private User user;//此处的user在User对象注入bean时候命名id匹配
}

②byType(如对象的类型User类)
如果在beans.xml中注入了同个类但是不同bean的id,会报错。
因为此时出现了同个类型的两个bean。

public class Person {
private String name;
private User user;//此处的User对象就是byType的根据
}

③constructor
在Person中有构造方法,传入参数为User user,则如果beans.xml中有User类型的bean,会自动将其匹配到Person的构造方法中,赋值给user。

public class Person {
private String name;
private User user;

public Person(User user) { //此处的User类就是constructor的
//根据,会在bean中查找该类型的bean赋值,注意是根据类型,和id无关
super();
this.user = user;
}

}

2.方法注入

由于每个bean默认是单例,如果需要每次获取bean时候是不同的实例,则在bean的头部里面添加scope=”prototype”、

<bean id = "user" class = ''xx.xx.entity.User" scope = "prototype" />

如果其他类中有该属性

<bean id = "person" class = ''xx.xx.entity.Person"  >
     <property name = "name" value = "xxx" />
     <property name = "user" ref = "user" />
</bean>

如果是以上的配置则会在Person中只有一个User对象而不是多个
要实现多个User对象
将Person写成抽象类 并且getUser的方法也是抽象方法
配置文件变为

<bean id = "person" class = ''xx.xx.entity.Person"  >
     <property name = "name" value = "xxx" />
     <lookup-method name ="getUser" bean = "user" />
</bean>

就可以实现多个User对象实例。

3.方法替换

即如果Person中的getUser方法需要被其他类的方法替换(其实是对其属性user的赋值),获取到另外的值。比如是Person2类的方法,建立

public class Person2 implements MethodReplacer {
//实现方法reimplement  
//返回的是user类
}

那么配置文件中

<bean id = "person" class = "xx.xx.entity.Person"  >
     <property name = "name" value = "xxx" />
     <replaced-method name ="getUser" replacer= "person2" />
</bean>
<bean id = "person2" class = "xx.xx.entity.Person2"  />
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值