-
注解: @Autowired
/**
* 1. 表示某个属性是否需要依赖注入,可以写在属性或方法上
* 2. 注解中的 required 属性默认为true
* 3. 如果没有对象可以注入给属性则抛出异常
* */
@Autowried(require=true)
private String name;
注解: @Resource
@Service
public class DepartmentService {
/**
* 关于@Resource
* 1. 如果 @Resource 设置了name属性, 则按照name设置 BeanId 在IOC容器中将bean注入
* 2. 若未设置name,
* (1) 以属性名的小驼峰作为beanId, name在IOC容器中尝试匹配, 成功匹配则注入
* (2) 未成功匹配, 则最后类型进行匹配, 同@Autowired一样, 需要配合@Primary解决类型冲突
* 建议:
* 在使用@Resource对象时, 设置name并确保属性名 与 bean名称一致
* */
// 此处若未设置bean name属性, 那么beanId 就为 udao
@Resource(name = "userDao")
private IUserDao udao;
public void joinDepartment(){
System.out.println(udao);
}
}
@Autowired与@Resource的区别
注解 @Repository
//UserDao 用于用户数据的增删改查
/**
* 组件类型注解默认beanId为类名的小驼峰命名 (beanId => userDao)
* 也支持手动设置 @Repository("udao") , 此时的beanId 就为 udao了
* */
@Repository
//@Primary
public class UserDao implements IUserDao{
private String name;
public UserDao() {
System.out.println("自动创建UserDao对象成功");
}
}