SpringBoot这29个注解你都用到过么

你好,我是柳岸花开。

在现代的Java开发中,Spring框架成为了无可争议的霸主。其强大的依赖注入和面向切面编程能力让开发者摆脱了繁琐的配置,专注于业务逻辑的实现。而Spring的核心功能正是通过一系列的注解来实现的。本文将带您了解Spring中不常用的注解。

1. @Qualifier

@Qualifier注解用于限定自动装配的Bean,可以用在属性、构造函数和Setter方法上。

@Service
public class AppService {
    @Autowired
    @Qualifier("specificUserRepository")
    private UserRepository userRepository;
}

2. @Scope

@Scope注解用于定义Bean的作用域,可以用在@Component@Service@Repository等注解以及@Bean方法上。

@Component
@Scope("prototype")
public class AppComponent {
    // ...
}

3. @Import

@Import注解用于导入其他配置类,可以用在@Configuration类上。

@Configuration
@Import(AnotherConfig.class)
public class AppConfig 
{
    // ...
}

4. @ImportResource

@ImportResource注解用于导入XML配置文件,可以用在@Configuration类上。

@Configuration
@ImportResource("classpath:application-context.xml")
public class AppConfig {
    // ...
}

5. @Profile

@Profile注解用于定义配置类或Bean仅在特定的Profile激活时才会生效,可以用在@Configuration类或@Bean方法上。

@Configuration
@Profile("production")
public class ProductionConfig {
    // ...
}

6. @Order

@Order注解用于定义Bean初始化顺序,可以用在@Configuration@Component@Service@Repository等注解以及@Bean方法上。

@Configuration
@Order(1)
public class AppConfig {
    // ...
}

7. @Lazy

@Lazy注解用于延迟初始化Bean,可以用在@Component@Service@Repository等注解以及@Bean方法上。

@Component
@Lazy
public class AppComponent {
    // ...
}

8. @EnableCaching

@EnableCaching注解用于启用缓存功能,可以用在@Configuration类上。

@Configuration
@EnableCaching
public class AppConfig {
    // ...
}

9. @Cacheable

@Cacheable注解用于将方法返回值缓存起来,可以用在方法上。

@Service
public class AppService {
    @Cacheable("users")
    public User getUser(Long id) {
        // ...
    }
}

10. @CacheEvict

@CacheEvict注解用于清除缓存,可以用在方法上。

@Service
public class AppService {
    @CacheEvict(value = "users", allEntries = true)
    public void deleteUser(Long id) {
        // ...
    }
}

11. @CachePut

@CachePut注解用于将方法返回值放入缓存,并且总是执行方法,可以用在方法上。

@Service
public class AppService {
    @CachePut(value = "users", key = "#user.id")
    public User updateUser(User user) {
        // ...
    }
}

12. @EnableScheduling

@EnableScheduling注解用于启用定时任务功能,可以用在@Configuration类上。

@Configuration
@EnableScheduling
public class AppConfig {
    // ...
}

13. @Scheduled

@Scheduled注解用于定义定时任务方法,可以用在方法上。

@Component
public class AppTask {
    @Scheduled(cron = "0 0 * * * ?")
    public void execute() {
        // ...
    }
}

14. @EnableAsync

@EnableAsync注解用于启用异步方法执行功能,可以用在@Configuration类上。

@Configuration
@EnableAsync
public class AppConfig {
    // ...
}

15. @Async

@Async注解用于定义异步执行的方法,可以用在方法上。

@Service
public class AppService {
    @Async
    public CompletableFuture<String> asyncMethod() {
        // ...
    }
}

16. @EnableAutoConfiguration

@EnableAutoConfiguration注解用于启用自动配置功能,可以用在@Configuration类上。

@Configuration
@EnableAutoConfiguration
public class AppConfig {
    // ...
}

17. @Conditional

@Conditional注解用于定义条件配置,可以用在@Configuration类或@Bean方法上。

@Configuration
public class AppConfig {
    @Bean
    @Conditional(AppCondition.class)
    public AppBean appBean() 
{
        // ...
    }
}

18. @ConditionalOnClass, @ConditionalOnMissingClass

这些注解用于定义在特定类存在或不存在时的条件配置,可以用在@Configuration类或@Bean方法上。

@Configuration
public class AppConfig {
    @Bean
    @ConditionalOnClass(name = "com.example.MyClass")
    public AppBean appBean() {
        // ...
    }
}

