zl程序教程

您现在的位置是:首页 >  后端

当前栏目

通过@Enable*注解触发Spring Boot配置

SpringBoot配置 通过 注解 触发 enable
2023-09-14 09:03:12 时间
spring.factories:由Spring Boot触发探测classpath目录下的类,进行自动配置; @Enable:有时需要由starter的用户触发*查找自动配置文件的过程。
#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
1240
由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仓库 立即下载