Autowired和Resource注解

Spring依赖注入实践
本文介绍了一个使用Spring框架进行依赖注入的实例,展示了如何通过@Component和@Service注解定义bean,并使用@Resource注解实现类之间的依赖注入。

@Component(value="userDao")
public class UserDao {

    public void add() {
        System.out.println("userDao.......");
    }
    
}

 

@Service(value="userService")
public class UserService {
//    @Autowired
//    private UserDao userDao;              //根据类名寻找对应对象
    
    @Resource(name="userDao")         //name值与UserDao类注解中value值对应
    private UserDao userDao;
    
    public void add() {
        System.out.println("userService......");
        userDao.add();
    }
    
}

### @Autowired @Resource 注解区别 在Spring框架中,`@Autowired``@Resource`都是用于依赖注入的注解,但是它们来源于不同的标准并具有各自的特点。 #### 来源差异 - `@Resource` 是由J2EE提供的标准化注解,可以被多个容器识别支持[^1]。 - `@Autowired` 则是Spring特有的注解,专门为了简化Spring应用中的Bean装配过程而设计。 #### 功能对比 - **默认匹配策略** - 当使用`@Resource`时,默认按照名称(bean的名字)来进行查找;如果找不到,则会尝试按类型进行匹配。可以通过指定name属性来明确指出要注入的具体bean实例[@Resource(name="person")]。 - 对于`@Autowired`来说,默认行为是基于类型的自动装配。当存在多个相同类型的bean时,还需要配合`@Qualifier`一起使用以精确指定哪一个bean应该被注入[@Autowired @Qualifier("person")][^3]。 #### 性能考量 虽然有人认为`@Resource`通过名字定位可能会稍微快一点,但实际上这种性能差距非常微小,在实际项目开发过程中几乎不会成为选择的理由。 #### 推荐实践 考虑到未来可能的技术栈迁移以及减少对特定框架(如Spring)的耦合度,建议优先考虑使用更通用的标准注解即`@Resource`。然而,在纯Java EE环境中或者希望保持与Spring生态系统的紧密联系的情况下,也可以继续沿用`@Autowired`加上必要的限定符配置[^4]。 ```java // 使用@Resource的方式 public class ExampleService { @Resource(name = "specificDataSource") private DataSource dataSource; } // 使用@Autowired加@Qualifier方式 @Service public class AnotherExampleService { @Autowired @Qualifier("specificDataSource") private DataSource dataSource; } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值