Spring Cloud Alibaba-Annotation(九)

常见注解比较

  • @Resource & @Autowired
    • 相同点
      • 均可以实现注入bean
      • 写在字段/setter处
    • 不一样点
      • @Autowired是spring的注解,而@Resource不是,可是spring支持
      • @Autowired是byType(根据类型)注入,默认状况下要求依赖必须存在,配置required=false表示依赖可为null,若是要实现byName(根据名称)须要集合@Qualifier
      // 1
         @Autowired
         @Qualifier("userService")
      复制代码
      • @Resource
        • name & type:名称+类型,找不到/不惟一抛出异常
        • name:根据名称,找不到/不惟一抛出异常
        • type:根据类型,找不到/不惟一抛出异常
        • 不指定:byName,找不到则回退为原始类型
      // 等价1
         @Resource("userService")
      复制代码
  • @Repository & @Component & @Service & @Controller
    • 相同点
      • 做用相同:注入组件
    • 不一样点
      • 意义不一样
        • @Component:通用bean
        • @Controller:表现层bean
        @Target({ElementType.TYPE})
        @Retention(RetentionPolicy.RUNTIME)
        @Documented
        @Component
        复制代码
        • @Service:业务层bean
        @Target({ElementType.TYPE})
        @Retention(RetentionPolicy.RUNTIME)
        @Documented
        @Component  
        复制代码
        • @Repository:数据访问层bean
        @Target({ElementType.TYPE})
        @Retention(RetentionPolicy.RUNTIME)
        @Documented
        @Component
        复制代码
相关文章
相关标签/搜索