likes
comments
collection
share

超全spring、spring boot 注解备忘录(37个常用注解使用说明)注解 作用 @SpringBootAppl

作者站长头像
站长
· 阅读数 30

这里是小奏,觉得文章不错可以关注公众号小奏技术

注解作用
@SpringBootApplication标记Spring应用程序的主类。组合@Configuration@EnableAutoConfiguration@ComponentScan。这是您的应用程序开始的地方
@Component将类标记为Spring组件,使其成为托管bean
@Service服务层类的特殊类型@Component,通常包含业务逻辑
@Repository用于数据仓库类的特殊类型的 @Component。启用异常转换
@Controller用于处理 Web 请求的 Spring MVC 控制器的特殊类型 @Component。
@RestController结合了 @Controller 和 @ResponseBody。处理 Web 请求并直接返回 JSON/XML 响应
@Autowired自动将依赖项注入到字段、setter 方法或构造函数中
@Value将属性文件中的值插入字段、setter方法或构造函数参数
@Configuration指示一个类声明一个或多个@Bean方法,并且可以被Spring容器处理以生成bean定义和服务请求
@Bean声明一个方法,该方法返回Spring容器管理的Spring bean
@EnableAutoConfiguration根据类路径中存在的依赖项自动配置Spring应用程序
@ComponentScan配置用于@Configuration类的组件扫描指令。指定要扫描带注释组件的基包。
@RequestMapping将Web请求映射到特定的处理程序类或处理程序方法。
@GetMapping为@RequestMapping(method = RequestMethod.GET)添加标签。处理GET请求。
@PostMapping为@RequestMapping(method = RequestMethod.POST)添加标签。处理POST请求。
@PutMapping为@RequestMapping(method = RequestMethod.PUT)添加标签。处理PUT请求。
@DeleteMapping为@RequestMapping(method = RequestMethod.DELETE)添加标签。处理DELETE请求。
@PatchMapping为@RequestMapping(method = RequestMethod.PATCH)添加标签。处理PATCH请求。
@RequestParam将Web请求参数绑定到方法参数。
@PathVariable将URI模板变量绑定到方法参数。
@ResponseBody将返回的对象序列化为指定格式(通常是 JSON 格式)并将其作为响应主体返回。
@CrossOrigin在方法或类上启用跨域资源共享(CORS)
@ExceptionHandler定义一个方法来处理由请求处理程序方法引发的异常
@ControllerAdvice允许您处理整个应用程序中的异常,而不仅仅是单个控制器
@RestControllerAdvice组合@ControllerAdvice和@ResponseBody。REST控制器
@RequestScope表示 Bean 具有请求作用域
@SessionScope表示 Bean 是会话作用域的
@ApplicationScope指示bean是应用程序范围的
@SessionAttributes用于在会话中存储模型属性
@ModelAttribute将方法参数或方法返回值绑定到命名的模型属性上
@Async表示方法应异步执行
@Scheduled使用 cron 表达式或固定延迟/速率标记要调度的方法
@EnableScheduling启用对定时任务的支持
@Conditional根据条件注册bean
@Profile仅当指定的配置文件处于活动状态时才注册 Bean
@MockBean在 Spring 应用程序上下文中mock bean(与 Spring Boot 一起用于测试)
@SpyBean在 Spring 应用程序上下文中创建 spy Bean(与 Spring Boot 一起用于测试)

详细说明及用法

@SpringBootApplication

标记Spring靴子应用程序的主类。结合@Configuration@EnableAutoConfiguration@ComponentScan

@SpringBootApplication
public class MySpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}

@Component

将类标记为Spring组件,使其成为托管bean

@Component
public class MyComponent {
    // Bean methods and properties
}

@Service

@Component的特殊类型,用于服务层类,通常包含业务逻辑。

@Service
public class MyService {
    // Business logic methods
}

@Repository

数据存储库类的特殊类型@Component。启用异常转换

@Repository
public class MyRepository {
    // Data access methods
}

@Controller

用于处理Web请求的Spring MVC控制器的特殊类型@Component

@Controller
public class MyController {
    @RequestMapping("/hello")
    public String sayHello() {
        return "hello";
    }
}

@RestController

组合@Controller和@ResponseBody。处理Web请求并直接返回JSON/XML响应。

