JavaSpringBox

74 阅读1分钟
  1. 注解: @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对象成功");
    }
}

注解: @MapperScan

image.png

image.png