这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战
@SpringBootApplication
@SpringBootApplication注解能够实现 Spring 组件自动化配置,组件扫描。 表示一个配置类,它声明了一个或多个@Bean方法,也触发了自动配置和组件扫描。相当于声明了@Configuration、@EnableAutoConfiguration和@ComponentScan.
从源码来看,@SpringBootApplication = @SpringBootConfiguration + @ComponentScan +@EnableAutoConfiguration.
@SpringBootConfiguration这个注解将一个类标记为基于 Java Config 的配置类。如果你喜欢基于 Java 的配置而不是基于 XML 的配置,这一点就特别重要。
@ComponentScan该注解使组件扫描成为可能,这样你创建的 Web 控制器类和其他组件将被自动发现,并在 Spring 应用上下文中注册为 Bean。你编写的所有
@Controller类将被该注解发现。
@EnableAutoConfiguration这个注解可以启用
Spring Boot自动配置功能。
从源码中能够看出,@SpringBootConfiguration继承自@Configuration,两者都是配置类。但是后者是一种特殊标志的配置类,只能使用一次。
@ComponentScan注解是用来加载我们的bean的,也可以使用@import来指定该类。
@EnableAutoConfiguration 的作用启动自动的配置,意思就是 Spring Boot 根据你添加的 jar 包来配置你项目的默认配置,比如根据 spring-boot-starter-web ,来判断你的项目是否需要添加了 web mvc 和 tomcat,就会自动的帮你配置 web 项目中所需要的默认配置。简单点说就是它会根据定义在 classpath 下的类,自动的给你生成一些 Bean,并加载到 Spring 的上下文中。
@Configuration
import org.springframework.context.annotation.Configuration;
@Configuration
public class TestConfiguration {
public TestConfiguration(){
System.out.println("TestConfiguration 容器启动初始化...");
}
}
1 package config;
2
3 import org.springframework.context.ApplicationContext;
4 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
5
6 public class TestConfig {
7 public static void main(String[] args){
8 // @Configuration注解的spring容器加载方式,用AnnotationConfigApplicationContext替换ClassPathXmlApplicationContext
9 ApplicationContext context = new AnnotationConfigApplicationContext(TestConfiguration.class);
10
11 }
12}
spring容器已经启动了,@Configuration就会生效。
SpringBoot中@Configuration和@Bean和@Component相同点
@Bean注解的作用是将方法返回值作为一个bean注入到Spring容器中,方法名即为bean的名称 @Component的适用对象是类,标注在类上,类名首字母小写即为bean的名称 @Configuration包含@Component注解,所以两者本质相同!