@RestController
public class MyRestController {
    @GetMapping("/hello")
    public String sayHello() {
        return "hello";
    }
}

@Autowired

自动将依赖项注入到字段、setter方法或构造函数中

@Component
public class MyComponent {
    @Autowired
    private MyService myService;

    // Use myService in methods
}

@Value

将属性文件中的值插入字段、setter方法或构造函数参数

@Component
public class MyComponent {
    @Value("${app.name}")
    private String appName;

    // Use appName in methods
}

@Configuration

指示一个类声明一个或多个@Bean方法,并且可以被Spring容器处理以生成bean定义和服务请求

@Configuration
public class MyConfig {
    @Bean
    public MyService myService() {
        return new MyService();
    }
}

@Bean

声明一个方法,该方法返回Spring容器管理的Spring bean

@Configuration
public class MyConfig {
    @Bean
    public MyService myService() {
        return new MyService();
    }
}

@EnableAutoConfiguration

根据类路径中存在的依赖项自动配置Spring应用程序

@SpringBootApplication
public class MySpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApplication.class, args);
    }
}

SpringBootApplication是一个组合注解,组合了@EnableAutoConfiguration

@ComponentScan

配置用于@Configuration类的组件扫描指令。指定要扫描带注释组件的基包。

@Configuration
@ComponentScan(basePackages = "com.example")
public class MyConfig {
    // Configuration methods
}

@RequestMapping

将Web请求映射到特定的处理程序类或处理程序方法。

@Controller
public class MyController {
    @RequestMapping("/hello")
    public String sayHello() {
        return "hello";
    }
}

@GetMapping

为@RequestMapping(method = RequestMethod.GET)添加标签。处理GET请求。

@RestController
public class MyRestController {
    @GetMapping("/greet")
    public String greet() {
        return "Hello, World!";
    }
}

@PostMapping

为@RequestMapping(method = RequestMethod.POST)添加标签。处理POST请求。

@RestController
public class MyRestController {
    @PostMapping("/create")
    public String create(@RequestBody MyEntity entity) {
        // Process entity
        return "Created";
    }
}

@PutMapping

为@RequestMapping(method = RequestMethod.PUT)添加标签。处理PUT请求。

@RestController
public class MyRestController {
    @PutMapping("/update")
    public String update(@RequestBody MyEntity entity) {
        // Update entity
        return "Updated";
    }
}

@DeleteMapping

为@RequestMapping(method = RequestMethod.DELETE)添加标签。处理DELETE请求。

@RestController
public class MyRestController {
    @DeleteMapping("/delete/{id}")
    public String delete(@PathVariable Long id) {
        // Delete entity by id
        return "Deleted";
    }
}

@PatchMapping

为@RequestMapping(method = RequestMethod.PATCH)添加标签。处理PATCH请求。

@RestController
public class MyRestController {


    @PatchMapping("/patch")
    public String patch(@RequestBody MyEntity entity) {
        // Patch entity
        return "Patched";
    }
}

@RequestParam

将Web请求参数绑定到方法参数。

@RestController
public class MyRestController {
    @GetMapping("/param")
    public String param(@RequestParam String name) {
        return "Hello, " + name;
    }
}

@PathVariable

将URI模板变量绑定到方法参数。


@RestController
public class MyRestController {
    @GetMapping("/path/{id}")
    public String path(@PathVariable Long id) {
        return "ID: " + id;
    }
}

@RequestBody

将HTTP请求的json body绑定到方法参数。

@RestController
public class MyRestController {
    @PostMapping("/body")
    public String body(@RequestBody MyEntity entity) {
        return "Received: " + entity;
    }
}

@ResponseBody

将返回的对象序列化为指定格式(通常是 JSON 格式)并将其作为响应主体返回。

@Controller
public class MyController {
    @RequestMapping("/json")
    @ResponseBody
    public String json() {
        return "{"message":"Hello, World!"}";
    }
}

@CrossOrigin

在方法或类上启用跨域资源共享(CORS)

@RestController
@CrossOrigin(origins = "http://example.com")
public class MyRestController {
    @GetMapping("/cors")
    public String cors() {
        return "CORS Enabled";
    }
}

@ExceptionHandler

