文章目录1. `@SpringBootApplication`2. `@RestController` 和 `@RequestMapping`3. `@Autowired`4. `@Service`、`@Repository` 和 `@Component`5. `@Configuration`6. `@Value`7. `@Qualifier`8. `@ConditionalOnProperty`9. `@Async`10. `@Scheduled`11. `@EnableCaching`12. `@PathVariable` 和 `@RequestParam`13. `@RequestBody` 和 `@ResponseBody`14. `@Valid` 和 `@Validated`15. `@ExceptionHandler`16. `@Entity` 和 `@Table`17. `@OneToMany` 和 `@ManyToOne`18. `@Transactional`19. `@Profile`20. `@EntityScan` 和 `@EnableJpaRepositories`总结
🎉欢迎来到架构设计专栏~Spring Boot 常用注解大全:每个程序员必备
☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹✨博客主页:IT·陈寒的博客🎈该系列文章专栏:架构设计📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏📜 欢迎大家关注! ❤️在Spring Boot应用程序开发中,注解是无法回避的一部分。Spring Boot提供了许多注解,用于配置应用程序的各个方面,从依赖注入到请求映射,再到数据持久化。这些注解使得开发更加简洁、高效。本文将介绍一些Spring Boot中常用的注解,帮助每个程序员更好地理解和使用它们。
1. @SpringBootApplication@SpringBootApplication是一个复合注解,通常放在Spring Boot应用程序的入口类上。它包括以下三个注解的功能:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan。这个注解标志着一个类是Spring Boot应用程序的主配置类,它会自动扫描当前包及其子包中的组件。
代码语言:javascript代码运行次数:0运行复制@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}2. @RestController 和 @RequestMapping@RestController用于标志一个类是RESTful风格的控制器,它的方法返回的是JSON数据。@RequestMapping用于定义请求映射。
代码语言:javascript代码运行次数:0运行复制@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}3. @Autowired@Autowired用于自动装配Bean,它可以注入一个Bean到另一个Bean中,消除了手动配置Bean的繁琐。
代码语言:javascript代码运行次数:0运行复制@Service
public class MyService {
private final MyRepository repository;
@Autowired
public MyService(MyRepository repository) {
this.repository = repository;
}
}4. @Service、@Repository 和 @Component这些注解用于定义Spring Bean的类型,分别表示服务、仓库和通用组件。Spring Boot会自动扫描并创建这些Bean。
代码语言:javascript代码运行次数:0运行复制@Service
public class MyService {
// ...
}
@Repository
public class MyRepository {
// ...
}
@Component
public class MyComponent {
// ...
}5. @Configuration@Configuration用于定义一个配置类,通常包含Bean的定义。它可以替代XML配置文件。
代码语言:javascript代码运行次数:0运行复制@Configuration
public class MyConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}6. @Value@Value用于注入外部配置属性值。它可以将属性值直接注入到Java字段中。
代码语言:javascript代码运行次数:0运行复制@Service
public class MyService {
@Value("${my.property}")
private String myProperty;
}7. @Qualifier当有多个实现同一个接口的Bean时,可以使用@Qualifier注解指定要注入的Bean。
代码语言:javascript代码运行次数:0运行复制@Service
public class MyService {
@Autowired
@Qualifier("myBean1")
private MyBean myBean;
}8. @ConditionalOnProperty@ConditionalOnProperty用于根据属性的值来决定是否创建一个Bean。
代码语言:javascript代码运行次数:0运行复制@Configuration
@ConditionalOnProperty(name = "my.feature.enabled", havingValue = "true")
public class MyFeatureAutoConfiguration {
@Bean
public MyFeature myFeature() {
return new MyFeature();
}
}9. @Async@Async用于标志一个方法是异步的,Spring Boot会在后台线程中执行它。
代码语言:javascript代码运行次数:0运行复制@Service
public class MyService {
@Async
public CompletableFuture
// 异步操作
}
}10. @Scheduled@Scheduled用于定时任务的配置,它可以标志一个方法定时执行。
代码语言:javascript代码运行次数:0运行复制@Service
public class MyService {
@Scheduled(fixedRate = 10000) // 每10秒执行一次
public void scheduledMethod() {
// 定时任务
}
}11. @EnableCaching@EnableCaching用于启用Spring Boot的缓存支持,可以在方法上使用@Cacheable、@CachePut和@CacheEvict等注解来实现缓存。
代码语言:javascript代码运行次数:0运行复制@Configuration
@EnableCaching
public class MyCacheConfig {
// 配置缓存
}12. @PathVariable 和 @RequestParam@PathVariable用于获取URI中的路径参数,@RequestParam用于获取请求参数。
代码语言:javascript代码运行次数:0运行复制@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/greet/{name}")
public String greet(@PathVariable String name, @RequestParam(defaultValue = "Hello") String greeting) {
return greeting + ", " + name + "!";
}
}13. @RequestBody 和 @ResponseBody@RequestBody用于将请求体中的JSON数据绑定到方法的参数上,@ResponseBody用于将方法的返回值序列化为JSON数据。
代码语言:javascript代码运行次数:0运行复制@RestController
@RequestMapping("/api")
public class MyController {
@PostMapping("/create")
public ResponseEntity
// 处理请求体中的数据
return ResponseEntity.ok(object);
}
}14. @Valid 和 @Validated@Valid用于启用方法参数的校验,@Validated用于启用类级别的校验。
代码语言:javascript代码运行次数:0运行复制@RestController
@RequestMapping("/api")
public class MyController {
@PostMapping("/create")
public ResponseEntity
// 处理请求体中的数据
return ResponseEntity.ok(object);
}
}15. @ExceptionHandler@ExceptionHandler用于定义异常处理方法,当控制器方法抛出指定类型的异常时,Spring Boot会调用这个方法来处理异常。
代码语言:javascript代码运行次数:0运行复制@RestController
@RequestMapping("/api")
public class MyController {
@ExceptionHandler(MyException.class)
public ResponseEntity
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ex.getMessage());
}
}16. @Entity 和 @Table@Entity用于标志一个JPA实体类,@Table用于指定数据库表的名称。
代码语言:javascript代码运行次数:0运行复制@Entity
@Table(name = "my_table")
public class MyEntity {
// 实体类的属性和方法
}17. @OneToMany 和 @ManyToOne@OneToMany和@ManyToOne用于定义一对多和多对一的关系,通常用于JPA实体类的属性上。
代码语言:javascript代码运行次数:0运行复制@Entity
public class Author {
@OneToMany(mappedBy = "author")
private List
// ...
}
@Entity
public class Book {
@ManyToOne
@JoinColumn(name = "author_id")
private Author author;
// ...
}18. @Transactional@Transactional用于标志一个方法需要在事务中执行,通常用于服务层方法。
代码语言:javascript代码运行次数:0运行复制@Service
public class MyService {
@Transactional
public void doSomething() {
// 执行数据库操作
}
}19. @Profile@Profile用于定义不同环境下的配置,可以在application.properties或application.yml中指定spring.profiles.active来选择使用哪个配置。
代码语言:javascript代码运行次数:0运行复制@Configuration
@Profile("development")
public class DevelopmentConfig {
// 开发环境配置
}
@Configuration
@Profile("production")
public class ProductionConfig {
// 生产环境配置
}20. @EntityScan 和 @EnableJpaRepositories这两个注解用于配置JPA扫描实体类和仓库接口的包路径。
代码语言:javascript代码运行次数:0运行复制@SpringBootApplication
@EntityScan("com.example.entities")
@EnableJpaRepositories("com.example.repositories")
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}总结Spring Boot提供了丰富的注解来简化应用程序的开发和配置,本文介绍了一些常用的注解,涵盖了依赖注入、控制器、数据持久化、定时任务、缓存、校验、异常处理等方面。掌握这些注解将帮助每个程序员更好地使用Spring Boot来构建高效、可维护的应用程序。希望本文对你有所帮助,让你的Spring Boot开发之路更加顺畅。