SpringBoot 常用注解总结

x33g5p2x  于5个月前 转载在 Spring  
字(2.2k)|赞(0)|评价(0)|浏览(227)

核心注解

1. @SpringBootApplication

主要用于开启自动配置,它也是一个组合注解,主要组合了 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan

2. @EnableAutoConfiguration

该注解组合了 @Import 注解,@Import 注解导入了 EnableAutoCofigurationImportSelector 类,它使用 SpringFactoriesLoader.loaderFactoryNames 方法把 spring-boot-autoconfigure.jar/META-INF/spring.factories 中的每一个 xxxAutoConfiguration 文件都加载到 IOC 容器,实现自动配置

3. @SpringBootConfiguration

@SpringBootConfiguration 注解继承自 @Configuration,二者功能基本一致,标注当前类是配置类

4. @ComponentScan

自动扫描并加载符合条件的组件,如 @Component、@Controller、@Service、@Repository 等或者 bean 定义,最终将这些 Bean 加载到 IOC 容器

Bean 相关

1. @Controller

应用于控制层,DispatcherServlet 会自动扫描此注解的类,将 web 请求映射到注解 @RequestMapping 的方法上

2. @Service

应用于业务逻辑层

3. @Reponsitory

应用于数据访问层(dao)

4. @Component

表示带有该注解的类是一个组件,可被 SpringBoot 扫描并注入 IOC 容器

5. @Configuration

表示带有该注解的类是一个配置类,通常与 @Bean 结合使用,@Configuration 继承了 @Component,因此也能被 SpringBoot 扫描并处理

6. @Bean

@Configuration 注解标识的类,使用 @Bean 注解一个可返回 Bean 的方法,Spring 会将这个 Bean 对象放入 IOC 容器

依赖注入相关

1. @Autowired

可作用在属性、方法和构造器,实现 Bean 的自动注入,默认根据类型注入

2. @Resource

作用同 @Autowired,默认通过名称注入

3. @Qualifier

如果容器中有多个相同类型的 bean,仅仅靠 @Autowired 不足以让 Spring 知道到底要注入哪个 bean,使用 @Qualifier 并指定名称可以帮助确认注入哪个 bean

4. @Value

用于注入基本类型和 String 类型

WEB 相关

1. @RequestMapping

映射 web 请求,可以注解在类和方法上,@GetMapping 和 @PostMapping 是 @RequestMapping 的两种特例,一个处理 get 请求,一个处理 post 请求

2. @RequestParam

获取请求参数,示例如下:

// http://localhost:8080/api/test1?name=liu
@RequestMapping("/test1")
@ResponseBody
public String test1(@RequestParam("name")String name1){
    System.out.println(name1);
    return name1;
}
3. @PathVariable

获取路径参数,示例如下:

@RequestMapping(value = "user/{username}")
public String test(@PathVariable(value="username") String username) {
	return "user"+username;
}
4. @RequestBody

通过 HttpMessageConverter 读取 Request Body 并反序列化为 Object,比如直接以 String 接收前端传过来的 json 数据

5. @ResponseBody

将返回值放在 response 体内,返回的是数据而不是页面,在异步请求返回 json 数据时使用

AOP 相关

1. @Aspect

声明一个切面

2. @PointCut

声明切点,即定义拦截规则,确定有哪些方法会被切入

3. @Before

前置通知,在原方法前执行

4. @After

后置通知,在原方法后执行

5. @Around

环绕通知,原方法执行前执行一次,原方法执行后再执行一次

其他注解

1. @Transactional

声明事务

2. @ControllerAdvice

作用在类上,继承了 @Component,因此也能被 SpringBoot 扫描并处理,提供对 Controller 类的拦截功能,配合 @ExceptionHandler、@InitBinder、@ModelAttribute 等注解可实现全局异常处理,全局参数绑定,请求参数预处理等功能

3. @Async

作用在方法,表示这是一个异步方法

4. @EnableAsync

注解在配置类,开启异步任务支持

5. @Scheduled

注解在方法,声明该方法是计划任务

6. @EnableScheduling

注解在配置类,开启对计划任务的支持

相关文章