Spring注解@Resource和@Autowired的区别

 

@Resource和@Autowired都是用来做bean的依赖注入的,两者都可以写在字段和setter方法上。

java为我们提供了 javax.annotation.Resource这个注解。

spring框架提供了org.springframework.beans.factory.annotation.Autowired。

 

@Autowire 默认按照类型装配,默认情况下它要求依赖对象必须存在如果允许为null,可以设置它required属性为false,如果我们想使用按照名称装配,可 以结合@Qualifier注解一起使用

public class UserServiceImpl {
    // 下面两种@Autowired选用一种即可

    // 1.用于字段上
    @Autowired
    private UserDao userDao; 
    
    // 2.用于setter方法上
    @Autowired
    public void setUserDao(UserDao userDao) { 
        this.userDao = userDao;
    }
}


public class UserServiceImpl {
    @Autowired
    @Qualifier("userDao")
    private UserDao userDao; 
}

 

@Resource默认按照名称自动注入,有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略。

public class USerServiceImpl {

    // 下面两种@Resource只要使用一种即可
    // 1.用于字段上
    @Resource(name="userDao")
    //@Resource(type=UserDao.class)
    private UserDao userDao; 

    // 2.用于属性的setter方法上
    @Resource(name="userDao")
    public void setUserDao(UserDao userDao) { 
        this.userDao = userDao;
    }
}

两种方式在实际开发中并没有多大的区别,喜欢用那种都可以~

 

 

转载于:https://www.cnblogs.com/cralor/p/9177255.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值