SpringBoot相似注解说明

注解说明

@Autowired和@Resource区别

  • @Autowired@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。
  • @Autowired默认按类型装配(此注解属于spring),默认情况下要求依赖对象必须存在,如果要允许null值,可以设置它的属性required为false,比如 @Autowired(required
    = false)
    ,也可以使用 @Qualifier来指定按名称注入;
@Autowired () 
@Qualifier ( "baseDao" )
private BaseService baseService;
  • @Resource(这个注解属于J2EE的),默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
@Resource (name= "baseDao")
private BaseService baseService;

**

@Repository @Component @Mapper区别

**

  • @Mapper是Mybatis的注解,与Spring没有关系;@Repository是Spring的注解,用于声明一个Bean
  • Spring中,Mybatis需要找到对应的mapper,在编译时生成动态代理类,实现数据库CRUD,可以在Mapper接口上加上 @Mapper 注解
@Mapper
public interface UserMapper {
    //具体方法
}
  • 使用 @Mapper注解,为其他变量注入依赖时,IDEA会有红色波浪线,但是运行不会有错误。这时需要在对应接口添加声明,显示标注Bean,不然IDEA认为运行时找不到实例。
@Repository
@Mapper
public interface UserMapper {
    //具体方法
}

使用 @Component@Repository效果是一样的,类似的 @Controller@Service也是同样的道理

posted @ 2021-08-18 17:12  TellMeYourStory  阅读(116)  评论(0)    收藏  举报