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

如何进行网站建设和推广/seowhy培训

如何进行网站建设和推广,seowhy培训,网站建设 流程图,好的设计师网站有哪些前言 当创建一个Spring Boot应用时,主类上会有SpringBootApplication注解,这个注解其实是一个组合注解,里面包含了EnableAutoConfiguration。而EnableAutoConfiguration的作用是启用自动配置,它会去扫描classpath下的META-INF/spr…

前言

  当创建一个Spring Boot应用时,主类上会有@SpringBootApplication注解,这个注解其实是一个组合注解,里面包含了@EnableAutoConfiguration。而@EnableAutoConfiguration的作用是启用自动配置,它会去扫描classpath下的META-INF/spring.factories文件,加载里面定义的自动配置类。
  接下来,自动配置类通常带有@Configuration注解,并且使用@Conditional系列注解来控制配置是否生效。比如@ConditionalOnClass检查某个类是否存在,@ConditionalOnProperty检查某个属性是否满足条件。这些条件注解确保了只有在满足特定条件时,相关的配置才会被加载,这样就避免了不必要的Bean被创建。
  然后,自动配置类中会定义各种Bean,这些Bean会根据当前的环境(比如存在的类、配置文件中的属性等)来决定是否被实例化。例如,如果classpath下有H2数据库的驱动,Spring Boot就会自动配置一个内存数据库的数据源。
  如果要深究自动配置流程是怎么样的。当应用启动时,Spring Boot会加载所有自动配置类,然后根据条件判断是否应用这些配置。这个过程是在Spring容器的refresh阶段完成的,具体可能涉及到BeanFactoryPostProcessor的实现,比如AutoConfigurationImportSelector,它会处理自动配置类的加载和筛选。
  检查是否需要装配该类,比如定义了一个数据源的Bean,那么自动配置的数据源就不会生效,因为Spring Boot的自动配置通常带有@ConditionalOnMissingBean注解,当检测到已经有该Bean存在时,就不会再创建。
  此外,自动配置并不是完全不可控的,而是可以通过配置文件(如application.properties)或者自定义配置类来进行调整。
  总之,Spring Boot 的自动配置(Auto-configuration)是其核心特性之一,通过智能化的默认配置大幅简化了 Spring 应用的搭建过程。其原理基于 条件化配置 和 约定优于配置 的设计思想.。

一、自动配置的核心组件

  1. @SpringBootApplication 注解
  • 该注解是 Spring Boot 应用的入口,本质是一个组合注解:
@SpringBootConfiguration
@EnableAutoConfiguration  // 启用自动配置
@ComponentScan
public @interface SpringBootApplication {}
  • @EnableAutoConfiguration:触发自动配置逻辑的关键注解。
  1. spring.factories 文件
  • 文件位置:META-INF/spring.factories(位于 Spring Boot Starter 的 JAR 包中)。
  • 内容:定义所有自动配置类的全限定名(AutoConfiguration 类列表)。
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration,\
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
...
  1. 条件注解(Conditional Annotations)
  • Spring Boot 通过条件注解判断是否启用某个配置类或 Bean,常见的条件注解包括:
    • @ConditionalOnClass:当类路径存在指定类时生效。
    • @ConditionalOnMissingBean:当容器中不存在指定 Bean 时生效。
    • @ConditionalOnProperty:当配置文件中存在指定属性时生效。
    • @ConditionalOnWebApplication:当应用是 Web 应用时生效。

二、自动配置的执行流程

  1. 启动阶段
  • 应用启动时,SpringApplication.run() 会初始化 Spring 容器,并触发 @EnableAutoConfiguration 逻辑。
  1. 加载自动配置类
  • 步骤 1:通过 SpringFactoriesLoader 加载所有 META-INF/spring.factories 中定义的自动配置类。
  • 步骤 2:过滤并排序这些配置类(例如排除 exclude 指定的类)。
  1. 条件化评估
  • 对每个自动配置类进行条件检查(如 @ConditionalOnClass),只有满足条件的配置类才会被加载。
  • 示例:DataSourceAutoConfiguration 仅在类路径存在 javax.sql.DataSource 时生效。
  1. 注册 Bean
  • 通过 @Bean 方法或 @Import 导入的配置类,向容器注册 Bean。
  • 示例:WebMvcAutoConfiguration 自动配置 Spring MVC 的 DispatcherServlet、视图解析器等组件。

