寿光做网站的公司,wordpress网站后缀,微信小程序制作公司,网站建设 三牛目录 : 1.SpringBoot的“介绍”SpringBoot”概述” #xff1a;SpringBoot”简介“SpringBoot的“优点” 2. SpringBoot入门程序环境准备使用 “Maven”方式构建SpringBoot 项目使用“Spring Initializr”方式构建Spring Boot 项目 3. “单元测试” 和“热部署”单元测试热部署… 目录 : 1.SpringBoot的“介绍”SpringBoot”概述” SpringBoot”简介“SpringBoot的“优点” 2. SpringBoot入门程序环境准备使用 “Maven”方式构建SpringBoot 项目使用“Spring Initializr”方式构建Spring Boot 项目 3. “单元测试” 和“热部署”单元测试热部署 4. Spring Boot”原理分析”4.1Spring Boot”依赖管理“spring-boot-starter-parent 依赖spring-boot-starter-web 依赖 Spring Boot自动配置SpringBootConfigurationEnableAutoConfiguration 作者简介 一只大皮卡丘计算机专业学生正在努力学习、努力敲代码中! 让我们一起继续努力学习 该文章参考学习教材为 《Spring Boot企业级开发教程》 黑马程序员 / 编著 文章以课本知识点 代码为主线结合自己看书学习过程中的理解和感悟 最终成就了该文章 文章用于本人学习使用 同时希望能帮助大家。 欢迎大家点赞 收藏⭐ 关注哦 侵权可联系我进行删除如果雷同纯属巧合
1.SpringBoot的“介绍”
SpringBoot”概述” 随着互联网的兴起Spring 势如破竹地占据了Java领域“轻量级”开发的王者之位。随着 Java语言的发展以及市场开发的需求Spring推陈出新推出了 全新的Spring Boot 框架。Spring Boot 是 Spring家族 的一个 子项目其 设计初衷是为了 简化Spring配置从而让用户可以轻松构建独立运行的程序并极大提高开发率。 SpringBoot”简介“ 在 SpringBoot框架出现之前JavaEE开发最常用的框架是SpringSpring框架开始于2003年它是由罗德·约翰逊(Rod Johnson)创建的一个 轻量级开源框架。Spring框架是为了 解决企业应用开发的复杂性而创建 的它的出现使得开发者无须开发重量级的Enterprise JavaBean( EJB )而是通过 控制反转(IOC) 和 面向切面编程(AOP) 的思想进行更轻松的企业应用开发取代了 EJB 臃肿、低效的开发模式。虽然Spring 框架是轻量级的但 Spring的配置却是重量级的。Spring 的早期版本专注于 XML配置开发一个程序需要 配置各种XML 配置文件 。为了简化开发在Spring 2.x版本开始 引入少量的注解 : Component、Service 等。由于支持的注解不是很多且功能尚不完善所以只能辅助使用。随着 实际生产中敏捷开发的需要以及Spring 注解的大量出现和功能改进到了 Spring 4.x版本基本可以脱离XML配置文件进行项目开发多数开发者也逐渐感受到了基于注解开发的便利因此在Spring 中使用注解开发逐渐占据了主流地位。与此同时Pivotal 团队在原有Spring框架的基础上通过注解的方式进一步简化了Spring 框架的使用并基于Spring框架开发了全新的 SpringBoot框架于 2014 年4月正式推出了 SpringBoot1.0 版本同时在 2018 年3月又推出了 Spring Boot 2.0 版本。Spring Boot 2.x 版本在Spring Boot 1.x版本的基础上进行了诸多功能的改进和扩展同时进行了大量的代码重构所以选择合适的版也是非常重要的。 Spring Boot 3.0 在 2022年 11月24日正式发布 。SpringBoot框架本身 并 不提供Spring 框架的核心特性以及扩展功能只是用于 快速、敏捷地开发新一代基于 Spring 框架的应用并且在开发过程中大量使用“约定优先配置”( convention over configuration )的思想来 摆脱 Spring 框架中各种复杂的手动配置同时衍生出了 Java Config ( 取代传统XML配置文件的Java 配置类)这种优秀的配置方式。也就是说 Spring Boot 并不是替代 Spring 框架 的 解决方案而是和 Spring框架紧密结合 用于 提升Spring开发者体验 的 工具同时Spring Boot 还集成了大量常用的 第三方库配置 ( 例如Jackson、JDBC、Redis、Mail 等)。使用 Spring Boot 开发程序时几乎是 开箱即用 (out-of-the-box )大部分 Spring Boot 应用只需少量配置就能完成相应的功能这一特性进一步 促使开发者专注于业务逻辑 的 实现。而Spring Boot框架的出现恰好完美地 解决了怎么快速、便捷地构建一个准生产环境的Spring应用 这些问题同时其内部还 简化了许多常用 的 第三方库配置使得微服务开发更加便利。 SpringBoot的“优点” 相较于传统的 Spring 框架Spring Boot 框架 具有以下 优点 : 可快速构建独立的 Spring 应用 : Spring Boot 是一个依靠大量注解 实现 自动化配置的全新框架。在构建 Spring 应用时我们 添加 相应的场景 依赖 Spring Boot 就会根据添加的场景依赖 自动进行配置在 无须额外手动添加配置 的情况下快速构建出一个独立的Spring 应用。 直接嵌入Tomcat、Jetty 和Undertow服务器 ( 无须部署WAR文件 无需手动打包) 传统的 Spring 应用部署时通常会将应用打成WAR 包形式并部署到Tomcat、Jetty 或Undertow服务器 ( 传统Spring项目要手动打包而SpringBoot开发不需要手动打包 )中。SpringBoot 框架 内嵌 了Tomcat、Jetty 和 Undertow服务器 SpringBoot会自动将项目打包 (不用手动打包)并在项目运行时部署到服务器中。 通过 “依赖启动器” 简化构建配置 : 在SpringBoot 项目构建过程中无须准备各种独立的JAR 文件只需在构建项目时根据开发场景需求选择对应的 依赖启动器“starter”在引入的依赖启动器“starter”内部已经包含了对应开发场景所需的依赖并会自动下载和拉取相关JAR包。 例如在Web 开发时只需在构建项目时选择对应的 Web场景依赖 启动器 spring-boot-starter-webSpring Boot项目便会 自动导入spring-webmvc、spring-web、spring-boot-starter-tomcat等子依赖并自动下载和获取 Web 开发需要的相关JAR 包。 自动化配置 Spring和第三方库 : SpringBoot 充分考虑到与传统Spring 框架以及其他第三方库融合的场景在提供了各种 场景依赖启动器 的基础上内部还默认 提供了各种 自动化配置类( 例如RedisAuto Configuration )。使用 SpringBoot开发项目时一旦 引入了某个场景的依赖启动器SpringBoot内部提供的 默认自动化配置类就会生效开发者无须手动在配置文件中进行相关配置 ( 除非开发者需要更改默认配置)从而极大减少了开发人员的工作量提高了程序的开发效率。 提供生产就绪功能 : SpringBoot 提供了一些 用于生产环境运行时的特性例如 指标、监控检查 和 外部化配置。其中指标和监控检查可以帮助运维人员在运维期间监控项目运行情况外部化配置可以使运维人员快速、方便地进行外部化配置和部署工作。 极少的代码生成和 极少的XML配置 SpringBoot 框架内部已经实现了与Spring以及其他常用第三方库的整合连接并提供了默认最优化的整合配置使用时基本上不需要额外生成配置代码 和 XML配置文件。在需要自定义配置的情况下SpringBoot 更加提倡使用Java config( Java配置类) 替换传统的XML配置方式这样更加方便查看和管理。 2. SpringBoot入门程序
环境准备 JDK环境 : SpringBoot 2.0及以上版本要求的JDK版本最低是Java 8。项目构建工具 需要使用 Maven 和 Gradle 。如 : SpringBoot 2.1.3 要求 Maven ( 3.3 ) Gradle ( 4.4 )开发工具 : IntelliJIDEA 其在 智能代码助手、重构、各类版本工具( Git、SVN 等)支持等方面的功能非常不错。 使用 “Maven”方式构建SpringBoot 项目 第一步、添加SpringBoot依赖 ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.myh/groupIdartifactIdchapter_01/artifactIdversion1.0-SNAPSHOT/version!-- 依赖启动器的parent依赖 : 统一父类管理依赖 --parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.1.3.RELEASE/version/parentdependencies!-- 引入web开发依赖 (引入“web场景依赖”) --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependencies/project第二步、编写主程序启动类 package com.myh;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** 主程序类 和有操作代码的包和文件要在同一个文件夹下*/
SpringBootApplication //标记该类为主程序启动类
public class ManualChapter01Application {//主程序启动方法public static void main(String[] args) {SpringApplication.run(ManualChapter01Application.class, args);}
}上述代码中SpringBootApplication注解 是Spring Boot 框架的 核心注解该注解用于表明ManualChapter01Application类是Spring boot项目的 主程序启动类。然后调用SpringApplication对象的 .run( )方法启动主程序类。 第三步、创建一个 用于Web访问的Controller package com.myh.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;RestController // 组合注解 : 该注解 ResponseBody Controller
public class HelloController {GetMapping(/hello)public String hello() {return hello Spring Boot;}
}运行 主程序启动类启动成功后此时在浏览器上访问 http://localhost:8080/hello 。 使用“Spring Initializr”方式构建Spring Boot 项目 除了可以使用Maven方式构建SpringBoot 项目外还可以通过 Spring Initializr 方式快速构建 Spring Boot 项目。从本质上说SpringInitializr 是一个 Web 应用它提供了一个基本的项目结构能够帮助我们快速构建一个基础的Spring Boot 项目。 具体的代码文件 Chapter02Application.java : package com.myh.chapter_02;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class Chapter02Application {public static void main(String[] args) {SpringApplication.run(Chapter02Application.class, args);}
}HelloController.java package com.myh.chapter_02.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;RestController // 组合注解 : 该注解 ResponseBody Controller
public class HelloController {GetMapping(/hello2)public String hello() {return hello Spring Boot2;}
}pom.xml : ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.1.3.RELEASE/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.myh/groupIdartifactIdchapter_02/artifactIdversion0.0.1-SNAPSHOT/versionnamechapter_02/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version17/java.version/propertiesdependencies!-- web模块依赖启动器 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- 测试模块启动类 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter/artifactIdversionRELEASE/versionscopetest/scope/dependency/dependencies!-- build--
!-- plugins--
!-- plugin--
!-- groupIdorg.springframework.boot/groupId--
!-- artifactIdspring-boot-maven-plugin/artifactId--
!-- /plugin--
!-- /plugins--
!-- /build--/project运行 主程序启动类启动成功后此时在浏览器上访问 http://localhost:8080/hello2 。 3. “单元测试” 和“热部署”
单元测试 在实际开发中每当 完成一个功能接口或业务方法 的 编写后通常都会借助 单元测试 验证该功能是否正确。Spring Boot 对项目的单元测试提供了很好的支持在使用时需要提前在项目的 pom.xml 文件中添加 spring-boot-starter-test 测试依赖启动器可以通过相关注解 实现单元测试。 !-- 测试依赖启动器 --
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope
/dependency在项目中添 加测试依赖启动器后可以编写SpringBoot项目中相关方法对应的单元测试。如果是使用Spring Initializr 方式搭建的 Spring Boot 项目会在src.test.java 测试目录下自动创建与项目主程序启动类对应的 单元测试类。例如chapter2 项目的 Chapter02ApplicationTests 是自动生成的“单元测试类” : Chapter02Application.java : package com.myh.chapter_02;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class Chapter02Application {public static void main(String[] args) {SpringApplication.run(Chapter02Application.class, args);}
}pom.xml : ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.1.3.RELEASE/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.myh/groupIdartifactIdchapter_02/artifactIdversion0.0.1-SNAPSHOT/versionnamechapter_02/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version17/java.version/propertiesdependencies!-- web模块依赖启动器 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- 测试依赖启动器 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter/artifactIdversionRELEASE/versionscopetest/scope/dependency/dependencies!-- Maven打包工具插件 --buildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project HelloController.java : package com.myh.chapter_02.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;RestController // 组合注解 : 该注解 ResponseBody Controller
public class HelloController {GetMapping(/hello2)public String hello() {return hello Spring Boot(单元测试);}
} Chapter02ApplicationTests.java : package com.myh.chapter_02;import com.myh.chapter_02.controller.HelloController;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;RunWith(SpringRunner.class) //测试运行器并加载SpringBoot测试注解
SpringBootTest //标记为类为单元测试类,并加载项目的上下文环境ApplicationContext
class Chapter02ApplicationTests {Autowiredprivate HelloController helloController;/*** 使用单元测试运行方法*/Test //单元测试方法public void helloController() {String hello helloController.hello();System.out.println(hello);}//自动创建爱你的单元测试方法示例Testvoid contextLoads() {}} 热部署 在开发过程中通常会 对一段业务代码不断地修改测试在 修改之后往往 需要 重启服务有些服务需要加载很久才能启动成功这种不必要的重复操作极大降低了程序开发效率。为此Spring Boot 框架专门提供了进行热部署的依赖启动器用于进行项目热部署而 无须开发人员手动重启项目。 第一步、导入“热部署”依赖启动器 : !-- “热部署”依赖启动器 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactId/dependency 第二步、IDEA工具热部署设置 然后 在任意页面使用 组合键 : Ctrl Shift Alt / 打开 Maintenance选择框选中并打开 Registry页面 如下图所示 第三步、热部署效果测试 启动 chapter01项目通过 浏览器访问“http://localhost:8080/hello”具体如下图所示 页面原始输出 的内容是“hello Spring Boot”。 为了测试配置的热部署是否有效接下来在不关闭当前项目的情况下将 HelloController类 中的 请求处理方法hello( ) 的返回值修改为“ 你好Spring Boot ”并保存查看控制台信息会发现项目能够自动构建和编译说明项目热部署生效。此时关闭重新打开浏览器访问 “http://localhost:8080/hello”此时 效果如下图 所示 4. Spring Boot”原理分析” 传统的Spring 框架实现一个Web 服务需要导入各种依赖JAR包然后 编写对应的XML配置文件等相较而言Spring Boot 显得更加方便、快捷和高效。下面将分别针对 SpringBoot 框架 的 依赖管理、自动配置 和 执行流程 进行 深入分析和讲解。 4.1Spring Boot”依赖管理“ 在Spring Boot 入门程序中项目 pom.xml 文件 有两个核心依赖分别是 spring-boot-starter-parent ( 父项目依赖管理“启动器” ) 和 spring-boot-starter-web ( web场景依赖“启动器” ) spring-boot-starter-parent 依赖 !-- 父项目依赖管理启动器 : Spring Boot父项目依赖管理 --
parent
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-parent/artifactId
version2.1.3.RELEASE/version
/parent 上述代码中将 spring-boot-starter-parent依赖 作为Spring Boot项目的 统一父项目依赖管理 并将项目 版本号统一为2.1.3.RELEASE该版本号根据实际开发需求是可以修改的。 进入并查看spring-boot-starter-parent底层源文件可以发现 spring-boot-starter-parent 的 底层有一个父依赖 : spring-boot-dependencies 核心代码如下 parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.1.3.RELEASE/versionrelativePath../../spring-boot-dependencies/relativePath
/parent
.....继续查看 spring-boot-dependencies 底层源文件核心代码 如下 propertiesactivemq.version5.15.8/activemq.version ...solr.version7.4.0/solr.versionspring.version5.1.5.RELEASE/spring.versionspring-amqp.version2.1.4.RELEASE/spring-amqp.versionspring-batch.version4.1.1.RELEASE/spring-batch.versionspring-cloud-connectors.version2.0.4.RELEASE/spring-cloud-connectors.versionspring-data-releasetrain.versionLovelace-SR5/spring-data-releasetrain.versionspring-framework.version${spring.version}/spring-framework.versionspring-hateoas.version0.25.1.RELEASE/spring-hateoas.versionspring-integration.version5.1.3.RELEASE/spring-integration.versionspring-kafka.version2.2.4.RELEASE/spring-kafka.versionspring-ldap.version2.3.2.RELEASE/spring-ldap.versionspring-plugin.version1.2.0.RELEASE/spring-plugin.versionspring-restdocs.version2.0.3.RELEASE/spring-restdocs.versionspring-retry.version1.2.4.RELEASE/spring-retrdy.versionspring-security.version5.1.4.RELEASE/spring-security.versionspring-session-bom.versionBean-SR3/spring-session-bom.versionspring-ws.version3.0.6.RELEASE/spring-ws.versionsqlite-jdbc.version3.25.2/sqlite-jdbc.versionstatsd-client.version3.1.0/statsd-client.versionsun-mail.version${javax-mail.version}/sun-mail.versionthymeleaf.version3.0.11.RELEASE/thymeleaf.version tomcat.version9.0.16/tomcat.version unboundid-ldapsdk.version4.0.9/unboundid-ldapsdk.versionundertow.version2.0.17.Final/undertow.versionversions-maven-plugin.version2.7/versions-maven-plugin.versionwebjars-hal-browser.version3325375/webjars-hal-browser.versionwebjars-locator-core.version0.35/webjars-locator-core.version
/properties 从 spring-boot-dependencies底层源文件可以看出该文件通过 properties标签 对一些常用技术框架的依赖文件进行了 统一版本号管理例如activemq、spring、tomcat 等都有与 SpringBoot 2.1.3 版本相匹配的版本这也是pom.xml引入依赖文件 不需要标注依赖文件版本号的原因。 需要说明的是如果pom.xml 引入的依赖文件不是spring-boot-starter-parent 管理的那么在 pom.xml 引入依赖文件时需要使用 version标签指定依赖文件的版本号。 spring-boot-starter-web 依赖 spring-boot-starter-parent父依赖启动器的主要作用是进行版本统一管理。 !-- web模块依赖启动器 --
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId
/dependency 查看 spring-boot-starter-web 依赖文件源码 核心代码如下 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion2.1.3.RELEASE/versionscopecompile/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-json/artifactIdversion2.1.3.RELEASE/versionscopecompile/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-tomcat/artifactIdversion2.1.3.RELEASE/versionscopecompile/scope/dependencydependencygroupIdorg.hibernate.validator/groupIdartifactIdhibernate-validator/artifactIdversion6.0.14.Final/versionscopecompile/scope/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-web/artifactIdversion5.1.5.RELEASE/versionscopecompile/scope/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-webmvc/artifactIdversion5.1.5.RELEASE/versionscopecompile/scope/dependency/dependencies 从上述代码可以发现spring-boot-starter-web依赖启动器 的主要作用是 提供Web开发场景所需的底层所有依赖文件它对Web开发场景所需的依赖文件进行了统一管理。 正是如此在pom.xml 中引入spring-boot-starter-web依赖启动器时就可以实现Web场景开发而 不需要额外导入Tomcat服务器以及其他 Web 依赖文件 等。当然这些引入的依赖文件的版本号还是由spring-boot-starter-parent父依赖进行统一管理。 需要说明 的是Spring Boot 官方 并不是 针对所有场景开发的技术框架 都提供了依赖启动器例如数据库操作框 : MyBatis、阿里巴巴的Druid 数据源等Spring Boot 官方就 没有提供对应的依赖启动器。为了充分利用Spring Boot 框架的优势在Spring Boot官方没有整合这些技术框架的情况下MyBatis、Druid等技术框架所在的开发团队主动与Spring Boot框架进行了整合实现了各自的依赖启动器例如 mybatis-spring-boot-starter、druid-spring-boot-starter 等。我们 在pom.xml 文件中引入这些第三方的依赖启动器时切记要配置对应的版本号。 Spring Boot自动配置 Spring Boot应用的 启动入口 是 SpringBootApplication注解 标注类 中的main( )方法SpringBootApplication 能够扫描 Spring组件 并 自动配置Spring Boot。 SpringBootApplication内部源码 分析 Target(ElementType.TYPE)
Retention(RetentionPolicy.RUNTIME)
Documented
Inherited
SpringBootConfiguration //标明该类为“配置类”
EnableAutoConfiguration //启动自动配置功能
ComponentScan(excludeFilters { //包扫描器Filter(type FilterType.CUSTOM, classes TypeExcludeFilter.class),Filter(type FilterType.CUSTOM, classes AutoConfigurationExcludeFilter.class) })
public interface SpringBootApplication { ...
} 从上述源码可以看出SpringBootApplication注解 是一个 组合注解 包含 SpringBootConfiguration 、 EnableAutoConfiguration 、 ComponentScan3个核心注解。 SpringBootConfiguration SpringBootConfiguration注解表示SpringBoot配置类 查看其源码核心代码 如下 Target({ElementType.TYPE})
Retention(RetentionPolicy.RUNTIME)
Documented
Configuration
public interface SpringBootConfiguration {
} 从上述源码可以看出SpringBootConfiguration注解 内部有一个核心注解Configuration 该注解是 Spring 框架提供的表示当前类为一个配置类(XML配置文件的注解表现形式)并 可以被组件扫描器扫描。由此可见SpringBootConfiguration注解 的作用 与 Configuration注 解 相同都是标识一个可以被组件扫描器扫描的配置类只不过**SpringBootConfiguration** 是被 Spring Boot 进行了重新封装命名而已。 EnableAutoConfiguration EnableAutoConfiguration注解表示 开启自动配置功能该注解是Spring Boot框架 最重要 的注解也是实现自动化配置的注解。同样该注解的核心代码如下 Target(ElementType.TYPE)
Retention(RetentionPolicy.RUNTIME)
Documented
Inherited
AutoConfigurationPackage
Import(AutoConfigurationImportSelector.class)
public interface EnableAutoConfiguration {String ENABLED_OVERRIDE_PROPERTY spring.boot.enableautoconfiguration;/*** Exclude specific auto-configuration classes such that they will never be applied.* return the classes to exclude*/Class?[] exclude() default {};/*** Exclude specific auto-configuration class names such that they will never be* applied.* return the class names to exclude* since 1.3.0*/String[] excludeName() default {};} 从上述源码可以看出EnableAutoConfiguration 注解是一个 组合注解它主要包括有 AutoConfigurationPackage和 lmport两个核心注解。