概述
前面我们了解了spring框架中的@Configuration配置和@ConfigurationProperties加载外部配置注解的使用。那么在Spring boot项目中,应用上下文又是如何找到那么多配置并加载初始化好的呢?
@SpringBootApplication
spring boot项目推荐大家在主类中标注@SpringBootApplication这个注解,我们来看看它的源码:
@Target
(ElementType.
TYPE
)
@Retention
(RetentionPolicy.
RUNTIME
)
@Documented
@Inherited
@SpringBootConfiguration //配置
@EnableAutoConfiguration //启用自动配置
//组件扫描
@ComponentScan
(excludeFilters =
@Filter
(type = FilterType.
CUSTOM
, classes = TypeExcludeFilter.
class
))
public
@
interface
SpringBootApplication
{
//需要排除的自动配置类
Class<?>[] exclude()
default
{};
//需要排除的自动配置类类名
String[] excludeName()
default
{};
//扫描包路径
@AliasFor
(annotation =
ComponentScan
.
class
, attribute =
"basePackages"
)
String[] scanBasePackages()
default
{};
//扫描包路径类
@AliasFor
(annotation =
ComponentScan
.
class
, attribute =
"basePackageClasses"
)
Class<?>[] scanBasePackageClasses()
default
{};
}
@EnableAutoConfiguration
我们发现一个配置开关注解,名字叫@EnableAutoConfiguration,看看它的源码:
@Target
(ElementType.
TYPE
)
@Retention
(RetentionPolicy.
RUNTIME</