【Spring】【DI】【Bean对象注入属性的三个方式】【Autowired,Qualifier,Resource注解】

Bean的属性注入的三个方式

向dao类注入sessionFactory属性

1.使用<property>

可以注入String,list等+bean对象

    <bean id="sessionFactory" class="XXX.XXX.HibernateTransactionManager" />

    <bean id="employeeDAO" class="dao.impl.EmployeeDAOImpl" >
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
2.使用注解@Autowired

只可以注入Spring中的bean对象

    <bean id="sessionFactory" class="XXX.XXX.HibernateTransactionManager" />

    <bean id="employeeDAO" class="dao.impl.EmployeeDAOImpl" />
public class EmployeeDAOImpl{
    @Autowired
    private SessionFactory sessionFactory;
}
3.parent属性+抽象bean方式

适用于,多个bean对象要注入相同的属性,为这些属性集中声明一个抽象bean
可以注入String,list等+bean对象
bean对象 继承于 抽象bean

  • 抽象bean:abstract=”true”,且没有class属性
  • bean对象:parent=”抽象bean”
<bean id="baseDAO" abstract="true">
    <property name="XXX" ref="XXX"/>
    <property name="XXX" value="XXX"/>
    ``````
</bean> 
    <bean id="employeeDAO" class="third.EmployeeImplDAO" parent="baseDAO"/> 

@Autowired注解

  • 声明使用注解(省略context的命名空间)
    <context:annotation-config/>
    在启动Spring容器时候,会解析bean的class类中是否有Autowired注解,若有,根据该字段的类型来注入属性.
  • 使用位置
    在bean类的字段或者setter方法上
@Autowired
private SessionFactory sessionFactory;

@Autowired
public void setSessionFactory(SessionFactory sessionFactory){
    this.sessionFactory=sessionFactory;
}
  • requred属性
    true:默认值,使用注解,容器中又没有对应的bean,就报错
    false:当Spring容器中有该字段对应的bean对象,就取,没有就不取(不会报错).
@Autowired(requred=false)
private SessionFactory sessionFactory;
  • @Qualifier(“id值”)
    需要配合@Autowired使用,
    作用:当bean容器的声明了两个SessionFactory类的bean对象时候.其id为s1 ,s2.只用@Autowired是无法准确取bean对象,需要配合@Qualifier(“id值”)寻找.
 @Autowired     //声明去容器取值
 @Qualifier("s1")  //声明按id方式取值
private SessionFactory sessionFactory;
@Autowired与@Resource的区别

@Autowired:是Sping框架的注解,可以取Spring容器中隐藏的<bean>对象
@Resource(name=”id值”):是j2ee规范,作用与Autowired相同,但是不能取Spring隐藏的<bean>对象.

隐藏的<bean>对象:我们写的Spring的配置文件中,并没有配置ApplictionContext的<bean>,但是取可以通过@Autowired取其bean对象,是因为Spring框架隐藏了.

@Autowired  //成功取值
private ApplictionContext ctx;

@Resource  //失败
private ApplictionContext ctx;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值