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