19. @ConditionalOnBean, @ConditionalOnMissingBean

这些注解用于定义在特定Bean存在或不存在时的条件配置,可以用在@Configuration类或@Bean方法上。

@Configuration
public class AppConfig {
    @Bean
    @ConditionalOnBean(name = "myOtherBean")
    public AppBean appBean() {
        // ...
    }
}

20. @ConditionalOnProperty

@ConditionalOnProperty注解用于定义在特定属性存在或满足条件时的条件配置,可以用在@Configuration类或@Bean方法上。

@Configuration
public class AppConfig {
    @Bean
    @ConditionalOnProperty(name = "autoregister.enabled", havingValue = "true")
    public AppBean appBean() {
        // ...
    }
}

21. @ConditionalOnResource

@ConditionalOnResource注解用于定义在特定资源存在时的条件配置,可以用在@Configuration类或@Bean方法上。

@Configuration
public class AppConfig {
    @Bean
    @ConditionalOnResource(resources = "classpath:my-resource.properties")
    public AppBean appBean() {
        // ...
    }
}

22. @ConditionalOnExpression

@ConditionalOnExpression注解用于定义在特定SpEL表达式计算为true时的条件配置,可以用在@Configuration类或@Bean方法上。

@Configuration
public class AppConfig {
    @Bean
    @ConditionalOnExpression("#{systemProperties['app.property'] == 'bob'}")
    public AppBean appBean() {
        // ...
    }
}

23. @ExceptionHandler

@ExceptionHandler注解用于处理控制器中的异常,可以用在方法上。

@RestController
public class AppController {
    // ...

    @ExceptionHandler(AppException.class)
    public ResponseEntity<StringhandleAppException(AppException ex
{
        // ...
    }
}

24. @ResponseStatus

@ResponseStatus注解用于设置HTTP响应状态码,可以用在@ExceptionHandler方法或

异常类上。

@ResponseStatus(HttpStatus.NOT_FOUND)
public class AppNotFoundException extends RuntimeException {
    // ...
}

25. @ControllerAdvice

@ControllerAdvice注解用于定义全局控制器通知,可以用在类上。

@ControllerAdvice
public class AppControllerAdvice {
    // ...
}

26. @ModelAttribute

@ModelAttribute注解用于将方法的返回值添加到模型中,可以用在方法上。

@Controller
public class AppController {
    @ModelAttribute("user")
    public User getUser() {
        // ...
    }
}

27. @SessionAttributes

@SessionAttributes注解用于将模型中的属性存储到会话中,可以用在类上。

@Controller
@SessionAttributes("user")
public class AppController {
    // ...
}

28. @CookieValue

@CookieValue注解用于绑定HTTP请求中的Cookie值到方法参数,可以用在方法参数上。

@Controller
public class AppController {
    @GetMapping("/hello")
    public String hello(@CookieValue("username") String username) {
        // ...
    }
}

29. @InitBinder

@InitBinder注解用于在控制器中初始化数据绑定器,可以用在方法上。

@Controller
public class AppController {
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        // ...
    }
}

以上是一些在Spring中不常用的注解及其用法。希望这篇文章对你理解Spring框架有所帮助!

本文由 mdnice 多平台发布

相关推荐

  1. SpringBoot29注解

    2024-04-27 09:46:05       20 阅读
  2. SpringBoot20注解及其作用

    2024-04-27 09:46:05       13 阅读
  3. SpringBoot注解

    2024-04-27 09:46:05       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-27 09:46:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-27 09:46:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-27 09:46:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-27 09:46:05       20 阅读

热门阅读

  1. 慢生活,慢光阴

    2024-04-27 09:46:05       13 阅读
  2. PyTorch的基本概念及使用场景

    2024-04-27 09:46:05       17 阅读
  3. MAC系统升级问题记录

    2024-04-27 09:46:05       15 阅读
  4. 五一节前的信息系统的安全保障工作

    2024-04-27 09:46:05       14 阅读
  5. springmvc

    springmvc

    2024-04-27 09:46:05      27 阅读
  6. Git常用命令大全

    2024-04-27 09:46:05       17 阅读
  7. Oracle时间函数

    2024-04-27 09:46:05       35 阅读
  8. vue3前端调用后端接口实现分页,搜索

    2024-04-27 09:46:05       13 阅读
  9. 机器学习之sklearn基础教程

    2024-04-27 09:46:05       15 阅读