`@Autowired`和`@Resource`都是Spring框架提供的依赖注入注解,用于自动装配Bean。它们有一些相似之处,但也有一些区别。
1. **来源**:
- `@Autowired`是Spring框架自带的注解。
- `@Resource`是JSR-250(Java规范请求)定义的注解,属于Java EE规范的一部分。
2. **自动装配方式**:
- `@Autowired`默认按照类型(byType)进行自动装配。如果需要按照名称(byName)进行装配,可以结合`@Qualifier`注解使用。
- `@Resource`默认按照名称(byName)进行自动装配。如果需要按照类型(byType)进行装配,可以设置`name`属性为空字符串。
3. **属性**:
- `@Autowired`可以设置`required`属性,默认为`true`,表示如果找不到匹配的Bean,会抛出异常。如果设置为`false`,则不会抛出异常,而是注入`null`。
- `@Resource`可以设置`name`属性,指定要注入的Bean的名称。也可以设置`type`属性,指定要注入的Bean的类型。
4. **示例**:
```java
@Service
public class UserService {
@Autowired
private UserDao userDao;
@Resource(name = "userDao")
private UserDao userDao2;
}
```
总结:
- `@Autowired`和`@Resource`都可以用于自动装配Bean,但它们的默认装配方式和属性设置有所不同。
- 在实际开发中,可以根据具体需求和项目规范选择使用哪个注解。