推荐答案
常用注解列表
@SpringBootApplication
- 用于标记主类,表示这是一个Spring Boot应用。它组合了
@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解。
- 用于标记主类,表示这是一个Spring Boot应用。它组合了
@RestController
- 用于标记一个类为控制器,并且所有方法的返回值都会直接作为HTTP响应体返回。
@RequestMapping
- 用于映射HTTP请求到控制器方法。可以指定URL路径、HTTP方法等。
@GetMapping
- 用于映射GET请求到控制器方法。
@PostMapping
- 用于映射POST请求到控制器方法。
@PutMapping
- 用于映射PUT请求到控制器方法。
@DeleteMapping
- 用于映射DELETE请求到控制器方法。
@PathVariable
- 用于将URL中的模板变量绑定到方法参数。
@RequestParam
- 用于将HTTP请求参数绑定到方法参数。
@RequestBody
- 用于将HTTP请求体绑定到方法参数,通常用于处理JSON或XML格式的请求。
@ResponseBody
- 用于将方法的返回值直接作为HTTP响应体返回。
@Configuration
- 用于标记一个类为配置类,通常与
@Bean注解一起使用。
- 用于标记一个类为配置类,通常与
@Bean
- 用于标记一个方法,表示该方法返回的对象应该被Spring容器管理。
@Component
- 用于标记一个类为Spring组件,Spring会自动扫描并管理这些组件。
@Service
- 用于标记一个类为服务层组件。
@Repository
- 用于标记一个类为数据访问层组件。
@Autowired
- 用于自动注入依赖。
@Qualifier
- 用于指定要注入的Bean的名称,通常与
@Autowired一起使用。
- 用于指定要注入的Bean的名称,通常与
@Value
- 用于注入配置文件中的属性值。
@ConfigurationProperties
- 用于将配置文件中的属性绑定到一个Java对象。
@EnableAutoConfiguration
- 用于启用Spring Boot的自动配置机制。
@ComponentScan
- 用于指定Spring扫描组件的包路径。
@EnableCaching
- 用于启用Spring的缓存机制。
@Cacheable
- 用于标记一个方法的返回值应该被缓存。
@CacheEvict
- 用于标记一个方法应该清除缓存。
@Scheduled
- 用于标记一个方法为定时任务。
@Async
- 用于标记一个方法为异步执行。
@Transactional
- 用于标记一个方法或类为事务性操作。
@ExceptionHandler
- 用于处理控制器中的异常。
@ControllerAdvice
- 用于全局处理控制器中的异常。
本题详细解读
1. @SpringBootApplication
@SpringBootApplication是Spring Boot应用的核心注解,通常用于主类上。它组合了@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解,简化了配置。
2. @RestController
@RestController是@Controller和@ResponseBody的组合注解,用于标记一个类为控制器,并且所有方法的返回值都会直接作为HTTP响应体返回。
3. @RequestMapping
@RequestMapping用于映射HTTP请求到控制器方法。它可以指定URL路径、HTTP方法等。例如:
@RequestMapping(value = "/example", method = RequestMethod.GET)
public String example() {
return "example";
}4. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
这些注解是@RequestMapping的简化版本,分别用于映射GET、POST、PUT、DELETE请求。例如:
@GetMapping("/example")
public String getExample() {
return "get example";
}5. @PathVariable
@PathVariable用于将URL中的模板变量绑定到方法参数。例如:
@GetMapping("/example/{id}")
public String getExampleById(@PathVariable String id) {
return "example id: " + id;
}6. @RequestParam
@RequestParam用于将HTTP请求参数绑定到方法参数。例如:
@GetMapping("/example")
public String getExample(@RequestParam String name) {
return "example name: " + name;
}7. @RequestBody
@RequestBody用于将HTTP请求体绑定到方法参数,通常用于处理JSON或XML格式的请求。例如:
@PostMapping("/example")
public String createExample(@RequestBody Example example) {
return "created example: " + example.getName();
}8. @ResponseBody
@ResponseBody用于将方法的返回值直接作为HTTP响应体返回。例如:
@GetMapping("/example")
@ResponseBody
public Example getExample() {
return new Example("example");
}9. @Configuration
@Configuration用于标记一个类为配置类,通常与@Bean注解一起使用。例如:
@Configuration
public class AppConfig {
@Bean
public Example example() {
return new Example("example");
}
}10. @Bean
@Bean用于标记一个方法,表示该方法返回的对象应该被Spring容器管理。例如:
@Bean
public Example example() {
return new Example("example");
}11. @Component
@Component用于标记一个类为Spring组件,Spring会自动扫描并管理这些组件。例如:
@Component
public class ExampleService {
public String getExample() {
return "example";
}
}12. @Service
@Service用于标记一个类为服务层组件。例如:
@Service
public class ExampleService {
public String getExample() {
return "example";
}
}13. @Repository
@Repository用于标记一个类为数据访问层组件。例如:
@Repository
public class ExampleRepository {
public String getExample() {
return "example";
}
}14. @Autowired
@Autowired用于自动注入依赖。例如:
@Service
public class ExampleService {
@Autowired
private ExampleRepository exampleRepository;
}15. @Qualifier
@Qualifier用于指定要注入的Bean的名称,通常与@Autowired一起使用。例如:
@Service
public class ExampleService {
@Autowired
@Qualifier("exampleRepository")
private ExampleRepository exampleRepository;
}16. @Value
@Value用于注入配置文件中的属性值。例如:
@Service
public class ExampleService {
@Value("${example.name}")
private String exampleName;
}17. @ConfigurationProperties
@ConfigurationProperties用于将配置文件中的属性绑定到一个Java对象。例如:
@ConfigurationProperties(prefix = "example")
public class ExampleProperties {
private String name;
// getters and setters
}18. @EnableAutoConfiguration
@EnableAutoConfiguration用于启用Spring Boot的自动配置机制。例如:
@SpringBootApplication
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}19. @ComponentScan
@ComponentScan用于指定Spring扫描组件的包路径。例如:
@SpringBootApplication
@ComponentScan(basePackages = "com.example")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}20. @EnableCaching
@EnableCaching用于启用Spring的缓存机制。例如:
@SpringBootApplication
@EnableCaching
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}21. @Cacheable
@Cacheable用于标记一个方法的返回值应该被缓存。例如:
@Service
public class ExampleService {
@Cacheable("examples")
public String getExample() {
return "example";
}
}22. @CacheEvict
@CacheEvict用于标记一个方法应该清除缓存。例如:
@Service
public class ExampleService {
@CacheEvict("examples")
public void clearCache() {
// clear cache
}
}23. @Scheduled
@Scheduled用于标记一个方法为定时任务。例如:
@Service
public class ExampleService {
@Scheduled(fixedRate = 5000)
public void scheduledTask() {
// task logic
}
}24. @Async
@Async用于标记一个方法为异步执行。例如:
@Service
public class ExampleService {
@Async
public void asyncTask() {
// task logic
}
}25. @Transactional
@Transactional用于标记一个方法或类为事务性操作。例如:
@Service
public class ExampleService {
@Transactional
public void transactionalMethod() {
// transaction logic
}
}26. @ExceptionHandler
@ExceptionHandler用于处理控制器中的异常。例如:
@RestController
public class ExampleController {
@ExceptionHandler(Exception.class)
public String handleException(Exception ex) {
return "error: " + ex.getMessage();
}
}27. @ControllerAdvice
@ControllerAdvice用于全局处理控制器中的异常。例如:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public String handleException(Exception ex) {
return "error: " + ex.getMessage();
}
}