通过@Enable*注解触发Spring Boot配置
2023-09-14 09:03:12 时间
spring.factories:由Spring Boot触发探测classpath目录下的类,进行自动配置;
@Enable:有时需要由starter的用户触发*查找自动配置文件的过程。
由starter的用户手动触发配置
Spring boot 使用 ON DUPLICATE KEY UPDATE属性控制版本 更新数据不成功 如果更新不成功会报下面的错误(此错误是自定义的): The data you want to update has been updated by another user. Please reopen and try again! 一、主要按下面的流程检查: 1、检查数据库的段alastupdatetime定义 2、检查.xml的alastupdatetime 3、要更新数据的主键是否在同一个updateByBatch中的List中重复出现
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载
#org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ #com.test.bookpubstarter.dbcount.DbCountAutoConfiguration创建元注解(meta-annotation),即在db-count-starter/src/main/java/org/test/bookpubstarter/dbcount目录下新建EnableDbCounting.java文件。
package com.test.bookpubstarter.dbcount; import org.springframework.context.annotation.Import; import java.lang.annotation.*; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Import(DbCountAutoConfiguration.class) @Documented public @interface EnableDbCounting { }在BookPubApplication类中删去之前手动创建的DbCountRunner的spring bean,然后用@EnableDbCounting注解修饰BookPubApplication类。
package com.test.bookpub; import com.test.bookpubstarter.dbcount.EnableDbCounting; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @EnableDbCounting public class BookPubApplication { public static void main(String[] args) { SpringApplication.run(BookPubApplication.class, args); }启动应用程序,设置日志级别为DEBUG
由starter的用户手动触发配置
可以看出我们自己定义的注解起作用了。如果没有spring.factories,那么在程序启动的时候Spring Boot的自动配置机制不会试图解析DbCountAutoConfiguration类。一般来说,@Component注解的作用范围就是在BookPubApplication所在的目录以及各个子目录,即com.test.bookpub.*,而DbCountAutoConfiguration是在org.test.bookpubstarter.dbcount目录下,因此不会被扫描到。
@EnableDbCounting注解通过@Import(DbCountAutoConfiguration.class)找到对应的配置类,因此通过用@EnableDbCounting修饰BookPubApplication,就是告诉Spring Boot在启动过程中要把DbCountAutoConfiguration加入到应用上下文中。
Spring boot 使用 ON DUPLICATE KEY UPDATE属性控制版本 更新数据不成功 如果更新不成功会报下面的错误(此错误是自定义的): The data you want to update has been updated by another user. Please reopen and try again! 一、主要按下面的流程检查: 1、检查数据库的段alastupdatetime定义 2、检查.xml的alastupdatetime 3、要更新数据的主键是否在同一个updateByBatch中的List中重复出现
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载
相关文章
- Spring Boot拦截器配置拦截登陆「建议收藏」
- Spring Boot利用AOP获取用户操作实现日志记录
- Spring Boot几种定时任务的实现方式
- Spring MVC+Spring+MyBatis实现支付宝扫码支付功能
- Spring Boot源码学习:自动配置与自定义注解详解
- Spring Boot配置线程池使用多线程插入数据
- Spring Boot、Spring Cloud 自定义配置文件(如何整合配置中心)
- spring boot的基本配置——spring boot的web开发——Thymeleaf模板引擎———通过HttpSession session的session.setAttribute返回数据给
- Spring Boot 实现日志链路追踪,无需引入组件,让日志定位更方便!
- Spring boot串口通信,windows、linux,docker环境配置说明
- 到底要不要拥抱 Spring Boot 3.0
- spring boot 和mybatis整合打印sql语句
- SpringBoot:模块探究之spring-boot-actuator
- 【经验】在Idea中怎么一个spring boot服务怎么模拟多台实例部署
- rabbitMQ结合spring-boot使用(3)
- Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响
- Spring Boot的核心注解和配置(二)
- Spring Boot的安全配置(一)
- Hystrix和Spring Boot的整合
- Spring Boot 配置加载顺序详解编程语言
- Spring Boot – Profile配置详解编程语言
- Spring Boot Tomcat配置详解编程语言
- Spring Boot(十二):spring boot如何测试打包部署详解编程语言