SpringBoot常用注解

发布于:2025-07-03 ⋅ 阅读:(23) ⋅ 点赞:(0)

SpringBoot常用注解有很多,下面为你介绍其中一部分:

  1. @SpringBootApplication

    • 这是SpringBoot应用的核心注解,可被视作@Configuration、@EnableAutoConfiguration、@ComponentScan三个注解的组合。
    • 借助该注解,能开启自动配置功能,还能扫描组件。一般会把它加在主类上。
    • 示例如下:
      @SpringBootApplication
      public class Application {
          public static void main(String[] args) {
              SpringApplication.run(Application.class, args);
          }
      }
      
  2. @RestController

    • 此注解是@Controller和@ResponseBody的结合体,可用于创建RESTful风格的控制器。
    • 它会让返回值直接以JSON或XML的形式呈现。
    • 示例:
      @RestController
      public class HelloController {
          @GetMapping("/hello")
          public String hello() {
              return "Hello World!";
          }
      }
      
  3. @RequestMapping

    • 该注解用于映射HTTP请求,像路径、方法等都能进行映射。
    • 它有一些快捷的变体,例如@GetMapping、@PostMapping等。
    • 示例:
      @RestController
      public class UserController {
          @GetMapping("/users")
          public List<User> getUsers() {
              // 实现方法
          }
      }
      
  4. @Autowired

    • 这是一个依赖注入注解,能够自动装配Bean。
    • 它可以作用在构造函数、字段或者setter方法上。
    • 示例:
      @Service
      public class UserService {
          private final UserRepository userRepository;
      
          @Autowired
          public UserService(UserRepository userRepository) {
              this.userRepository = userRepository;
          }
      }
      
  5. @Service

    • 这是一个组件注解,用于标记服务层的组件。
    • 它能够被组件扫描机制识别。
    • 示例:
      @Service
      public class UserServiceImpl implements UserService {
          // 实现方法
      }
      
  6. @Repository

    • 此注解用于标记数据访问层的组件,也就是DAO组件。
    • 它还具备自动处理数据访问异常的功能。
    • 示例:
      @Repository
      public class UserRepositoryImpl implements UserRepository {
          // 实现方法
      }
      
  7. @Component

    • 这是一个通用的组件注解,可用于标记任意Spring组件。
    • 它是其他组件注解(如@Service、@Repository)的父注解。
    • 示例:
      @Component
      public class MyComponent {
          // 类内容
      }
      
  8. @Configuration

    • 该注解用于定义配置类,其作用类似于XML配置文件。
    • 搭配@Bean注解使用,能够定义Bean。
    • 示例:
      @Configuration
      public class AppConfig {
          @Bean
          public MyService myService() {
              return new MyServiceImpl();
          }
      }
      
  9. @Bean

    • 此注解用于在配置类中声明Bean。
    • 它会替代XML中的标签。
    • 示例:
      @Configuration
      public class AppConfig {
          @Bean
          public DataSource dataSource() {
              return new DriverManagerDataSource("jdbc:mysql://localhost:3306/mydb", "user", "password");
          }
      }
      
  10. @Value

    • 该注解用于注入配置属性。
    • 它支持从配置文件(如application.properties)中读取值。
    • 示例:
      @Component
      public class MyComponent {
          @Value("${app.name}")
          private String appName;
      }
      
  11. @ConfigurationProperties

    • 此注解用于绑定配置属性到Java对象。
    • 它适合处理结构化的配置。
    • 示例:
      @ConfigurationProperties(prefix = "app")
      public class AppProperties {
          private String name;
          private int port;
          // getter和setter
      }
      
  12. @EnableAutoConfiguration

    • 该注解用于启用SpringBoot的自动配置功能。
    • 一般情况下,它会和@SpringBootApplication一起使用。
    • 示例:
      @EnableAutoConfiguration
      public class Application {
          // 类内容
      }
      
  13. @ComponentScan

    • 此注解用于指定Spring扫描组件的包路径。
    • 要是没有明确指定,就会扫描当前类所在的包及其子包。
    • 示例:
      @ComponentScan(basePackages = "com.example.demo")
      public class Application {
          // 类内容
      }
      
  14. @PathVariable

    • 该注解用于从URL路径中获取变量。
    • 示例:
      @GetMapping("/users/{id}")
      public User getUser(@PathVariable Long id) {
          // 实现方法
      }
      
  15. @RequestParam

    • 此注解用于从URL参数中获取值。
    • 示例:
      @GetMapping("/users")
      public List<User> getUsers(@RequestParam(required = false) String name) {
          // 实现方法
      }
      
  16. @RequestBody

    • 该注解用于将HTTP请求的body映射到Java对象。
    • 示例:
      @PostMapping("/users")
      public User createUser(@RequestBody User user) {
          // 实现方法
      }
      
  17. @ExceptionHandler

    • 此注解用于处理控制器中抛出的异常。
    • 示例:
      @ExceptionHandler(NotFoundException.class)
      public ResponseEntity<String> handleNotFoundException(NotFoundException ex) {
          return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
      }
      
  18. @ControllerAdvice

    • 该注解用于定义全局的异常处理和数据绑定。
    • 示例:
      @ControllerAdvice
      public class GlobalExceptionHandler {
          @ExceptionHandler(Exception.class)
          public ResponseEntity<String> handleException(Exception ex) {
              return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Something went wrong");
          }
      }
      
  19. @Async

    • 该注解用于开启方法的异步执行。
    • 要配合@EnableAsync一起使用。
    • 示例:
      @Service
      public class MyService {
          @Async
          public CompletableFuture<String> process() {
              // 异步处理
              return CompletableFuture.completedFuture("Done");
          }
      }
      
  20. @Scheduled

    • 此注解用于创建定时任务。
    • 要配合@EnableScheduling一起使用。
    • 示例:
      @Service
      public class MyService {
          @Scheduled(fixedRate = 5000)
          public void performTask() {
              // 定时执行的任务
          }
      }
      
  21. @ConditionalOnProperty

    • 该注解用于根据配置属性来决定是否加载某个Bean。
    • 示例:
      @Configuration
      @ConditionalOnProperty(name = "feature.enabled", havingValue = "true")
      public class FeatureConfig {
          // 配置内容
      }
      
  22. @ConditionalOnMissingBean

    • 此注解用于在没有指定类型的Bean时才创建该Bean。
    • 示例:
      @Bean
      @ConditionalOnMissingBean
      public MyService myService() {
          return new MyServiceImpl();
      }
      
  23. @TestConfiguration

    • 该注解用于测试环境下的配置类。
    • 示例:
      @TestConfiguration
      public class TestConfig {
          @Bean
          public MyService mockService() {
              return Mockito.mock(MyService.class);
          }
      }
      
  24. @SpringBootTest

    • 此注解用于集成测试SpringBoot应用。
    • 示例:
      @SpringBootTest
      public class MyIntegrationTest {
          @Autowired
          private MyService myService;
      
          @Test
          public void testService() {
              // 测试逻辑
          }
      }
      
  25. @DataJpaTest

    • 该注解用于测试JPA数据访问层。
    • 示例:
      @DataJpaTest
      public class UserRepositoryTest {
          @Autowired
          private UserRepository userRepository;
      
          @Test
          public void testFindByUsername() {
              // 测试逻辑
          }
      }
      

以上便是SpringBoot中一些常用的注解,它们能极大地简化开发流程。


网站公告

今日签到

点亮在社区的每一天
去签到