三、自动配置的实现示例(以 DataSource 为例)

  1. 自动配置类
@Configuration
@ConditionalOnClass({DataSource.class, EmbeddedDatabaseType.class})
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceAutoConfiguration {@Bean@ConditionalOnMissingBeanpublic DataSource dataSource(DataSourceProperties properties) {// 根据配置创建 DataSource(如 HikariCP、Tomcat 连接池等)return properties.initializeDataSourceBuilder().build();}
}
  1. 条件注解的作用
  • @ConditionalOnClass:确保类路径存在 DataSource 和数据库驱动(如 H2、MySQL)。
  • @ConditionalOnMissingBean:如果用户未手动定义 DataSource Bean,则自动创建默认的 DataSource。
  1. 配置属性绑定
  • 通过 @EnableConfigurationProperties 将 application.properties 中的配置(如 spring.datasource.url)绑定到 DataSourceProperties 对象。

四、自定义和覆盖自动配置

  1. 覆盖默认配置
  • 方式 1:在 application.properties 中修改配置项(如 spring.datasource.url)。
  • 方式 2:手动定义 Bean(如自定义 DataSource),自动配置将因 @ConditionalOnMissingBean 而跳过。
  1. 排除自动配置类
  • 在启动类上排除特定自动配置:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MyApp { ... }
  1. 自定义 Starter
  • 创建自己的 spring.factories 文件,定义自动配置类。
  • 使用 @Conditional 注解控制配置生效条件。

五、调试自动配置

  1. 查看生效的自动配置类
    • 启动时添加 --debug 参数,控制台将打印所有生效和未生效的自动配置类:

      java -jar myapp.jar --debug
      
  2. 输出示例
============================
CONDITIONS EVALUATION REPORT
============================Positive matches:
-----------------DataSourceAutoConfiguration matched:- @ConditionalOnClass found required classes 'javax.sql.DataSource', 'org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType' (OnClassCondition)Negative matches:
-----------------WebMvcAutoConfiguration:- @ConditionalOnClass did not find required class 'javax.servlet.Servlet' (OnClassCondition)

六、总结

  Spring Boot 自动配置的核心原理:
  约定优于配置:通过预定义的默认配置减少手动设置。
  条件化加载:根据环境(类路径、Bean 是否存在等)动态决定是否启用配置。
  扩展机制:通过 spring.factories 和 Starter 模块支持灵活扩展。
  通过合理利用自动配置,开发者可以快速搭建应用,同时保留高度自定义能力。

http://www.whsansanxincailiao.cn/news/32032182.html

相关文章:

  • 正泰营销云/站长工具 seo综合查询
  • 广东湛江疫情名单/seo少女
  • 百度做网站电话多少钱/网络营销专业的就业方向
  • 门厂家网站建设/发外链的平台有哪些
  • 建设实验教学网站的作用/百度 seo优化作用
  • 品牌手机网站开发/外贸网站推广的方法
  • 互联网黄页是什么/徐州seo代理计费
  • 做一个官方网站多少钱一个/百度收录权重
  • 公务员写作材料网站/品牌营销策略研究
  • 电商网站设计图片素材/网站优化网站
  • 网站建设和网络优化/搜索引擎优化自然排名的优点
  • 不花钱怎么做网站运营/哈尔滨seo关键词排名
  • 公司手机网站制作/怎样优化网络
  • 网站设计与网页制作招聘/十大搜索引擎排行榜
  • 单位网站建设实施方案/免费推广广告链接
  • 哈尔滨专业网站制作设计/个人在百度上发广告怎么发
  • 哈尔滨做设计和网站的公司吗/朋友圈营销广告
  • 政府网站建设的易用性/比较好用的搜索引擎
  • 房产中介做租单用哪个付费网站更好/个人网站建站教程
  • 上海做响应式网站的公司/seo营销怎么做
  • 许昌住房和城乡建设部网站/宁波seo推荐推广平台
  • 济南网络科技有限公司有哪些/武汉网络seo公司
  • 建设银行大冶支行网站/如何做一个营销方案
  • 网站图片滚动效果怎么做/南宁网站快速排名提升
  • 松原做网站公司/百度竞价登录入口
  • 手机网站建设视频/百度下载并安装
  • 交互式网站开发技术包括/百度登录个人中心官网
  • 郑州网站建设到诺然/seo体系百科
  • 如何做网站搜索引擎优化/备案查询站长之家
  • 网站建设公司创意/搜狗登录入口