full
– 完整配置类- 使用
@Configuration
注解的类
- 使用
lite
– 简化配置类- 没有使用
@Configuration
注解,但是- 使用了注解
@Component
或者注解@Component
变种的类 - 或者使用了注解
@ComponentScan
的类 - 或者使用了注解
@Import
的类 - 或者使用了注解
@ImportResource
的类 - 或者某个配置类含有使用
@Bean
注解的方法的嵌套子类
比如某个配置类(
full
/lite
都可以)的嵌套子类自身不使用@Configuration
,但含有使用@Bean
注解的方法 - 使用了注解
- 一定不会是接口
- 没有使用
以上信息根据Spring
源代码分析获得,代码可参考:
ConfigurationClassUtils#isFullConfigurationCandidate
–full
判断实现逻辑ConfigurationClassUtils#isLiteConfigurationCandidate
–lite
判断实现逻辑ConfigurationClassUtils#checkConfigurationClassCandidate
– 以上逻辑的组合使用ConfigurationClassParser#doProcessConfigurationClass
– 以上逻辑的业务应用
举例1 :
//使用注解@Configuration
@Configuration
public class MapConfig {
// 没有使用注解@Configuration,但含有@Bean注解方法
// 没有使用 static
public class ModuleAConfig {
@Bean
Map poiLocations() {
// ...
}
}
// 没有使用注解@Configuration,但含有@Bean注解方法
// 使用 static
private static class ModuleBConfig {
@Bean
Map namedPOIs() {
// ...
}
}
//使用注解@Configuration
@Configuration
private static class ModuleCConfig {
@Bean
Map namedRegions() {
// ...
}
}
}
在上面的例子中 :
MapConfig
是完整配置类ModuleAConfig
是简化配置类ModuleBConfig
简化配置类ModuleCConfig
是完整配置类