常见注解总结

  • 创建对象的:
  • @Controller:放在类的上面,创建控制器对象,注入到容器中
  • @RestController:放在类的方面,创建控制器对象,注入到容器中
  • 作用:复合注解:是@Controller + @ResponseBody,使用这个注解的类,里面控制器方法的返回值是数据,不是视图。
  • @Service:放在业务层的实现类上面,创建service对象,注入到容器
  • @Repository:放在dao层的实现类上面,创建dao对象,注入到容器,这个注解使用的少,是因为现在使用的MyBatis框架,dao对象是通过MyBatis通过代理对象生成的,不需要使用@Repository了
  • @Component:放在类的上面,创建此类的对象,注入到容器,如果既不是控制层也不是业务层也不是持久层,需要创建对象,用这个注解
  • 赋值的:
  • @Value:简单类型的赋值,例如在属性的上面使用@Value
@Value("张三")
private String name;
  • 还可以使用@Value获取配置文件中的数据(properties或yml)
@Value("${server.port}")
private Integer port;
  • @Autowired:引用类型赋值自动注入,支持byName,byType,默认是byType
  • 既可以放在属性上面,也可以放在构造方法上面,推荐放在构造方法上面
  • @Qualifier:给引用类型赋值,使用byName方式,和@Autowired一起使用
  • @Autowired + @Qualifier 相当于 @Resource
  • @Resource:来自JDK中的定义,javax.annotation,实现引用类型的自动注入,支持byName和byType,默认是byName,如果byName失败在使用byType,推荐在属性上面使用。
  • 其他:
  • @Configuration:放在类的上面,表示这是一个配置类,相当于xml配置文件
  • @Bean:放在方法的上面,把方法的返回值对象,注入到Spring容器中
  • @ImportResource:加载其他的xml配置文件,把文件中的对象注入到Spring容器中
  • @PropertySource:读取其他的properties属性配置文件
  • @ComponentScan:组件扫描器,指定包名,扫描注解的
  • @ResponseBody:放在方法的上面,表示方法的返回值是数据,不是视图
  • @RequestBody:把请求体中的数据读取出来,转为Java对象
  • @ControllerAdvice:控制器增强,放在类的上面,表示此类提供了方法,可以对Controller增强功能,一般用于异常处理,和@ExceptionHandler一起使用
  • @ExceptionHandler:处理异常的,放在方法上面
  • @Transcational:处理事务,放在service实现类的public方法上面,表示此方法有事务
  • SpringBoot中的注解:
  • @SpringBootApplication:放在启动类上面,包含了@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan
  • MyBatis相关注解:
  • @Mapper:放在类的上面,让MyBatis找到接口,创建他的代理对象
  • @MapperScan:放在主类的上面,指定扫描的包,把这个包的所有接口都创建代理对象注入到容器
  • @Param:放到dao接口的方法的形参前面,作为命名参数使用
  • Dubbo注解:
  • @DubboService:在提供者端使用,暴露服务的,放在接口的实现类上面使用
  • @DubboReference:在消费者端使用,引用远程服务,放在属性上面使用
  • @EnableDubbo:放在主类上面,表示当前引用启动Dubbo功能