定义一个方法来处理由请求处理程序方法引发的异常

@Controller
public class MyController {
    
    @ExceptionHandler(Exception.class)
    public String handleException() {
        return "error";
    }
}

仅对MyController生效

@ControllerAdvice

允许您处理整个应用程序中的异常,而不仅仅是单个控制器

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(Exception.class)
    public String handleException() {
        return "error";
    }
}

对所有controller生效

@RestControllerAdvice

组合@ControllerAdvice和@ResponseBody。REST控制器

@RestControllerAdvice
public class GlobalRestExceptionHandler {
    @ExceptionHandler(Exception.class)
    public String handleException() {
        return "{"error":"An error occurred"}";
    }
}

@RequestScope

@RequestScope 注解在 Spring 框架中用于定义 Bean 的作用域,使得每个 HTTP 请求都有实例化的独立 Bean。这意味着在同一个请求过程中,一个带有 @RequestScope 的 Bean 实例会被共享,但在不同的请求中会创建新的实例

@Component
@RequestScope
public class MyRequestScopedBean {
    // Bean methods and properties
}

@SessionScope

@SessionScope 注解在 Spring 框架中用于定义 Bean 的作用域,使得每个 HTTP 会话都有实例化的独立 Bean。这意味着在同一个会话过程中,一个带有 @SessionScope 的 Bean 实例会被共享,但在不同的会话中会创建新的实例

@Component
@SessionScope
public class MySessionScopedBean {
    // Bean methods and properties
}

@ApplicationScope

@ApplicationScope 注解在 Spring 框架中用于定义 Bean 的作用域,使得每个应用程序上下文都有实例化的独立 Bean。这意味着在同一个应用程序上下文中,一个带有 @ApplicationScope 的 Bean 实例会被共享,但在不同的应用程序上下文中会创建新的实例

@Component
@ApplicationScope
public class MyApplicationScopedBean {
    // Bean methods and properties
}

@SessionAttributes

@SessionAttributes 注解用于在会话中存储模型属性。这些属性在多个请求之间共享,并且在会话结束时删除

@Controller
@SessionAttributes("user")
public class MyController {
    @ModelAttribute("user")
    public User createUser() {
        return new User();
    }
}

@ModelAttribute

@ModelAttribute 注解用于将方法参数或方法返回值绑定到命名的模型属性上

@Controller
public class MyController {
    @ModelAttribute("attribute")
    public String addAttribute() {
        return "value";
    }
}

@Async

@Async 注解表示方法应异步执行

@Service
public class MyService {
    @Async
    public void asyncMethod() {
        // Async method logic
    }
}

@Scheduled

@Scheduled 注解使用 cron 表达式或固定延迟/速率标记要调度的方法

@Component
public class MyScheduledTask {
    @Scheduled(cron = "0 0 * * * ?")
    public void scheduledMethod() {
        // Scheduled task logic
    }
}

@EnableScheduling

@EnableScheduling 注解启用对定时任务的支持

@Configuration
@EnableScheduling
public class MyConfig {
    // Configuration methods
}

@Conditional

@Conditional 注解根据条件注册 bean

@Configuration
public class MyConfig {
    @Bean
    @Conditional(MyCondition.class)
    public MyService myService() {
        return new MyService();
    }
}

@Profile

@Profile 注解仅当指定的配置文件处于活动状态时才注册 Bean

@Configuration
@Profile("dev")
public class DevConfig {
    @Bean
    public MyService myService() {
        return new MyService();
    }
}

@MockBean

@MockBean 注解在 Spring 应用程序上下文中 mock bean(与 Spring Boot 一起用于测试)

@SpringBootTest
public class MyTest {
    
    @MockBean
    private MyService myService;

    @Test
    public void test() {
        // Test logic
    }
}

@SpyBean

@SpyBean 注解在 Spring 应用程序上下文中创建 spy Bean(与 Spring Boot 一起用于测试)

@SpringBootTest
public class MyTest {
    @SpyBean
    private MyService myService;

    @Test
    public void test() {
        // Test logic
    }
}

参考

上面的内容绝大部分来源于 www.rameshfadatare.com/cheat-sheet…

感谢Ramesh Fadatare的整理分享

转载自:https://juejin.cn/post/7400935722424696895
评论
请登录