【全网最全最干】SpringBoot常见的53个注解

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

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 {
    // ...
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值