SpringBoot常用注解有很多,下面为你介绍其中一部分:
@SpringBootApplication
- 这是SpringBoot应用的核心注解,可被视作@Configuration、@EnableAutoConfiguration、@ComponentScan三个注解的组合。
- 借助该注解,能开启自动配置功能,还能扫描组件。一般会把它加在主类上。
- 示例如下:
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
@RestController
- 此注解是@Controller和@ResponseBody的结合体,可用于创建RESTful风格的控制器。
- 它会让返回值直接以JSON或XML的形式呈现。
- 示例:
@RestController public class HelloController { @GetMapping("/hello") public String hello() { return "Hello World!"; } }
@RequestMapping
- 该注解用于映射HTTP请求,像路径、方法等都能进行映射。
- 它有一些快捷的变体,例如@GetMapping、@PostMapping等。
- 示例:
@RestController public class UserController { @GetMapping("/users") public List<User> getUsers() { // 实现方法 } }
@Autowired
- 这是一个依赖注入注解,能够自动装配Bean。
- 它可以作用在构造函数、字段或者setter方法上。
- 示例:
@Service public class UserService { private final UserRepository userRepository; @Autowired public UserService(UserRepository userRepository) { this.userRepository = userRepository; } }
@Service
- 这是一个组件注解,用于标记服务层的组件。
- 它能够被组件扫描机制识别。
- 示例:
@Service public class UserServiceImpl implements UserService { // 实现方法 }
@Repository
- 此注解用于标记数据访问层的组件,也就是DAO组件。
- 它还具备自动处理数据访问异常的功能。
- 示例:
@Repository public class UserRepositoryImpl implements UserRepository { // 实现方法 }
@Component
- 这是一个通用的组件注解,可用于标记任意Spring组件。
- 它是其他组件注解(如@Service、@Repository)的父注解。
- 示例:
@Component public class MyComponent { // 类内容 }
@Configuration
- 该注解用于定义配置类,其作用类似于XML配置文件。
- 搭配@Bean注解使用,能够定义Bean。
- 示例:
@Configuration public class AppConfig { @Bean public MyService myService() { return new MyServiceImpl(); } }
@Bean
- 此注解用于在配置类中声明Bean。
- 它会替代XML中的标签。
- 示例:
@Configuration public class AppConfig { @Bean public DataSource dataSource() { return new DriverManagerDataSource("jdbc:mysql://localhost:3306/mydb", "user", "password"); } }
@Value
- 该注解用于注入配置属性。
- 它支持从配置文件(如application.properties)中读取值。
- 示例:
@Component public class MyComponent { @Value("${app.name}") private String appName; }
@ConfigurationProperties
- 此注解用于绑定配置属性到Java对象。
- 它适合处理结构化的配置。
- 示例:
@ConfigurationProperties(prefix = "app") public class AppProperties { private String name; private int port; // getter和setter }
@EnableAutoConfiguration
- 该注解用于启用SpringBoot的自动配置功能。
- 一般情况下,它会和@SpringBootApplication一起使用。
- 示例:
@EnableAutoConfiguration public class Application { // 类内容 }
@ComponentScan
- 此注解用于指定Spring扫描组件的包路径。
- 要是没有明确指定,就会扫描当前类所在的包及其子包。
- 示例:
@ComponentScan(basePackages = "com.example.demo") public class Application { // 类内容 }
@PathVariable
- 该注解用于从URL路径中获取变量。
- 示例:
@GetMapping("/users/{id}") public User getUser(@PathVariable Long id) { // 实现方法 }
@RequestParam
- 此注解用于从URL参数中获取值。
- 示例:
@GetMapping("/users") public List<User> getUsers(@RequestParam(required = false) String name) { // 实现方法 }
@RequestBody
- 该注解用于将HTTP请求的body映射到Java对象。
- 示例:
@PostMapping("/users") public User createUser(@RequestBody User user) { // 实现方法 }
@ExceptionHandler
- 此注解用于处理控制器中抛出的异常。
- 示例:
@ExceptionHandler(NotFoundException.class) public ResponseEntity<String> handleNotFoundException(NotFoundException ex) { return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage()); }
@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"); } }
@Async
- 该注解用于开启方法的异步执行。
- 要配合@EnableAsync一起使用。
- 示例:
@Service public class MyService { @Async public CompletableFuture<String> process() { // 异步处理 return CompletableFuture.completedFuture("Done"); } }
@Scheduled
- 此注解用于创建定时任务。
- 要配合@EnableScheduling一起使用。
- 示例:
@Service public class MyService { @Scheduled(fixedRate = 5000) public void performTask() { // 定时执行的任务 } }
@ConditionalOnProperty
- 该注解用于根据配置属性来决定是否加载某个Bean。
- 示例:
@Configuration @ConditionalOnProperty(name = "feature.enabled", havingValue = "true") public class FeatureConfig { // 配置内容 }
@ConditionalOnMissingBean
- 此注解用于在没有指定类型的Bean时才创建该Bean。
- 示例:
@Bean @ConditionalOnMissingBean public MyService myService() { return new MyServiceImpl(); }
@TestConfiguration
- 该注解用于测试环境下的配置类。
- 示例:
@TestConfiguration public class TestConfig { @Bean public MyService mockService() { return Mockito.mock(MyService.class); } }
@SpringBootTest
- 此注解用于集成测试SpringBoot应用。
- 示例:
@SpringBootTest public class MyIntegrationTest { @Autowired private MyService myService; @Test public void testService() { // 测试逻辑 } }
@DataJpaTest
- 该注解用于测试JPA数据访问层。
- 示例:
@DataJpaTest public class UserRepositoryTest { @Autowired private UserRepository userRepository; @Test public void testFindByUsername() { // 测试逻辑 } }
以上便是SpringBoot中一些常用的注解,它们能极大地简化开发流程。