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

php网站的安全优势seo咨询服务价格

php网站的安全优势,seo咨询服务价格,2023年8月上海疫情爆发,html代码表示目录 一 自动配置 1:数据源的手动配置 1:SpringBoot的自动配置 二 自动配置的完整流程:(底层) 1. 场景化依赖与Starter机制 2. 主程序入口与注解驱动 3. 自动配置类的加载与筛选 4. 自动配置类的实现逻辑 5. 自动配置的触发与执行流…

目录

一 自动配置

1:数据源的手动配置

1:SpringBoot的自动配置

二 自动配置的完整流程:(底层)

1. 场景化依赖与Starter机制

2. 主程序入口与注解驱动

3. 自动配置类的加载与筛选

4. 自动配置类的实现逻辑

5. 自动配置的触发与执行流程

6. 自动配置的优势

补充:关键配置文件与调试技巧

三 自动配置类的实现:

1. 启动类与核心注解

2. 加载自动配置类

3. 条件化装配

4. 配置属性绑定

5. 组件创建与注入

6. 结果整合

核心优势


概念

SpringBoot帮我们简单快速的创建一个独立的、生产级别的Spring应用;

1 核心特性

  1. 简化配置

    • 自动配置(Auto-Configuration):根据类路径中的依赖自动配置 Spring 应用。例如,引入 spring-boot-starter-data-jpa 后,Spring Boot 会自动配置数据源和 JPA 相关 Bean。

    • 外部化配置:支持通过 application.properties/application.yml、环境变量或命令行参数灵活配置应用,并支持多环境(如 dev/prod)配置。

  2. 内嵌服务器

    • 默认集成 Tomcat,也可选择 Jetty 或 Undertow。无需部署 WAR 包,直接打包为可执行 JAR 文件,通过 java -jar 命令运行。

  3. 起步依赖(Starter Dependencies)

    • 提供预定义的依赖集合(如 spring-boot-starter-web 包含 Spring MVC、Tomcat 等),简化 Maven/Gradle 依赖管理,避免版本冲突。

  4. 生产就绪功能(Spring Boot Actuator)

    • 提供监控和管理端点(如 /health/metrics),支持健康检查、性能指标收集和日志管理,便于运维。

  5. 开发者工具(DevTools)

    • 支持热部署、自动重启和实时重新加载,提升开发效率。

  6. 集成测试支持

    • 提供 @SpringBootTest 进行全栈集成测试,以及 @WebMvcTest@DataJpaTest 等切片测试注解,简化测试流程。

一 自动配置

手动配置大于自动配置 

概念:基于项目的依赖和类路径中的内容,自动配置 Spring 应用所需的组件

1:数据源的手动配置

<!--     导入druid的依赖   --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency>

数据源配置(人为手动的引用配置文件当中的信息)

package org.example.springmvc.config;import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class DataSourceConfig {@Value("${spring.datasource.username}")private String username;@Value("${spring.datasource.password}")private String password;@Value("${spring.datasource.driver-class-name}")private String driverClassName;@Value("${spring.datasource.url}")private String url;@Beanpublic DruidDataSource dataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setUsername(username);dataSource.setPassword(password);dataSource.setDriverClassName(driverClassName);dataSource.setUrl(url);return dataSource;}}

1:SpringBoot的自动配置

当项目引入 Spring Boot 的数据库相关依赖(如 spring-boot-starter-jdbc 或 spring-boot-starter-data-jpa)时,Spring Boot 的自动配置机制会尝试根据以下逻辑处理数据库连接

  • 前提条件
    必须满足以下两点,Spring Boot 才会自动配置默认数据源(如 HikariCP):

    1. 项目中存在数据库驱动依赖(如 mysql-connector-java)。

    2. 配置文件中提供了 数据库连接四要素(URL、用户名、密码、驱动类名)

  • 默认行为:

        Spring Boot 会基于上述配置自动创建数据源(默认使用 HikariCP),无需手动编写 @Bean 配置类。

配置文件当中指定配置类型

这种不直接指定的默认Hikari

