1. @SpringBootApplication
Spring Boot应用程序的入口注解,用于启动和配置Spring Boot应用。
// MyApplication.java
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
2. @Configuration
用于定义配置类,可以用在类上。
// MyConfiguration.java
@Configuration
public class MyConfiguration {
// ...
}
3. @Bean
用于定义Spring容器管理的Bean,可以用在方法上。
// MyConfiguration.java
@Configuration
public class MyConfiguration {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
public class MyController {
@GetMapping("/users")
public List<User> getUsers() {
// ...
}
}
4. @Component
用于定义组件类,可以用在类上。
// MyComponent.java
@Component
public class MyComponent {
// ...
}
5. @Service
用于定义服务层组件类,可以用在类上。
@Service
public class MyService {
// ...
}
6. @Repository
用于定义数据访问层组件类,可以用在类上。
// MyRepository.java
@Repository
public class MyRepository {
// ...
}
7. @Controller
用于定义控制层组件类,可以用在类上。
@Controller
public class MyController {
// ...
}
8. @RestController
用于定义RESTful风格的控制层组件类,可以用在类上。
// MyRestController.java
@RestController
public class MyRestController {
// ...
}
9. @RequestMapping
用于定义URL映射规则,可以用在类和方法上。
@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/users")
public List<User> getUsers() {
// ...
}
}
10. @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping
用于定义HTTP方法对应的URL映射规则,可以用在方法上。
@RestController
public class MyController {
@GetMapping("/users")
public List<User> getUsers() {
// ...
}
@PostMapping("/users")
public User createUser(@RequestBody User user) {
// ...
}
}
11. @PathVariable
用于绑定URL路径中的变量到方法参数,可以用在方法参数上。
@RestController
public class MyController {
@GetMapping("/users/{id}")
public User getUser(@PathVariable("id") Long id) {
// ...
}
}
12. @RequestParam
用于绑定HTTP请求参数到方法参数,可以用在方法参数上。
@RestController
public class MyController {
@GetMapping("/users")
public List<User> getUsers(@RequestParam(value = "name", required = false) String name) {
// ...
}
}
13. @RequestHeader
用于绑定HTTP请求头到方法参数,可以用在方法参数上。
@RestController
public class MyController {
@GetMapping("/users")
public List<User> getUsers(@RequestHeader("Accept-Language") String acceptLanguage) {
// ...
}
}
#14. @RequestBody
用于绑定HTTP请求体到方法参数,可以用在方法参数上。
@RestController
public class MyController {
@PostMapping("/users")
public User createUser(@RequestBody User user) {
// ...
}
}
15. @ResponseBody
用于将方法返回值作为HTTP响应体,可以用在方法上。
@Controller
public class MyController {
@GetMapping("/users")
@ResponseBody
public List<User> getUsers() {
// ...
}
}
16. @Autowired
用于自动装配Bean,可以用在属性、构造函数和Setter方法上。
@Service
public class MyService {
@Autowired
private UserRepository userRepository;
}
17. @Resource
用于注入指定名称的Bean,可以用在属性、构造函数和Setter方法上。
@Service
public class MyService {
@Resource(name = "userRepository")
private UserRepository userRepository;
}
18. @Value
用于注入属性值,可以用在属性和方法参数上。
@Service
public class MyService {
@Value("${my.property}")
private String myProperty;
}
19. @Qualifier
用于限定自动装配的Bean,可以用在属性、构造函数和Setter方法上。
@Service
public class MyService {
@Autowired
@Qualifier("specificUserRepository")
private UserRepository userRepository;
}
20. @Scope
用于定义Bean的作用域,可以用在@Component、@Service、@Repository等注解以及@Bean方法上。
// MyComponent.java
@Component
@Scope("prototype")
public class MyComponent {
// ...
}
21. @ComponentScan
用于定义组件扫描的基础包,可以用在@Configuration类上。
// MyConfiguration.java
@Configuration
@ComponentScan("com.example.myapp")
public class MyConfiguration {
// ...
}
22. @Import
用于导入其他配置类,可以用在@Configuration类上。
// MyConfiguration.java
@Configuration
@Import(AnotherConfiguration.class)
public class MyConfiguration {
// ...
}
23. @ImportResource
用于导入XML配置文件,可以用在@Configuration类上。
// MyConfiguration.java
@Configuration
@ImportResource("classpath:application-context.xml")
public class MyConfiguration {
// ...
}
24. @Profile
用于定义配置类或Bean仅在特定的Profile激活时才会生效,可以用在@Configuration类或@Bean方法上。
// MyConfiguration.java
@Configuration
@Profile("production")
public class ProductionConfig {
// ...
}
25. @Order
用于定义Bean初始化顺序,可以用在@Configuration、@Component、@Service、@Repository等注解以及@Bean方法上。
// MyConfiguration.java
@Configuration
@Order(1)
public class MyConfiguration {
// ...
}
26. @Lazy
用于延迟初始化Bean,可以用在@Component、@Service、@Repository等注解以及@Bean方法上。
// MyComponent.java
@Component
@Lazy
public class MyComponent {
// ...
}
27. @EnableCaching
用于启用缓存功能,可以用在@Configuration类上。
// MyConfiguration.java
@Configuration
@EnableCaching
public class MyConfiguration {
// ...
}
28. @Cacheable
用于将方法返回值缓存起来,可以用在方法上。
@Service
public class MyService {
@Cacheable("users")
public User getUser(Long id) {
// ...
}
}
29. @CacheEvict
用于清除缓存,可以用在方法上。
@Service
public class MyService {
@CacheEvict(value = "users", allEntries = true)
public void deleteUser(Long id) {
// ...
}
}
30. @CachePut
用于将方法返回值放入缓存,并且总是执行方法,可以用在方法上。
@Service
public class MyService {
@CachePut(value = "users", key = "#user.id")
public User updateUser(User user) {
// ...
}
}
31. @EnableScheduling
用于启用定时任务功能,可以用在@Configuration类上。
// MyConfiguration.java
@Configuration
@EnableScheduling
public class MyConfiguration {
// ...
}
32. @Scheduled
用于定义定时任务方法,可以用在方法上。
// MyTask.java
@Component
public class MyTask {
@Scheduled(cron = "0 0 * * * ?")
public void execute() {
// ...
}
}
33. @EnableAsync
用于启用异步方法执行功能,可以用在@Configuration类上。
// MyConfiguration.java
@Configuration
@EnableAsync
public class MyConfiguration {
// ...
}
34. @Async
用于定义异步执行的方法,可以用在方法上。
@Service
public class MyService {
@Async
public CompletableFuture<String> asyncMethod() {
// ...
}
}
35. @EnableAutoConfiguration
用于启用自动配置功能,可以用在@Configuration类上。
// MyConfiguration.java
@Configuration
@EnableAutoConfiguration
public class MyConfiguration {
// ...
}
36. @Conditional
用于定义条件配置,可以用在@Configuration类或@Bean方法上。
// MyConfiguration.java
@Configuration
public class MyConfiguration {
@Bean
@Conditional(MyCondition.class)
public MyBean myBean() {
// ...
}
}
37. @ConditionalOnClass, @ConditionalOnMissingClass
用于定义在特定类存在或不存在时的条件配置,可以用在@Configuration类或@Bean方法上。
// MyConfiguration.java
@Configuration
public class MyConfiguration {
@Bean
@ConditionalOnClass(name = "com.example.MyClass")
public MyBean myBean() {
// ...
}
}
38. @ConditionalOnBean, @ConditionalOnMissingBean
用于定义在特定Bean存在或不存在时的条件配置,可以用在@Configuration类或@Bean方法上。
// MyConfiguration.java
@Configuration
public class MyConfiguration {
@Bean
@ConditionalOnBean(name = "myOtherBean")
public MyBean myBean() {
// ...
}
}
39. @ConditionalOnProperty
用于定义在特定属性存在或满足条件时的条件配置,可以用在@Configuration类或@Bean方法上。
// MyConfiguration.java
@Configuration
public class MyConfiguration {
@Bean
@ConditionalOnProperty(name = "my.feature.enabled", havingValue = "true")
public MyBean myBean() {
// ...
}
}
40. @ConditionalOnResource
用于定义在特定资源存在时的条件配置,可以用在@Configuration类或@Bean方法上。
// MyConfiguration.java
@Configuration
public class MyConfiguration {
@Bean
@ConditionalOnResource(resources = "classpath:my-resource.properties")
public MyBean myBean() {
// ...
}
}
41. @ConditionalOnResource
用于定义在特定资源存在时的条件配置,可以用在@Configuration类或@Bean方法上。
// MyConfiguration.java
@Configuration
public class MyConfiguration {
@Bean
@ConditionalOnResource(resources = "classpath:my-resource.properties")
public MyBean myBean() {
// ...
}
}
42. @ConditionalOnExpression
用于定义在特定SpEL表达式计算为true时的条件配置,可以用在@Configuration类或@Bean方法上。
// MyConfiguration.java
@Configuration
public class MyConfiguration {
@Bean
@ConditionalOnExpression("#{systemProperties['my.property'] == 'myValue'}")
public MyBean myBean() {
// ...
}
}
43. @ExceptionHandler
用于处理控制器中的异常,可以用在方法上。
@RestController
public class MyController {
// ...
@ExceptionHandler(MyException.class)
public ResponseEntity<String> handleMyException(MyException ex) {
// ...
}
}
44. @ResponseStatus
用于设置HTTP响应状态码,可以用在@ExceptionHandler方法或控制器方法上。
@RestController
public class MyController {
// ...
@GetMapping("/error")
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public void error() {
// ...
}
}
45. @ModelAttribute
用于在控制器方法执行之前设置模型属性,可以用在方法上。
@Controller
public class MyController {
@ModelAttribute("user")
public User getUser() {
// ...
}
@GetMapping("/hello")
public String hello(Model model) {
// ...
}
}
46. @SessionAttributes
用于将模型属性存储在会话中,可以用在@Controller类上。
@Controller
@SessionAttributes("user")
public class MyController {
// ...
}
47. @EnableAspectJAutoProxy
用于启用AOP代理,可以用在@Configuration类上。
// MyConfiguration.java
@Configuration
@EnableAspectJAutoProxy
public class MyConfiguration {
// ...
}
48. @Aspect
用于定义切面,可以用在类上。
// MyAspect.java
@Aspect
@Component
public class MyAspect {
// ...
}
49. @Before, @After, @Around, @AfterReturning, @AfterThrowing
用于定义切点通知,可以用在方法上。
// MyAspect.java
@Aspect
@Component
public class MyAspect {
@Before("execution(* com.example.myapp.service.*.*(..))")
public void before(JoinPoint joinPoint) {
// ...
}
}
50. @EnableTransactionManagement
用于启用声明式事务管理,可以用在@Configuration类上。
// MyConfiguration.java
@Configuration
@EnableTransactionManagement
public class MyConfiguration {
// ...
}
51. @Transactional
用于声明方法需要事务支持,可以用在方法或类上。
@Service
public class MyService {
@Transactional
public void updateData() {
// ...
}
}
52. @EnableJpaRepositories
用于启用JPA存储库支持,可以用在@Configuration类上。
// MyConfiguration.java
@Configuration
@EnableJpaRepositories(basePackages = "com.example.myapp.repository")
public class MyConfiguration {
// ...
}
53. @Entity, @Table
用于定义实体类和数据库表映射,可以用在类上。
// User.java
@Entity
@Table(name = "users")
public class User {
// ...
}