@SpringBootApplication
注解中组合了@SpringBootConfiguration、@EnableAutoConfiguration和@ComponentScan。因此,在实践过程中也可以使用这三个注解来替代@SpringBootApplication。
@SpringBootConfiguration?
-
标注这个类是一个配置类; -
它只是@Configuration注解的派生注解; -
它与@Configuration注解的功能一致; -
只不过@SpringBootConfiguration是springboot的注解,而@Configuration是spring的注解。
@EnableAutoConfiguration
将所有符合条件的@Configuration中的bean定义加载到IoC容器。(扫描各个(redis,jpa等框架jar)jar包的META-INF目录下的spring.factories文件,并加载其中注册的AutoConfiguration类等),spring boot所以能大量减少用户的配置工作量是因为默认编写了很多配置类(被@Configuration注解的类。
@Configuration(SpringBootConfiguration和@Configuration作用是相同的)
标注这个类是一个配置类;,在springboot中我们大多用配置类来配置(此注解相当于配置文件)。
@Bean
任何一个标注了@Bean的方法,其返回值将作为一个对象注册到Spring的IoC容器,方法名将默认成该bean名称(此注解相当于xml配置文件中的bean配置)。
@Configuration
public class MockConfiguration{
@Bean
public DependencyService dependencyService(){
return new DependencyServiceImpl();
}
}
@ComponentScan
扫描指定注解的类注册到IOC容器中,会被自动装配的注解包括@Controller、@Service、@Component、@Repository等等?(相对应的XML配置就是<context:component-scan/>)
@ComponentScan(value="com.maple.learn",
excludeFilters = {@ComponentScan.Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class)},
includeFilters = {@ComponentScan.Filter(type=FilterType.ANNOTATION,classes={Controller.class})}
)
public class SampleClass{
……
注意:类上有@SpringBootApplication注解的包及其子包都会扫描 所以当我们配置了@Controller后,并没有配置扫描包,一样能扫描到。
|