常见注解总结
-
创建对象的:
-
@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功能
-