导语:
相信现在很多新项目都会首选springboot作为基础进行开发,主要是它摒弃了spring以往项目中大量繁琐的配置,遵循约定大于配置的原则,通过自身默认配置,极大的降低了项目搭建的复杂度。
springboot提供了大量的注解,使得代码更加简洁高效,就让我们来简单看一下springboot提供的相关注解(其实很一部分也是继承于spring的)
1、@SpringBootApplication
启动类配置:
通常直接使用@SpringBootApplication,该注解相当于以下三个注解,
@SpringBootConfiguration:标注当前类是配置类
@EnableAutoConfiguration:是 自动配置的注解 ,这个注解会根据我们添加的组件jar来完成一些默认配置
@ComponentScan:扫描包配置
2、@ServletComponentScan
@ServletComponentScan注解后,Servlet、Filter、Listener可以直接通过@WebServlet、@WebFilter、@WebListener注解自动注册,无需其他代码。相关资料3、@Component
spring中使用最多的注解,可以说很多注解都是基于此注解,包括我们常见的@Service、@Controller、@Repository。配合ComponentScan使用,被@Component标注的类会被spring IOC容器管理
4、@Transactional
通过这个注解可以声明事务,可以添加在类上或者方法上。
在spring boot中 不用再单独配置事务管理,一般情况是我们会在servcie层添加了事务注解,即可开启事务。要注意的是,事务的开启只能在public 方法上。并且主要事务切面的回滚条件。正常我们配置rollbackfor exception时 ,如果在方法里捕获了异常就会导致事务切面配置的失效。
【注:需要在启动类上添加@EnableTransactionManagement开启事务支持】
5、@ControllerAdvice
@ControllerAdvice 和 @ExceptionHandler 配合完成统一异常拦截处理。
注:需要返回json格式需要使用@RestControllerAdvice,该注解相当于 @ControllerAdvice +@ResponseBody
6、@Autowired
使用过spring的应该对这个注解都不会陌生,spring的按类型注入,值得注意的是多个相同类型的实例存在时,需要配合 @Qualifier指定其名称,否则会启动报错,相当于java的@Resource(name=“xxx”)
7、@MapperScan
通常使用使用@MapperScan指定要扫描的Mapper类的包的路径,而不需要使用@Mapper每个类去指定
8、@PostMapping @GetMappin
@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写
@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写
9、@RestController和@Controller
@RestController相当于@Controller+@ResponseBody,使用@RestController直接返回return的数据(如果是对象会默认作序列化处理,即json格式返回)
10、@Async
@Async注解的方法为异步方法,使用此注解需要在启动类上使用@EnableAsync,表示开启异步操作的支持。注:本人猜想在同一个class中直接调用标注@Async的类应该不能生效,相当于类方法的直接调用,所以在使用时应该把@Async标注的方法提出来写到其他Component中,在需要调用异步方法的类中调用
11、@Scheduled
执行定时任务注解,如:@Scheduled(cron = "0/5 * * * * ? ")
需要在启动类上添加@EnableScheduling注解,表示开启定义任务的支持
12、@ImportResource导入xml配置文件
13、@Import导入额外的配置信息
14、@RequestParam 获取请求参数的值
15、@PathVaribale 获取url中的数据