当前位置: 首页 > wzjs >正文

做质粒图谱的网站关于wordpress

做质粒图谱的网站,关于wordpress,商丘网站建设网站推广,gta5网站建设中Spring EnableAutoConfiguration 注解执行过程详解 核心流程 触发自动配置:通过 EnableAutoConfiguration 注解开启自动配置。加载配置类:根据 META-INF/spring.factories 文件加载默认的自动配置类。条件判断:每个自动配置类通过 Condition…

Spring @EnableAutoConfiguration 注解执行过程详解


核心流程
  1. 触发自动配置:通过 @EnableAutoConfiguration 注解开启自动配置。
  2. 加载配置类:根据 META-INF/spring.factories 文件加载默认的自动配置类。
  3. 条件判断:每个自动配置类通过 @Conditional 注解判断是否生效。
  4. Bean 注册:符合条件的配置类会注册对应的 Bean。

代码示例
1. 主启动类(触发自动配置)
// 主类添加 @SpringBootApplication 注解(包含 @EnableAutoConfiguration)
@SpringBootApplication // 等效于 @Configuration + @EnableAutoConfiguration + @ComponentScan
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}
2. 自动配置类示例(模拟 Spring Boot 内部机制)
// 1. 自动配置类(模拟 spring-boot-autoconfigure 中的配置)
@Configuration
@ConditionalOnClass(DataSource.class) // 仅当存在 DataSource 类时生效
@ConditionalOnProperty(prefix = "app", name = "enabled", havingValue = "true") // 需配置 app.enabled=true
public class MyAutoConfiguration {@Beanpublic MyBean myBean() {return new MyBean();}
}// 2. 自定义条件类(扩展条件判断)
public class CustomCondition implements Condition {@Overridepublic boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {// 自定义条件逻辑(例如检查环境变量)return System.getenv("CUSTOM_ENV") != null;}
}
3. 配置文件(application.properties
# 激活自动配置
app.enabled=true
4. 测试类
@SpringBootTest
public class DemoApplicationTests {@Autowiredprivate MyBean myBean;@Testpublic void testAutoConfiguration() {assertNotNull(myBean); // 验证 Bean 是否被正确注册}
}

执行过程分步说明
步骤 1:注解触发
  • @SpringBootApplication 内部包含 @EnableAutoConfiguration
  • @EnableAutoConfiguration 通过 @Import(AutoConfigurationImportSelector.class) 引入配置选择器。
步骤 2:加载配置类
  • AutoConfigurationImportSelector 读取 META-INF/spring.factories 文件:

    # spring.factories(示例内容)
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    com.example.MyAutoConfiguration,\
    org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
    
  • 该文件列出了所有需要加载的自动配置类。

步骤 3:条件判断
  • 每个配置类通过 @Conditional 注解判断是否生效:
    • @ConditionalOnClass(DataSource.class):检查类路径是否存在 DataSource 类。
    • @ConditionalOnProperty:检查配置文件是否设置 app.enabled=true
    • 自定义条件 @Conditional:如 @Conditional(CustomCondition.class)
步骤 4:Bean 注册
  • 满足条件的配置类会执行 @Bean 方法,将 Bean 注册到 Spring 容器。

关键类与注解说明
组件作用示例代码
@EnableAutoConfiguration触发自动配置,加载 spring.factories 中的配置类。@SpringBootApplication(包含该注解)
spring.factories配置文件,列出所有需要加载的自动配置类。EnableAutoConfiguration=com.example.MyAutoConfiguration
@Conditional 注解条件判断注解,决定配置类是否生效。@ConditionalOnClass, @ConditionalOnProperty, @ConditionalOnMissingBean
AutoConfigurationImportSelector核心选择器,解析 spring.factories 并过滤符合条件的配置类。ImportSelector 接口实现类
Condition 接口自定义条件判断逻辑(如环境变量、类存在性等)。CustomCondition implements Condition

执行流程图
启动类 @SpringBootApplication
├─ 触发 @EnableAutoConfiguration
│  ├─ 调用 AutoConfigurationImportSelector
│  │  ├─ 读取 META-INF/spring.factories
│  │  │  └─ 加载所有配置类(如 MyAutoConfiguration)
│  │  ├─ 遍历配置类,执行条件判断(@Conditional)
│  │  │  ├─ 若条件满足 → 注册 Bean
│  │  │  └─ 否则 → 跳过
│  │  └─ 返回符合条件的配置类集合
│  └─ 将配置类注册到 Spring 容器
└─ 完成自动配置

总结表格
阶段关键步骤核心组件/注解
触发阶段通过 @EnableAutoConfiguration 启动自动配置流程。@SpringBootApplication, @EnableAutoConfiguration
配置加载阶段META-INF/spring.factories 文件加载所有配置类。spring.factories, AutoConfigurationImportSelector
条件判断阶段根据 @Conditional 注解过滤符合条件的配置类。@ConditionalOnClass, @ConditionalOnProperty, @Conditional
Bean 注册阶段将符合条件的配置类中的 Bean 注册到 Spring 容器。@Configuration, @Bean

关键点补充
  1. spring.factories 位置:通常位于依赖库的 META-INF 目录下(如 spring-boot-autoconfigure 依赖)。
  2. 条件注解组合:可组合多个 @Conditional 注解,如 @ConditionalOnClass + @ConditionalOnProperty
  3. 禁用自动配置:通过 @EnableAutoConfiguration(exclude = {DisabledConfig.class}) 排除特定配置。

文章转载自:

http://qPtgOCyE.yxmgq.cn
http://9Fc8m6Ca.yxmgq.cn
http://eAJFpJGp.yxmgq.cn
http://j1hCHsku.yxmgq.cn
http://2CWdwKD0.yxmgq.cn
http://jliz9KKv.yxmgq.cn
http://j7slGnhY.yxmgq.cn
http://ga7eIhes.yxmgq.cn
http://OrGitKr6.yxmgq.cn
http://KGzdlDoC.yxmgq.cn
http://uoGhxpCW.yxmgq.cn
http://EgNM1cxK.yxmgq.cn
http://C4hbt9te.yxmgq.cn
http://WtaE64PS.yxmgq.cn
http://qf6loLRF.yxmgq.cn
http://izWruQ7I.yxmgq.cn
http://hL3Hs4mL.yxmgq.cn
http://aFKu6OxZ.yxmgq.cn
http://yY1gTYqo.yxmgq.cn
http://o6WZ0KxS.yxmgq.cn
http://ueZW9DUB.yxmgq.cn
http://aIvpIL6n.yxmgq.cn
http://kSofUByk.yxmgq.cn
http://Ewdyb5yj.yxmgq.cn
http://zhKpt3dZ.yxmgq.cn
http://OHuCT1ip.yxmgq.cn
http://HWeE1nRK.yxmgq.cn
http://uMMyuLU8.yxmgq.cn
http://g6qzI6qk.yxmgq.cn
http://sDyDLzW6.yxmgq.cn
http://www.dtcms.com/wzjs/619373.html

相关文章:

  • 如何免费建立一个自己的网站企业网站建设市场前景
  • 网站设计实例教程wordpress 页面排序
  • vs网站开发 百度文库班级主页网页设计模板
  • 上海网站优化排名全国物流网站有哪些平台
  • 网站介绍词快要到期的域名网站
  • 做网站自适应框架锦州网站开发建设
  • 乾县交通建设网站做企业网站有什么工作内容
  • 望京 网站开发建网站深
  • 河北城乡建设厅网站显示不全wordpress按分类显示图片
  • 个人网站包括哪些内容网页开发工具软件
  • 山东英文网站建站wordpress自定义页脚
  • 做网站哪间好拖曳式网站建设
  • 哪里找做网站的百度seo网站排名
  • 永德网站建设精美的商城网站介绍
  • 江苏建设厅网站电话多少seo查询整站
  • 企业网站模板素材网站建设到维护
  • c 网站开发流程eclipse网站开发实例
  • 九酷为什么做福音网站企业展厅布展设计
  • html网站标题怎么做的建网站找哪里
  • 互动网站如何做如何自己创造游戏
  • php网站制作软件自己建设网站模版
  • 网站建设的小故事网络设计目标及设计思想
  • 企业营销网站模板电商网站开发前景
  • 四川城乡和建设厅网站长春网站推广优化公司
  • 响应式网站 手机版目前什么编码做网站最好
  • 厦门网络建站公司wordpress 柒比贰主题
  • 怎么快速做网站排名免费的行情软件网站下载
  • seo竞争对手网站分析宣传册设计与制作模板免费
  • ps做网站字号大小做效果图展板网站
  • 怎么做网站图片seo电子商务网站建设系统