SpingBoot三大核心注解
springboot最大的特点是无需配置XML文件,能自动扫描包路径装载并注入对象,并能做到自动配置需要的jar核心依赖。
默认情况下springboot它之所以能自动帮我们做这些事情,就是因为文章提到的核心注解。
当我们项目创建完成后,项目启动类XxxApplication.java
会默认帮我们配置一个@SpringBootApplication
注解:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
打开@SpringBootApplication
注解:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
可以看到@SpringBootApplication
注解下其中包含了@Configuration
、@EnableAutoConfiguration
和@ComponentScan
三个主要核心注解:
1. @Configuration
org.springframework.context.annotation.Configuration
用来代替 applicationContext.xml 配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。
@SpringBootConfiguration
这个注解就是@Configuration
注解的变体,只是用来修饰是springboot配置而已,或者可利于springboot后续的扩展,源码:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
}
2.@EnableAutoConfiguration
org.springframework.boot.autoconfigure.EnableAutoConfiguration
开启自动配置,该注解会使springboot根据项目中依赖的jar包自动配置项目的配置项。如:我们添加了spring-boot-starter-web
的依赖,项目中也就会引入spring mvc的依赖,springboot就会自动配置许多web需要的核心的依赖。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3.@ComponentScan
org.springframework.context.annotation.ComponentScan
开启组件扫描,该注解会自动扫描包路径下面的所有@Controller
、@Service
、@Repository
、@Component
的类,不配置包路径的话,在springboot中默认扫描@SpringBootApplication
所在类的同级目录以及子目录下的相关注解。
以上是springboot三大核心注解的简单介绍。^^