本文深入浅出地解析了Spring Boot中常用的27个核心注解,旨在帮助开发者更好地理解和运用这些注解,提高开发效率。
在 Spring Boot 框架里,注解起着举足轻重的作用,通过它们可以简化项目的配置,并且最大程度地实现了“约定大于配置”的原则。然而对于初学者来说,各种各样的注解可能会让人感到困惑。因此全面而清晰的理解和认识 Spring Boot 提供的功能性注解非常重要。
一、Spring Boot 中的 Configuration 注解
使用 @Configuration 注解定义一个配置类可以替代 XML 配置文件,在被该注释标记的类中包含至少有一个方法带有 @Bean 标记,这些带 @Bean 的方法会被 AnnotationConfigApplicationContext 或者 AnnotationConfigWebApplicationContext 类扫描,并用于构建 bean 定义以及初始化 Spring 容器。
```java
public class TaskAutoConfiguration {
@Profile(biz-electrfence-controller)
@Bean
public BizElectrfenceControllerJob bizElectrfenceControllerJob() {
return new BizElectrfenceControllerJob();
}
@Profile(biz-consume-1-datasync)
@Bean
public BizBikeElectrFenceTradeSyncJob bizBikeElectrFenceTradeSyncJob() {
return new BizBikeElectrFenceTradeSyncJob();
}
}
```
二、ComponentScan 注解
@ComponentScan 注释默认会装配被标记为 @Controller, @Service, @Repository 或者 @Component 的类到 Spring 容器中。
```java
@ComponentScan(value = com.abacus.check.api)
public class CheckApiApplication {
public static void main(String[] args) {
SpringApplication.run(CheckApiApplication.class, args);
}
}
```
另外,@SprinBootApplication 注解也包含 @ComponentScan 功能。因此我们也可以通过设置 @SpringBootApplication 的 scanBasePackages 属性来配置。
```java
@SpringBootApplication(scanBasePackages = {com.abacus.check.api, com.abacus.check.service})
public class CheckApiApplication {
public static void main(String[] args) {
SpringApplication.run(CheckApiApplication.class, args);
}
}
```
三、Conditional 注解
@Conditional 是 Spring 4 新提供的注释,可以基于代码中设置的条件装载不同的 bean。
接下来我们将继续研究 Spring Boot 中其他的注解,包括 @Profile、@Value、@Autowired、@Qualifier 和 @RestController 等等。熟悉这些注释的应用和原理对于提高使用 Spring Boot 开发效率以及掌握面试中的相关知识点非常重要。