springboot
2022-08-08 15:31:26 10 举报
AI智能生成
spring boot启动 组件加载过程
作者其他创作
大纲/内容
@SpringBootConfiguration
abstract class AutoConfigurationPackages {public static void font color=\"#2196f3\
@Import({Registrar.class})
@AutoConfigurationPackage
abstract class SpringFactoriesLoader{public static final String FACTORIES_RESOURCE_LOCATION = \"META-INF/spring.factories\";public static List<String> font color=\"#f44336\
AutoConfigurationImportSelector{public String[] selectImports(AnnotationMetadata annotationMetadata) { if (!this.isEnabled(annotationMetadata)) { return NO_IMPORTS; } else { AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader.loadMetadata(this.beanClassLoader); AnnotationAttributes attributes = this.getAttributes(annotationMetadata); List<String> configurations = this.font color=\"#f44336\
@Import({AutoConfigurationImportSelector.class})
@EnableAutoConfiguration
@ComponentScan
@SpringBootApplication
如果@Bean方法在使用@Configuration注解的类中声明时称之为Full @Configuration
@Bean方法会被CGLIB所代理
被CGLIB的方法是不能被声明为private和final,因为CGLIB是通过生成子类来实现代理的,private和final方法是不能被子类Override的,也就是说,Full @Configuration模式下,@Bean的方法是不能不能被声明为private和final,不然在启动时Spring会直接报错
Full @Configuration
当@Bean方法在没有使用@Configuration注解的类中声明时称之为lite @Bean mode例如在@Component的类中使用@Bean
@Bean方法不会被CGLIB代理
lite @Bean mode
springboot
0 条评论
回复 删除
下一页