Bean注入的两种方式

Bean注入的方式 (一)一种是在XML中配置,此时分别有属性注入、构造函数注入和工厂方法注入;

                        (二) 另一种则是使用注解的方式注入 @Autowired,@Resource,@Required。

(一)

【实体类】注:在配置xml过程中不同的注入方式需要配置不同的空间,标签比如aop

public class Person {  
 private String name;  
 private String sex;  
 private Date birthday;  
   

 public void Person(String name,String sex,Data birthday)
 {
   this.name = name;
   this.sex = sex;
   this.birthday = birthday;
 }

 public Date getBirthday() {  
  return birthday;  
 }  
 public void setBirthday(Date birthday) {  
  this.birthday = birthday;  
 }  
 public String getName() {  
  return name;  
 }  
 public void setName(String name) {  
  this.name = name;  
 }  
 public String getSex() {  
  return sex;  
 }  
 public void setSex(String sex) {  
  this.sex = sex;  
 }  
   
 public String toString(){  
  return "name: " + name + "/nsex: " + sex + "/nbirthday: " + birthday.toLocaleString();  
 }  

(1)属性注入

属性注入即通过setXxx()方法注入Bean的属性值或依赖对象,由于属性注入方式具有可选择性和灵活性高的优点,因此属性注入是实际应用中最常采用的注入方式。属性注入要求Bean提供一个默认的构造函数,并为需要注入的属性提供对应的Setter方法。Spring先调用Bean的默认构造函数实例化Bean对象,然后通过反射的方式调用Setter方法注入属性值。

【xml】

<bean id="dt" class="java.util.Date"></bean>  
<bean id="person" class="model.Person">  
   <property name="name" value="sunxing007" />  
   <property name="sex" value="M" />  
   <property name="birthday" ref="dt" />  
</bean> 

//ref的意思就是参考到另一个bean.

(2)构造函数注入

 使用构造函数注入的前提是Bean必须提供带参数的构造函数

【xml】注:需要注意的是, 你给出的构造参数顺序要与构造函数一致.因为构造函数可以由多个

<bean id="dt" class="java.util.Date"></bean>  
<bean id="person" class="model.Person">  
    <constructor-arg index="0" value="000002" />  
    <constructor-arg index="1" value="M" />  
    <constructor-arg index="2" ref="dt" />  
</bean> 

(3)工厂方法注入

如果我们为Person 提供一个工厂专门生产Person,一个方法可以是静态/动态的PersonFactory

【工厂方法PersonFactory工厂】

public class PersonFactory {  
 //动态
 public Person createJavaBook(){  
  //一个Date对象
  Date da = new Date();

  Person pon = new Person();  
  pon .setName("001");  
  pon .setSex("M");  
  pon .setBirthday(da);   
  return pon;  
 }  

 //静态 
 public static Person createPerson(){
  //一个Date对象
  Date da = new Date();
  return new Book("name1","M",da);  
 }  

}

【xml】

<bean id="Factory" class="model.factory.PersonFactory"></bean> 
<bean id="myPerson" factory-bean="Factory" factory-method="createJavaPerson"></bean>  

(二)注解的方式注入 @Autowired,@Resource,@Required

  链接《https://my.oschina.net/u/2937897/blog/910739

 

转载于:https://my.oschina.net/u/2937897/blog/910740

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值