网站建设项目的生命周期,wordpress喜欢 赏 分享,全屏网站是什么意思,信用 网站 建设方案目录
SpringBoot自动配置
基于条件的自动配置
调整自动配置的顺序
纷杂的SpringBoot Starter
手写简单spring-boot-starter示例 SpringBoot自动配置
用一句话说自动配置#xff1a;EnableAutoConfiguration借助SpringFactoriesLoader将标准了Configuration的JavaConfig类…目录
SpringBoot自动配置
基于条件的自动配置
调整自动配置的顺序
纷杂的SpringBoot Starter
手写简单spring-boot-starter示例 SpringBoot自动配置
用一句话说自动配置EnableAutoConfiguration借助SpringFactoriesLoader将标准了Configuration的JavaConfig类汇总加载到ApplicationContext。
基于条件的自动配置
在自动配置的基础上我们可以通过Conditional配合Configuration或者Bean来干预配置或者bean定义是否能够生效类似于下面伪代码的效果
if(符合Conditional规定的条件) {加载当前配置或者注册当前bean的定义;
}
常见的 Conditional 注解及其作用 ConditionalOnClass当指定的类位于类路径上时才加载配置的 Bean。这可用于在依赖库存在时加载 Bean。 Configuration
ConditionalOnClass(MyLibraryClass.class)
public class MyConfiguration {// 配置 Bean
} ConditionalOnMissingClass与 ConditionalOnClass 相反当指定的类不存在于类路径上时才加载配置的 Bean。 Configuration
ConditionalOnMissingClass(com.example.SomeClass)
public class MyConfiguration {// 配置 Bean
} ConditionalOnProperty根据指定的配置属性是否存在来加载 Bean。可用于在应用程序的属性文件中控制 Bean 的加载。 Configuration
ConditionalOnProperty(name myapp.feature.enabled, havingValue true)
public class MyConfiguration {// 配置 Bean
} ConditionalOnExpression基于 SpEL 表达式的计算结果来加载 Bean。 Configuration
ConditionalOnExpression(${myapp.feature.enabled})
public class MyConfiguration {// 配置 Bean
} ConditionalOnWebApplication当应用程序运行在 Web 环境下例如Spring MVC 或 Spring Boot时加载配置的 Bean。 Configuration
ConditionalOnWebApplication
public class MyWebConfiguration {// 配置 Web 相关 Bean
} ConditionalOnJava当运行应用程序的 Java 版本满足指定条件时加载 Bean。 Configuration
ConditionalOnJava(range ConditionalOnJava.Range.EQUAL_OR_NEWER, value JavaVersion.EIGHT)
public class MyJava8Configuration {// 配置 Java 8 相关 Bean
}
调整自动配置的顺序
AutoConfigureBefore和AutoConfigureAfter是 Spring Boot 自动配置中的注解它们用于控制自动配置类的加载顺序。这些注解允许我们明确指定自动配置类的加载顺序以确保在加载自动配置类时符合特定的依赖关系。
以下是它们的作用和用法 AutoConfigureBefore AutoConfigureBefore 注解用于指定一个或多个自动配置类它告诉 Spring Boot 在加载当前自动配置类之前先加载指定的自动配置类。 这可以用于确保在当前自动配置类之前配置某些依赖以满足特定的应用程序需求。 示例 Configuration
AutoConfigureBefore(AnotherAutoConfiguration.class)
public class MyAutoConfiguration {// 配置 Bean
} AutoConfigureAfter AutoConfigureAfter 注解用于指定一个或多个自动配置类它告诉 Spring Boot 在加载当前自动配置类之后加载指定的自动配置类。 这可以用于确保在当前自动配置类之后配置某些依赖以满足特定的应用程序需求。 示例 Configuration
AutoConfigureAfter(AnotherAutoConfiguration.class)
public class MyAutoConfiguration {// 配置 Bean
}
纷杂的SpringBoot Starter
Spring Boot Starters 是一组官方维护的依赖关系用于简化 Spring Boot 应用程序的配置和引导。它们旨在为特定类型的应用程序或用例提供一组默认的依赖项以减少配置工作和提高开发效率。以下是一些常见的 Spring Boot Starters spring-boot-starter-web用于构建 Web 应用程序的 Starter包括 Spring MVC、嵌入式 Servlet 容器如Tomcat或Jetty以及其他与 Web 相关的依赖项。适用于开发 RESTful Web 服务和传统的 Web 应用程序。 spring-boot-starter-data-jpa用于访问关系型数据库的 Starter包括 Spring Data JPA、Hibernate 和数据源配置。适用于构建基于 JPA 的数据访问层。 spring-boot-starter-data-mongodb用于访问 MongoDB 的 Starter包括 Spring Data MongoDB 和 MongoDB 驱动。适用于构建使用 MongoDB 的应用程序。 spring-boot-starter-data-redis用于访问 Redis 的 Starter包括 Spring Data Redis 和 Redis 客户端。适用于构建使用 Redis 的应用程序。 spring-boot-starter-data-solr用于访问 Apache Solr 的 Starter包括 Spring Data Solr 和 Solr 客户端。适用于构建使用 Solr 的搜索应用程序。 spring-boot-starter-data-elasticsearch用于访问 Elasticsearch 的 Starter包括 Spring Data Elasticsearch 和 Elasticsearch 客户端。适用于构建使用 Elasticsearch 的搜索应用程序。 spring-boot-starter-security用于添加 Spring Security 支持的 Starter包括身份验证和授权功能。适用于构建安全的应用程序。 spring-boot-starter-test用于测试 Spring Boot 应用程序的 Starter包括JUnit、Spring Test、Mockito 和其他测试框架。适用于单元测试和集成测试。 spring-boot-starter-actuator用于添加 Spring Boot Actuator 支持的 Starter包括监控和管理功能如健康检查、度量、追踪等。 spring-boot-starter-logging用于日志记录的 Starter包括 Logback、Log4j2 和其他日志框架。适用于配置应用程序的日志输出。 spring-boot-starter-parent这是一个父项目 Starter它用于管理 Spring Boot 应用程序的依赖版本通常作为 Spring Boot 项目的父项目引用。 spring-boot-starter-xxx除上述常见的 Starter 外还有许多其他官方和社区维护的 Starter如消息队列如Kafka、RabbitMQ、NoSQL 数据库如Cassandra、Couchbase等。
手写简单spring-boot-starter示例
在了解自动配置的原理后就简单地创建一个自定义的spring-boot-starter吧。
文件目录贴一下 创建自动配置类和需要定义的bean。 Configuration
public class MyUserAutoConfiguration {Beanpublic UserManager userManager(){return new UserManager();}
} public class UserManager {public String sayHello() {return own-starter:hello.;}
} 在 src/main/resources/META-INF/ 目录下创建一个 spring.factories 文件 org.springframework.boot.autoconfigure.EnableAutoConfiguration\com.lloyd.user.MyUserAutoConfiguration 创建一个spring-web的SpringBoot项目添加自定义Starter的依赖。 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- 自定义starter的坐标 --dependencygroupIdcom.lloyd/groupIdartifactIdspringboot_06_own_starter/artifactIdversion0.0.1-SNAPSHOT/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependencies 创建一个Rest接口进行验证 RestController
public class UserController {Autowiredprivate UserManager userManager;
GetMapping(/user)public String sayHello(){return userManager.sayHello();}
} 浏览器结果