如果在配置文件当中指定

会使用你指定的类型

二 自动配置的完整流程:

关于Spring Boot的自动配置机制,我的理解可以总结为以下几个核心要点:


1. 场景化依赖与Starter机制

  • 场景选择:通过选择不同的Starter依赖(如spring-boot-starter-web),Spring Boot会自动引入该场景所需的全部依赖库(如Tomcat、Spring MVC、Jackson等)。这相当于声明了项目的功能需求,例如Web开发需要内嵌服务器和HTTP处理能力。

  • 依赖传递:所有Starter都继承自spring-boot-starter,它提供了核心库(如spring-core)、日志框架(SLF4J + Logback)以及自动配置的基础支持(spring-boot-autoconfigure)。


2. 主程序入口与注解驱动

  • @SpringBootApplication:这是组合注解,包含三个关键功能:

    1. @SpringBootConfiguration:标识当前类为配置类,等价于@Configuration,用于定义Bean。

    2. @EnableAutoConfiguration:启用自动配置的核心开关,触发AutoConfigurationImportSelector加载自动配置类。

    3. @ComponentScan:自动扫描当前包及其子包下的组件(@Component@Service等),将它们注册为Bean。


3. 自动配置类的加载与筛选

  • AutoConfigurationImportSelector:该类负责加载所有预定义的自动配置类。具体流程如下:

    1. 定位配置文件:从所有依赖的JAR包中查找META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件。

    2. 批量导入配置类:读取文件中列出的全限定类名(如WebMvcAutoConfigurationDataSourceAutoConfiguration等)。

    3. 条件化筛选:每个自动配置类通过@Conditional系列注解(如@ConditionalOnClass@ConditionalOnMissingBean)判断是否生效。例如:

      • @ConditionalOnClass(DataSource.class):仅在类路径存在DataSource类时生效。

      • @ConditionalOnMissingBean(DataSource.class):仅在用户未手动定义DataSource Bean时生效。


4. 自动配置类的实现逻辑

  • 配置类结构:每个自动配置类(如DataSourceAutoConfiguration)通过@Bean方法定义组件,并配合条件注解控制是否生效。

  • 默认值设置:自动配置类会读取application.properties中的配置项(如spring.datasource.url),若用户未配置则使用合理的默认值。

  • 优先级规则:用户手动定义的Bean优先级高于自动配置类,实现灵活覆盖。


5. 自动配置的触发与执行流程

  1. 项目启动:执行主类的main方法,初始化Spring上下文。

  2. 加载自动配置类:通过AutoConfigurationImportSelector加载所有符合条件的配置类。

  3. 条件化装配:依次执行每个自动配置类,根据条件注解决定是否创建Bean。

  4. Bean注册:最终将所有符合条件的Bean注册到IoC容器中,完成依赖注入。


6. 自动配置的优势

  • 减少样板代码:无需手动配置DispatcherServletDataSource等通用组件。

  • 按需加载:仅加载与当前场景相关的配置类(如未引入Redis依赖,则相关配置类不生效)。

  • 高扩展性:用户可通过自定义Bean或配置文件覆盖默认行为。


补充:关键配置文件与调试技巧

  • 自动配置列表AutoConfiguration.imports文件中列出了所有自动配置类,位置在spring-boot-autoconfigure包的META-INF/spring目录下。

  • 调试日志:启动时添加-Ddebug参数,控制台会输出所有自动配置类的生效与排除原因,便于排查问题。

三句话概括:

  • 1 场景启动器一导入,就从META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports中导入一大堆自动配置类(类XxxAutoConfiguration)
  • 2 这些xxxAutoConfiguration基于@conditional条件注解导入一堆组件
  • 3 业务就可以使用这些组件了

类路径下的文件

三 自动配置类的实现:


1. 启动类与核心注解

项目启动时,主类上的 @SpringBootApplication 注解触发自动配置。该注解整合了三个核心功能:

  • 配置类声明:标记主类为Spring的配置类。

  • 组件扫描:自动探测并注册当前包下的组件(如Service、Controller)。

  • 启用自动配置:激活Spring Boot的自动配置机制。


