Spring Boot 常用注解大全:每个程序员必备

文章目录

    • 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中常用的注解,帮助每个程序员更好地理解和使用它们。

Spring Boot 常用注解大全:每个程序员必备_第1张图片

1. @SpringBootApplication

@SpringBootApplication是一个复合注解,通常放在Spring Boot应用程序的入口类上。它包括以下三个注解的功能:@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan。这个注解标志着一个类是Spring Boot应用程序的主配置类,它会自动扫描当前包及其子包中的组件。

Spring Boot 常用注解大全:每个程序员必备_第2张图片

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

2. @RestController@RequestMapping

@RestController用于标志一个类是RESTful风格的控制器,它的方法返回的是JSON数据。@RequestMapping用于定义请求映射。

@RestController
@RequestMapping("/api")
public class MyController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}

3. @Autowired

@Autowired用于自动装配Bean,它可以注入一个Bean到另一个Bean中,消除了手动配置Bean的繁琐。

@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。

@Service
public class MyService {
    // ...
}

@Repository
public class MyRepository {
    // ...
}

@Component
public class MyComponent {
    // ...
}

5. @Configuration

@Configuration用于定义一个配置类,通常包含Bean的定义。它可以替代XML配置文件。

@Configuration
public class MyConfig {
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}

6. @Value

@Value用于注入外部配置属性值。它可以将属性值直接注入到Java字段中。

@Service
public class MyService {
    @Value("${my.property}")
    private String myProperty;
}

7. @Qualifier

当有多个实现同一个接口的Bean时,可以使用@Qualifier注解指定要注入的Bean。

@Service
public class MyService {
    @Autowired
    @Qualifier("myBean1")
    private MyBean myBean;
}

8. @ConditionalOnProperty

@ConditionalOnProperty用于根据属性的值来决定是否创建一个Bean。

@Configuration
@ConditionalOnProperty(name = "my.feature.enabled", havingValue = "true")
public class MyFeatureAutoConfiguration {
    @Bean
    public MyFeature myFeature() {
        return new MyFeature();
    }
}

9. @Async

@Async用于标志一个方法是异步的,Spring Boot会在后台线程中执行它。

@Service
public class MyService {
    @Async
    public CompletableFuture<String> asyncMethod() {
        // 异步操作
    }
}

10. @Scheduled

@Scheduled用于定时任务的配置,它可以标志一个方法定时执行。

@Service
public class MyService {
    @Scheduled(fixedRate = 10000) // 每10秒执行一次
    public void scheduledMethod() {
        // 定时任务
    }
}

11. @EnableCaching

@EnableCaching用于启用Spring Boot的缓存支持,可以在方法上使用@Cacheable@CachePut@CacheEvict等注解来实现缓存。

@Configuration
@EnableCaching
public class MyCacheConfig {
    // 配置缓存
}

12. @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 + "!";
    }
}

13. @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);
    }
}

14. @Valid@Validated

@Valid用于启用方法参数的校验,@Validated用于启用类级别的校验。

@RestController
@RequestMapping("/api")
public class MyController {
    @PostMapping("/create")
    public ResponseEntity<MyObject> create(@Valid @RequestBody MyObject object) {
        // 处理请求体中的数据
        return ResponseEntity.ok(object);
    }
}

Spring Boot 常用注解大全:每个程序员必备_第3张图片

15. @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());
    }
}

16. @Entity@Table

@Entity用于标志一个JPA实体类,@Table用于指定数据库表的名称。

@Entity
@Table(name = "my_table")
public class MyEntity {
    // 实体类的属性和方法
}

17. @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;
    // ...
}

18. @Transactional

@Transactional用于标志一个方法需要在事务中执行,通常用于服务层方法。

@Service
public class MyService {
    @Transactional
    public void doSomething() {
        // 执行数据库操作
    }
}

19. @Profile

@Profile用于定义不同环境下的配置,可以在application.propertiesapplication.yml中指定spring.profiles.active来选择使用哪个配置。

@Configuration
@Profile("development")
public class DevelopmentConfig {
    // 开发环境配置
}

@Configuration
@Profile("production")
public class ProductionConfig {
    // 生产环境配置
}

20. @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 常用注解大全:每个程序员必备_第4张图片

总结

Spring Boot提供了丰富的注解来简化应用程序的开发和配置,本文介绍了一些常用的注解,涵盖了依赖注入、控制器、数据持久化、定时任务、缓存、校验、异常处理等方面。掌握这些注解将帮助每个程序员更好地使用Spring Boot来构建高效、可维护的应用程序。希望本文对你有所帮助,让你的Spring Boot开发之路更加顺畅。


结尾 ❤️ 感谢您的支持和鼓励!
您可能感兴趣的内容:

  • 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
  • 【Java学习路线】2023年完整版Java学习路线图
  • 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
  • 【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统
  • 【数据结构学习】从零起步:学习数据结构的完整路径

你可能感兴趣的:(微服务架构设计,Java学习路线,spring,boot,后端,java)