导图社区 SpringBoot自动装配原理
这是一篇关于SpringBoot自动装配原理的思维导图,从父注解、注解属性两个部分做了非常详细的介绍,有需要的小伙伴快把下图收藏起来吧!
社区模板帮助中心,点此进入>>
安全教育的重要性
个人日常活动安排思维导图
西游记主要人物性格分析
17种头脑风暴法
计算机操作系统思维导图
如何令自己更快乐
头脑风暴法四个原则
思维导图
第二职业规划书
记一篇有颜又有料的笔记-by babe
SpringBoot自动装配原理
@SpringBootApplication
父注解
@Target
ElemetType.Type
该注解修饰的注解可以作用在接口、类、枚举类上
@Retention
RetentionPolicy.RUNTIME
该注解修饰的注解不仅被保存在class文件上,jvm加载class文件之后仍然存在
@Documented
该注解修饰的注解在生成javadoc文档时会将@Documented注解给显示出来
@Inherited
该注解修饰的注解的子类也会修饰该注解
@SpringBootConfiguration
@Configuration
@Component
@Indexed
在项目中使用了@Indexed之后,编译打包的时候会在项目中自动生成META-INT/spring.components文件。 当Spring应用上下文执行ComponentScan扫描时,META-INT/spring.components将会被CandidateComponentsIndexLoader 读取并加载,转换为CandidateComponentsIndex对象,这样的话@ComponentScan不在扫描指定的package,而是读取CandidateComponentsIndex对象,从而达到提升性能的目的。
注解属性
String value() default "";
该值可能指示对逻辑组件名称的建议,在自动检测到的组件的情况下将其转换为 Spring bean。
boolean proxyBeanMethods() default true;
@EnableAutoConfiguration
@AutoConfigurationPackage
@Import
AutoConfigurationPackages.Registrar.class
@Import注解是用来导入配置类或者一些需要前置加载的类,将AutoConfigurationPackages.Registrar.class纳入Spring的管理
该类解析
String[] basePackages() default {};
Class<?>[] basePackageClasses() default {};
AutoConfigurationImportSeletor.class

String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
启用自动配置时可用于覆盖的环境属性。
Class<?>[] exclude() default {};
String[] excludeName() default {};
@ComponentScan
排除特定的自动配置类,以便它们永远不会被应用。
排除特定的自动配置类名称,以便它们永远不会被应用
String[] scanBasePackages() default {};
用于扫描带注释组件的基本包。 使用scanBasePackageClasses作为基于字符串的包名称的类型安全替代方案。
Class<?>[] scanBasePackageClasses() default {};
scanBasePackages类型安全替代方案,用于指定要扫描带注释组件的包。 将扫描指定的每个类的包。 考虑在每个包中创建一个特殊的无操作标记类或接口,除了被此属性引用外,没有其他用途。
Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;
BeanNameGenerator接口本身的默认值表明用于处理此@SpringBootApplication注释的扫描器应使用其继承的 bean 名称生成器,例如默认AnnotationBeanNameGenerator或在引导时提供给应用程序上下文的任何自定义实例
指定是否应该代理@Bean方法以强制执行 bean 生命周期行为,例如,即使在用户代码中直接调用@Bean方法的情况下也返回共享的单例 bean 实例。 此功能需要方法拦截,通过运行时生成的 CGLIB 子类实现,该子类具有诸如配置类及其方法不允许声明final 。 默认值为true ,允许在配置类中进行“豆间引用”,也允许外部调用此配置的@Bean方法,例如从另一个配置类。 如果@Bean ,因为每个特定配置的@Bean方法都是自包含的,并且设计为容器使用的普通工厂方法,请将此标志切换为false以避免 CGLIB 子类处理