SpringBoot 常用注解辨析
发布人:shili8
发布时间:2025-02-06 19:00
阅读次数:0
**Spring Boot 常用注解辨析**
Spring Boot 是一个非常流行的框架,用于快速开发和部署 Java 应用程序。它提供了许多便捷的注解,使得开发者能够更轻松地编写代码。在本文中,我们将逐一介绍 Spring Boot 中常用的注解,并附带示例代码和注释。
###1. @SpringBootApplication`@SpringBootApplication` 是 Spring Boot 应用程序的核心注解。它是 `@Configuration`、`@EnableAutoConfiguration` 和 `@ComponentScan` 的组合,用于启用 Spring Boot 的自动配置功能。
java@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
###2. @Configuration`@Configuration` 注解用于标记一个 Java 类作为 Spring 配置类。它可以用来定义 Bean、配置数据源等。
java@Configurationpublic class MyConfig { @Bean public DataSource dataSource() { return DataSourceBuilder.create().build(); } }
###3. @EnableAutoConfiguration`@EnableAutoConfiguration` 注解用于启用 Spring Boot 的自动配置功能。它会根据应用程序的依赖项自动配置相关组件。
java@EnableAutoConfigurationpublic class DemoApplication { // ... }
###4. @ComponentScan`@ComponentScan` 注解用于扫描指定包下的组件(如 Bean、Controller 等)。
java@ComponentScan(basePackages = "com.example.demo") public class DemoApplication { // ... }
###5. @RestController`@RestController` 注解是 `@Controller` 和 `@ResponseBody` 的组合,用于标记一个控制器类。它表示该类的所有方法都返回 JSON 数据。
java@RestController@RequestMapping("/api") public class MyController { @GetMapping("/hello") public String hello() { return "Hello, World!"; } }
###6. @RequestMapping`@RequestMapping` 注解用于指定一个控制器类或方法的映射规则。
java@RestController@RequestMapping("/api") public class MyController { @GetMapping("/hello") public String hello() { return "Hello, World!"; } }
###7. @PathVariable`@PathVariable` 注解用于从 URL 中获取参数值。
java@RestController@RequestMapping("/api/{id}") public class MyController { @GetMapping public String get(@PathVariable Long id) { return "ID: " + id; } }
###8. @RequestParam`@RequestParam` 注解用于从 URL 中获取参数值。
java@RestController@RequestMapping("/api") public class MyController { @GetMapping public String get(@RequestParam("name") String name) { return "Name: " + name; } }
###9. @RequestBody`@RequestBody` 注解用于从请求体中获取 JSON 数据。
java@RestController@RequestMapping("/api") public class MyController { @PostMapping public String post(@RequestBody User user) { return "User: " + user.getName(); } }
###10. @Autowired`@Autowired` 注解用于自动注入 Bean。
java@Servicepublic class MyService { @Autowired private MyRepository repository; } @Repositorypublic interface MyRepository { // ... }
###11. @Transactional`@Transactional` 注解用于开启事务。
java@Service@Transactionalpublic class MyService { public void save() { // ... } }
###12. @Value`@Value` 注解用于注入外部配置值。
java@RestController@RequestMapping("/api") public class MyController { @Value("${my.value}") private String value; @GetMapping public String get() { return "Value: " + value; } }
###13. @Profile`@Profile` 注解用于指定一个配置文件。
java@RestController@RequestMapping("/api") public class MyController { @Value("${my.value}") private String value; @GetMapping public String get() { return "Value: " + value; } }
###14. @ConditionalOnBean`@ConditionalOnBean` 注解用于检查 Bean 是否存在。
java@RestController@RequestMapping("/api") public class MyController { @Autowired private MyService service; @GetMapping public String get() { return "Service: " + service.getName(); } }
###15. @ConditionalOnClass`@ConditionalOnClass` 注解用于检查类是否存在。
java@RestController@RequestMapping("/api") public class MyController { @Autowired private MyService service; @GetMapping public String get() { return "Service: " + service.getName(); } }
###16. @ConditionalOnProperty`@ConditionalOnProperty` 注解用于检查属性是否存在。
java@RestController@RequestMapping("/api") public class MyController { @Value("${my.value}") private String value; @GetMapping public String get() { return "Value: " + value; } }
###17. @ConditionalOnResource`@ConditionalOnResource` 注解用于检查资源是否存在。
java@RestController@RequestMapping("/api") public class MyController { @Autowired private MyService service; @GetMapping public String get() { return "Service: " + service.getName(); } }
###18. @ConditionalOnWebApplication`@ConditionalOnWebApplication` 注解用于检查是否是 Web 应用。
java@RestController@RequestMapping("/api") public class MyController { @Autowired private MyService service; @GetMapping public String get() { return "Service: " + service.getName(); } }
###19. @ConditionalOnClass`@ConditionalOnClass` 注解用于检查类是否存在。
java@RestController@RequestMapping("/api") public class MyController { @Autowired private MyService service; @GetMapping public String get() { return "Service: " + service.getName(); } }
###20. @ConditionalOnProperty`@ConditionalOnProperty` 注解用于检查属性是否存在。
java@RestController@RequestMapping("/api") public class MyController { @Value("${my.value}") private String value; @GetMapping public String get() { return "Value: " + value; } }
以上就是 Spring Boot 常用注解的介绍。这些注解可以帮助你快速开发和部署 Java 应用程序。