2. 加载自动配置类

  • 自动配置列表:Spring Boot内置了上百个自动配置类(如DataSourceAutoConfigurationWebMvcAutoConfiguration),这些类定义在META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中。

  • 按需加载:通过AutoConfigurationImportSelector筛选并加载这些配置类,但并非全部生效,需通过条件判断。


3. 条件化装配

每个自动配置类通过 @Conditional系列注解 控制是否生效,例如:

  • 存在类时生效:如检测到类路径中有DataSource类,才加载数据源配置。

  • 无自定义Bean时生效:若用户未手动定义某个Bean(如DataSource),才使用默认配置。

  • 配置属性匹配时生效:如根据spring.datasource.url是否存在决定是否初始化数据库连接。


4. 配置属性绑定

  • 属性映射:通过@ConfigurationProperties将配置文件(如application.properties)中的属性(如spring.datasource.url)绑定到Java对象。

  • 动态适配:自动配置类读取这些属性值,用于初始化组件(如数据库连接池的URL、用户名)。


5. 组件创建与注入

  • 默认Bean创建:自动配置类通过内部逻辑创建标准化的Bean(如DataSourceDispatcherServlet)。

  • 用户自定义优先:若用户手动定义了同名Bean(如自己写的@Bean DataSource),则覆盖默认实现。


6. 结果整合

所有生效的自动配置类共同作用,最终完成以下工作:

  • 依赖管理:根据项目引入的Starter(如spring-boot-starter-web)按需加载功能模块。

  • 组件装配:自动注册Bean到Spring容器,如内嵌Tomcat、JSON解析器、数据库连接池等。

  • 环境适配:结合配置文件中的参数,动态调整组件行为(如连接池大小、超时时间)。


核心优势

  • 开箱即用:无需手动配置常见功能(如Web服务器、数据库连接)。

  • 按需加载:仅初始化与当前依赖和配置匹配的功能模块,避免资源浪费。

  • 灵活扩展:用户可通过配置文件或自定义Bean轻松覆盖默认行为。

两句话:

  • 1 把属性类和配置列进行绑定
  • 2 组件要用的所有属性放到容器中

http://www.dtcms.com/wzjs/121850.html

相关文章:

  • 免费下载网站有哪些seo全称是什么意思
  • 简约型网站网站流量分析工具
  • 唐山医疗网站建设网络推广合作协议
  • 如何做微信网站建设企业网站设计欣赏
  • 如何发布网站到域名福州seo按天付费
  • 高端网站制作免费做网站软件
  • 几百块钱建网站亚马逊跨境电商
  • 免费搭建单页网站东莞网站排名提升
  • 怎样用一台电脑做代理 让别的电脑通过代理上几个网站网络营销方案策划书
  • 网站开发备案微信朋友圈推广平台
  • 可以免费下载ppt模板的网站山东百度推广总代理
  • 网站页脚内容网站品牌推广策略
  • 做网站的公司哪里好爱站工具包怎么使用
  • 网站建设那家好网络推广文案怎么写
  • 个人建设网站流程图优化网站关键词优化
  • 网站上传后怎么打开sem竞价托管多少钱
  • 网站怎么做图片动态图片不显示了厦门网络营销推广
  • 建站工具哪个最好腾讯企点
  • 外贸专业网站的公司软文网站模板
  • 安康免费做网站公司专门代写平台
  • 网上免费发布信息平台惠州seo收费
  • 空压机网站开发公司资源搜索
  • 昆明做网站魄罗科技关键词快速上首页排名
  • 做直播网站需要什么百度seo快速排名优化
  • 德江网站建设兰州seo网站建设
  • 易语言做网站登录器新闻摘抄
  • 海天建设集团公司网站ciliba磁力搜索引擎
  • 珠海十大网站建设公司百度推广首页
  • 有哪些网站可以做按摩广告网络营销师资格证报名
  • 做销售如何在网站上搜集资料软文代发