From b396a08dd269a49ee9055589d293e4aef7f74cfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E8=BF=90=E4=BA=A4?= <44010039@qq.com> Date: Tue, 29 Jul 2025 17:52:43 +0800 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20InitializingBean=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96APIJSON=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apijson-spring-boot-autoconfigure/pom.xml | 5 + .../fastjson2/Fastjson2SimpleCallback.java | 2 +- .../ApijsonInitAutoConfiguration.java | 152 ++++-------------- ...Fastjson2ApplicationAutoConfiguration.java | 114 ++++--------- .../GsonApplicationAutoConfiguration.java | 94 +++++------ .../boot/bean/ApijsonInitializingBean.java | 128 +++++++++++++++ .../boot/bean/Fastjson2InitializingBean.java | 60 +++++++ .../boot/bean/GsonInitializingBean.java | 53 ++++++ .../ApijsonFunctionParserConfigurer.java | 2 +- .../ApijsonSqlConfigConfigurer.java | 2 +- .../ApijsonVerifierConfigurer.java | 2 +- .../io/yunjiao/apijson/util/ApijsonUtils.java | 9 +- .../ApijsonInitAutoConfigurationTest.java | 9 +- ...stjson2ApplicationAutoConfigurationIT.java | 4 +- .../GsonApplicationAutoConfigurationIT.java | 2 + .../ApijsonFunctionParserConfigurerTest.java | 3 +- .../ApijsonSqlConfigConfigurerTest.java | 3 +- .../ApijsonVerifierConfigurerTest.java | 3 +- .../ExampleFunctionParserConfigurer.java | 2 +- .../config/ExampleSqlConfigConfigurer.java | 2 +- .../config/ExampleVerifierConfigurer.java | 2 +- 21 files changed, 375 insertions(+), 278 deletions(-) create mode 100644 apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/bean/ApijsonInitializingBean.java create mode 100644 apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/bean/Fastjson2InitializingBean.java create mode 100644 apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/bean/GsonInitializingBean.java rename apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/{ => configurer}/ApijsonFunctionParserConfigurer.java (91%) rename apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/{ => configurer}/ApijsonSqlConfigConfigurer.java (93%) rename apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/{ => configurer}/ApijsonVerifierConfigurer.java (96%) rename apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/{ => configurer}/ApijsonFunctionParserConfigurerTest.java (92%) rename apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/{ => configurer}/ApijsonSqlConfigConfigurerTest.java (93%) rename apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/{ => configurer}/ApijsonVerifierConfigurerTest.java (94%) diff --git a/apijson-spring-boot-autoconfigure/pom.xml b/apijson-spring-boot-autoconfigure/pom.xml index 1c2ec46..294d579 100644 --- a/apijson-spring-boot-autoconfigure/pom.xml +++ b/apijson-spring-boot-autoconfigure/pom.xml @@ -32,6 +32,11 @@ spring-webmvc true + + org.springframework + spring-beans + true + cn.hutool hutool-core diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/fastjson2/Fastjson2SimpleCallback.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/fastjson2/Fastjson2SimpleCallback.java index 17ef117..87fe4a7 100644 --- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/fastjson2/Fastjson2SimpleCallback.java +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/fastjson2/Fastjson2SimpleCallback.java @@ -13,7 +13,7 @@ import java.util.List; import java.util.Map; /** - * {@link AbstractSQLConfig.SimpleCallback} 子类,默认实现 + * {@link AbstractSQLConfig.SimpleCallback} 子类,fastjson2回调类 * * @author yangyunjiao * @see AbstractSQLConfig.Callback diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonInitAutoConfiguration.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonInitAutoConfiguration.java index dbc6f0b..19e7b2e 100644 --- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonInitAutoConfiguration.java +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonInitAutoConfiguration.java @@ -1,18 +1,14 @@ package io.yunjiao.apijson.spring.boot.autoconfigure; -import apijson.framework.*; -import io.yunjiao.apijson.spring.boot.ApijsonFunctionParserConfigurer; -import io.yunjiao.apijson.spring.boot.ApijsonSqlConfigConfigurer; -import io.yunjiao.apijson.spring.boot.ApijsonVerifierConfigurer; -import io.yunjiao.apijson.util.ApijsonUtils; -import jakarta.annotation.PostConstruct; +import io.yunjiao.apijson.spring.boot.bean.ApijsonInitializingBean; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonFunctionParserConfigurer; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonSqlConfigConfigurer; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonVerifierConfigurer; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfiguration; - -import java.rmi.ServerException; -import java.util.stream.Collectors; +import org.springframework.context.annotation.Bean; /** * APIJSON初始化自动配置 @@ -23,125 +19,33 @@ import java.util.stream.Collectors; @RequiredArgsConstructor @AutoConfiguration public class ApijsonInitAutoConfiguration { - /** - * 解析器配置 - */ - private final ApijsonParserProperties parserProperties; - - /** - * 校验器配置 - */ - private final ApijsonVerifierProperties verifierProperties; - - /** - * sql配置 - */ - private final ApijsonSqlProperties sqlProperties; - - /** - * sql配置器用户配置 - */ - private final ObjectProvider sqlConfigConfigurers; - - /** - * 校验器用户配置 - */ - private final ObjectProvider apijsonVerifierConfigurers; /** - * 远程函数解析器用户配置 - */ - private final ObjectProvider apijsonFunctionParserConfigurers; - - /** - * {@link PostConstruct} 注解的方法,实现静态属性配置 + * {@link ApijsonInitializingBean} 初始化 * - * @throws ServerException 强制加载类失败 - */ - @PostConstruct - public void postConstruct() throws ServerException { - forceInitClass(); - initSqlConfig(); - initSqlExecutor(); - initVerifier(); - initRequestParaser(); - initObjectParser(); - initFunctionParser(); - } - - /** - * 强迫加载类,执行静态(static {})代码块逻辑 - */ - void forceInitClass() { - ApijsonUtils.forceInit(APIJSONApplication.class); - ApijsonUtils.forceInit(APIJSONConstant.class); - ApijsonUtils.forceInit(APIJSONController.class); - ApijsonUtils.forceInit(APIJSONFunctionParser.class); - ApijsonUtils.forceInit(APIJSONObjectParser.class); - ApijsonUtils.forceInit(APIJSONParser.class); - ApijsonUtils.forceInit(APIJSONSQLConfig.class); - ApijsonUtils.forceInit(APIJSONSQLExecutor.class); - ApijsonUtils.forceInit(APIJSONVerifier.class); - ApijsonUtils.forceInit(ColumnUtil.class); - } - - /** - * 初始化sql配置器静态属性 - */ - void initSqlConfig() { - log.info( "APIJSON Sql Config Init"); - - ApijsonSqlProperties.Config config = sqlProperties.getConfig(); - ApijsonUtils.buildAPIJSONSQLConfigStatic(config, sqlConfigConfigurers.orderedStream().collect(Collectors.toList())); - ColumnUtil.init(); - } - - /** - * 初始化sql执行器静态属性 - */ - void initSqlExecutor() { - log.info("APIJSON Sql Executor Init"); - - ApijsonSqlProperties.Executor executor = sqlProperties.getExecutor(); - ApijsonUtils.buildAPIJSONSQLExecutorStatic(executor); - } - - /** - * 初始化校验器器静态属性 - */ - void initVerifier() throws ServerException { - log.info("APIJSON Verifier Init"); - - ApijsonUtils.buildAPIJSONVerifierStatic(verifierProperties, apijsonVerifierConfigurers.orderedStream().collect(Collectors.toList())); - } - - /** - * 初始化请求解析器静态属性 - */ - void initRequestParaser() { - log.info("APIJSON Request Parser Init"); - - ApijsonParserProperties.Request request = parserProperties.getRequest(); - ApijsonUtils.buildAPIJSONParserStatic(request); + * @param parserProperties 解析器配置 + * @param verifierProperties 校验器配置 + * @param sqlProperties sql配置 + * @param sqlConfigConfigurers sql配置器用户配置 + * @param apijsonVerifierConfigurers 校验器用户配置 + * @param apijsonFunctionParserConfigurers 远程函数解析器用户配置 + * @return 实例 + * @see ApijsonInitializingBean + */ + @Bean + ApijsonInitializingBean apijsonInitializingBean(ApijsonParserProperties parserProperties, + ApijsonVerifierProperties verifierProperties, + ApijsonSqlProperties sqlProperties, + ObjectProvider sqlConfigConfigurers, + ObjectProvider apijsonVerifierConfigurers, + ObjectProvider apijsonFunctionParserConfigurers) { + ApijsonInitializingBean bean = new ApijsonInitializingBean(parserProperties, verifierProperties, + sqlProperties, sqlConfigConfigurers,apijsonVerifierConfigurers,apijsonFunctionParserConfigurers); + if (log.isDebugEnabled()) { + log.debug("Configure Bean [Apijson Initializing Bean]"); + } + return bean; } - /** - * 初始化对象解析器静态属性 - */ - void initObjectParser() { - log.info("APIJSON Object Parser Init"); - ApijsonParserProperties.Object object = parserProperties.getObject(); - ApijsonUtils.buildAPIJSONObjectParserStatic(object); - } - - /** - * - */ - void initFunctionParser() { - log.info("APIJSON Function Parser Init"); - - ApijsonParserProperties.Function function = parserProperties.getFunction(); - ApijsonUtils.buildAPIJSONFunctionParserStatic(function, apijsonFunctionParserConfigurers.orderedStream().collect(Collectors.toList())); - } } diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfiguration.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfiguration.java index d3dd7d5..288e55a 100644 --- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfiguration.java +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfiguration.java @@ -1,14 +1,15 @@ package io.yunjiao.apijson.spring.boot.autoconfigure; -import apijson.Log; -import apijson.fastjson2.*; -import io.yunjiao.apijson.fastjson2.*; +import apijson.fastjson2.APIJSONApplication; +import io.yunjiao.apijson.fastjson2.Fastjson2Creator; +import io.yunjiao.apijson.fastjson2.Fastjson2EXtRestController; +import io.yunjiao.apijson.fastjson2.Fastjson2RestController; +import io.yunjiao.apijson.fastjson2.Fastjson2SimpleCallback; import io.yunjiao.apijson.orm.IdKeyStrategy; import io.yunjiao.apijson.orm.NewIdStrategy; import io.yunjiao.apijson.spring.boot.autoconfigure.condition.ApllicationCondition; +import io.yunjiao.apijson.spring.boot.bean.Fastjson2InitializingBean; import io.yunjiao.apijson.util.ApijsonConsts; -import io.yunjiao.apijson.util.ApijsonUtils; -import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -31,47 +32,17 @@ import javax.sql.DataSource; @Conditional(ApllicationCondition.OnFastjson2.class) @ConditionalOnClass({APIJSONApplication.class}) public class Fastjson2ApplicationAutoConfiguration { - /** - * 主键名称策略 - */ - private final IdKeyStrategy idKeyStrategy; - - /** - * 主键生成策略 - */ - private final NewIdStrategy newIdStrategy; /** - * 数据源 - */ - private final DataSource dataSource; - - /** - * sql配置属性 - */ - private final ApijsonSqlProperties sqlProperties; - - /** - * 配置属性 - */ - private final ApijsonProperties properties; - - /** - * {@link PostConstruct} 注解方法 - */ - @PostConstruct - public void postConstruct() { - log.info("Fastjson2 Application Auto Configuration"); - forceInitClass(); - } - - /** - * Fastjson2创建器 - * @return {@link Fastjson2Creator}实例 + * Fastjson2创建器 实例化 + * @param dataSource 数据源 + * @param sqlProperties sql配置属性 + * @return {@link Fastjson2Creator} 实例 */ @Bean @ConditionalOnMissingBean - Fastjson2Creator fastjson2Creator() { + Fastjson2Creator fastjson2Creator(DataSource dataSource, + ApijsonSqlProperties sqlProperties) { Fastjson2Creator bean = new Fastjson2Creator(dataSource, sqlProperties); if (log.isDebugEnabled()) { log.debug("Configure Bean [Fastjson2 Creator]"); @@ -80,13 +51,15 @@ public class Fastjson2ApplicationAutoConfiguration { } /** - * 回调函数 - * - * @return {@link Fastjson2SimpleCallback}实例 + * fastjson2回调 实例化 + * @param idKeyStrategy 主键名称策略 + * @param newIdStrategy 主键生成策略 + * @return {@link Fastjson2SimpleCallback} 实例 */ @Bean @ConditionalOnMissingBean - Fastjson2SimpleCallback fastjson2SimpleCallback() { + Fastjson2SimpleCallback fastjson2SimpleCallback(IdKeyStrategy idKeyStrategy, + NewIdStrategy newIdStrategy) { Fastjson2SimpleCallback bean = new Fastjson2SimpleCallback(idKeyStrategy, newIdStrategy); if (log.isDebugEnabled()) { log.debug("Configure Bean [Fastjson2 Simple Callback]"); @@ -94,16 +67,22 @@ public class Fastjson2ApplicationAutoConfiguration { return bean; } - - void forceInitClass() { - ApijsonUtils.forceInit(APIJSONApplication.class); - ApijsonUtils.forceInit(APIJSONController.class); - ApijsonUtils.forceInit(APIJSONFunctionParser.class); - ApijsonUtils.forceInit(APIJSONObjectParser.class); - ApijsonUtils.forceInit(APIJSONParser.class); - ApijsonUtils.forceInit(APIJSONSQLConfig.class); - ApijsonUtils.forceInit(APIJSONSQLExecutor.class); - ApijsonUtils.forceInit(APIJSONVerifier.class); + /** + * Fastjson2 应用初始化Bean 实例化 + * @param fastjson2SimpleCallback fastjson2回调 + * @param fastjson2Creator Fastjson2创建器 + * @param properties APIJSON 配置属性 + * @return @return {@link Fastjson2InitializingBean} 实例 + */ + @Bean + Fastjson2InitializingBean fastjson2InitializingBean(Fastjson2SimpleCallback fastjson2SimpleCallback, + Fastjson2Creator fastjson2Creator, + ApijsonProperties properties) { + Fastjson2InitializingBean bean = new Fastjson2InitializingBean(fastjson2SimpleCallback, fastjson2Creator, properties); + if (log.isDebugEnabled()) { + log.debug("Configure Bean [Fastjson2 Initializing Bean]"); + } + return bean; } /** @@ -147,29 +126,4 @@ public class Fastjson2ApplicationAutoConfiguration { } } - /** - * 初始化 - */ - @RequiredArgsConstructor - @AutoConfiguration - static - class Fastjson2ApplicationInitConfiguration { - private final Fastjson2SimpleCallback fastjson2SimpleCallback; - - private final Fastjson2Creator fastjson2Creator; - - private final ApijsonProperties properties; - - @PostConstruct - public void postConstruct() throws Exception { - log.info("Fastjson2 Application Init"); - - Fastjson2SqlConfig.SIMPLE_CALLBACK = fastjson2SimpleCallback; - Log.DEBUG = properties.isLogDebug(); - APIJSONApplication.init(properties.isShutdownWhenServerError(), fastjson2Creator); - if (properties.isEnableOnStartup()) { - Fastjson2Verifier.init(properties.isShutdownWhenServerError(), fastjson2Creator); - } - } - } } diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfiguration.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfiguration.java index 87e75c8..14b628b 100644 --- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfiguration.java +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfiguration.java @@ -1,13 +1,15 @@ package io.yunjiao.apijson.spring.boot.autoconfigure; -import apijson.gson.*; -import io.yunjiao.apijson.gson.*; +import apijson.gson.APIJSONApplication; +import io.yunjiao.apijson.gson.GsonCreator; +import io.yunjiao.apijson.gson.GsonEXtRestController; +import io.yunjiao.apijson.gson.GsonRestController; +import io.yunjiao.apijson.gson.GsonSimpleCallback; import io.yunjiao.apijson.orm.IdKeyStrategy; import io.yunjiao.apijson.orm.NewIdStrategy; import io.yunjiao.apijson.spring.boot.autoconfigure.condition.ApllicationCondition; +import io.yunjiao.apijson.spring.boot.bean.GsonInitializingBean; import io.yunjiao.apijson.util.ApijsonConsts; -import io.yunjiao.apijson.util.ApijsonUtils; -import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -30,26 +32,17 @@ import javax.sql.DataSource; @Conditional(ApllicationCondition.OnGson.class) @ConditionalOnClass({APIJSONApplication.class}) public class GsonApplicationAutoConfiguration { - private final IdKeyStrategy idKeyStrategy; - - private final NewIdStrategy newIdStrategy; - - private final DataSource dataSource; - - private final ApijsonSqlProperties sqlProperties; - - private final ApijsonProperties properties; - - - @PostConstruct - public void postConstruct() { - log.info("Gson Application Auto Configuration"); - forceInitClass(); - } + /** + * Gson创建器 实例化 + * @param dataSource 数据源 + * @param sqlProperties sql配置属性 + * @return {@link GsonCreator} 实例 + */ @Bean @ConditionalOnMissingBean - GsonCreator gsonCreator() { + GsonCreator gsonCreator(DataSource dataSource, + ApijsonSqlProperties sqlProperties) { GsonCreator bean = new GsonCreator(dataSource, sqlProperties); if (log.isDebugEnabled()) { log.debug("Configure Bean [Gson Creator]"); @@ -57,9 +50,16 @@ public class GsonApplicationAutoConfiguration { return bean; } + /** + * Gson回调 实例化 + * @param idKeyStrategy 主键名称策略 + * @param newIdStrategy 主键生成策略 + * @return {@link GsonSimpleCallback} 实例 + */ @Bean @ConditionalOnMissingBean - GsonSimpleCallback gsonSimpleCallback() { + GsonSimpleCallback gsonSimpleCallback(IdKeyStrategy idKeyStrategy, + NewIdStrategy newIdStrategy) { GsonSimpleCallback bean = new GsonSimpleCallback(idKeyStrategy, newIdStrategy); if (log.isDebugEnabled()) { log.debug("Configure Bean [Gson Simple Callback]"); @@ -67,15 +67,22 @@ public class GsonApplicationAutoConfiguration { return bean; } - void forceInitClass() { - ApijsonUtils.forceInit(APIJSONApplication.class); - ApijsonUtils.forceInit(APIJSONController.class); - ApijsonUtils.forceInit(APIJSONFunctionParser.class); - ApijsonUtils.forceInit(APIJSONObjectParser.class); - ApijsonUtils.forceInit(APIJSONParser.class); - ApijsonUtils.forceInit(APIJSONSQLConfig.class); - ApijsonUtils.forceInit(APIJSONSQLExecutor.class); - ApijsonUtils.forceInit(APIJSONVerifier.class); + /** + * Gson 应用初始化Bean 实例化 + * @param gsonSimpleCallback fastjson2回调 + * @param gsonCreator Fastjson2创建器 + * @param properties APIJSON 配置属性 + * @return @return {@link GsonInitializingBean} 实例 + */ + @Bean + GsonInitializingBean gsonInitializingBean(GsonSimpleCallback gsonSimpleCallback, + GsonCreator gsonCreator, + ApijsonProperties properties) { + GsonInitializingBean bean = new GsonInitializingBean(gsonSimpleCallback, gsonCreator, properties); + if (log.isDebugEnabled()) { + log.debug("Configure Bean [Fastjson2 Initializing Bean]"); + } + return bean; } /** @@ -108,29 +115,4 @@ public class GsonApplicationAutoConfiguration { return bean; } } - - /** - * 初始化 - */ - @RequiredArgsConstructor - @AutoConfiguration - static - class GsonApplicationInitConfiguration { - private final GsonSimpleCallback gsonSimpleCallback; - - private final GsonCreator gsonCreator; - - private final ApijsonProperties properties; - - @PostConstruct - public void postConstruct() throws Exception { - log.info("Gson Application Init"); - - GsonSqlConfig.SIMPLE_CALLBACK = gsonSimpleCallback; - APIJSONApplication.init(properties.isShutdownWhenServerError(), gsonCreator); - if (properties.isEnableOnStartup()) { - GsonVerifier.init(false, gsonCreator); - } - } - } } diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/bean/ApijsonInitializingBean.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/bean/ApijsonInitializingBean.java new file mode 100644 index 0000000..f0850b1 --- /dev/null +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/bean/ApijsonInitializingBean.java @@ -0,0 +1,128 @@ +package io.yunjiao.apijson.spring.boot.bean; + +import apijson.framework.*; +import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonParserProperties; +import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonSqlProperties; +import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonVerifierProperties; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonFunctionParserConfigurer; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonSqlConfigConfigurer; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonVerifierConfigurer; +import io.yunjiao.apijson.util.ApijsonUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.ObjectProvider; + +import java.util.stream.Collectors; + +/** + * APIJSON初始化Bean, 主要初始化静态属性 + * + * @author yangyunjiao + */ +@RequiredArgsConstructor +public class ApijsonInitializingBean implements InitializingBean { + /** + * 解析器配置 + */ + private final ApijsonParserProperties parserProperties; + + /** + * 校验器配置 + */ + private final ApijsonVerifierProperties verifierProperties; + + /** + * sql配置 + */ + private final ApijsonSqlProperties sqlProperties; + + /** + * sql配置器用户配置 + */ + private final ObjectProvider sqlConfigConfigurers; + + /** + * 校验器用户配置 + */ + private final ObjectProvider apijsonVerifierConfigurers; + + /** + * 远程函数解析器用户配置 + */ + private final ObjectProvider apijsonFunctionParserConfigurers; + + @Override + public void afterPropertiesSet() throws Exception { + forceInitClass(); + initSqlConfig(); + initSqlExecutor(); + initVerifier(); + initRequestParaser(); + initObjectParser(); + initFunctionParser(); + } + + /** + * 强迫加载类,执行静态(static {})代码块逻辑 + */ + void forceInitClass() { + ApijsonUtils.forceInit(APIJSONApplication.class); + ApijsonUtils.forceInit(APIJSONConstant.class); + ApijsonUtils.forceInit(APIJSONController.class); + ApijsonUtils.forceInit(APIJSONFunctionParser.class); + ApijsonUtils.forceInit(APIJSONObjectParser.class); + ApijsonUtils.forceInit(APIJSONParser.class); + ApijsonUtils.forceInit(APIJSONSQLConfig.class); + ApijsonUtils.forceInit(APIJSONSQLExecutor.class); + ApijsonUtils.forceInit(APIJSONVerifier.class); + ApijsonUtils.forceInit(ColumnUtil.class); + } + + /** + * 初始化sql配置器静态属性 + */ + void initSqlConfig() { + ApijsonSqlProperties.Config config = sqlProperties.getConfig(); + ApijsonUtils.buildAPIJSONSQLConfigStatic(config, sqlConfigConfigurers.orderedStream().collect(Collectors.toList())); + ColumnUtil.init(); + } + + /** + * 初始化sql执行器静态属性 + */ + void initSqlExecutor() { + ApijsonSqlProperties.Executor executor = sqlProperties.getExecutor(); + ApijsonUtils.buildAPIJSONSQLExecutorStatic(executor); + } + + /** + * 初始化校验器器静态属性 + */ + void initVerifier() { + ApijsonUtils.buildAPIJSONVerifierStatic(verifierProperties, apijsonVerifierConfigurers.orderedStream().collect(Collectors.toList())); + } + + /** + * 初始化请求解析器静态属性 + */ + void initRequestParaser() { + ApijsonParserProperties.Request request = parserProperties.getRequest(); + ApijsonUtils.buildAPIJSONParserStatic(request); + } + + /** + * 初始化对象解析器静态属性 + */ + void initObjectParser() { + ApijsonParserProperties.Object object = parserProperties.getObject(); + ApijsonUtils.buildAPIJSONObjectParserStatic(object); + } + + /** + * + */ + void initFunctionParser() { + ApijsonParserProperties.Function function = parserProperties.getFunction(); + ApijsonUtils.buildAPIJSONFunctionParserStatic(function, apijsonFunctionParserConfigurers.orderedStream().collect(Collectors.toList())); + } +} diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/bean/Fastjson2InitializingBean.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/bean/Fastjson2InitializingBean.java new file mode 100644 index 0000000..9e2209c --- /dev/null +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/bean/Fastjson2InitializingBean.java @@ -0,0 +1,60 @@ +package io.yunjiao.apijson.spring.boot.bean; + +import apijson.Log; +import apijson.fastjson2.*; +import io.yunjiao.apijson.fastjson2.Fastjson2Creator; +import io.yunjiao.apijson.fastjson2.Fastjson2SimpleCallback; +import io.yunjiao.apijson.fastjson2.Fastjson2SqlConfig; +import io.yunjiao.apijson.fastjson2.Fastjson2Verifier; +import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonProperties; +import io.yunjiao.apijson.util.ApijsonUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.InitializingBean; + +/** + * Fastjson2 应用初始化Bean + * + * @author yangyunjiao + */ +@RequiredArgsConstructor +public class Fastjson2InitializingBean implements InitializingBean { + private final Fastjson2SimpleCallback fastjson2SimpleCallback; + + private final Fastjson2Creator fastjson2Creator; + + private final ApijsonProperties properties; + + @Override + public void afterPropertiesSet() throws Exception { + forceInitClass(); + initAPIJSONApplication(); + } + + /** + * 强迫加载类,执行静态代码块 + */ + void forceInitClass() { + ApijsonUtils.forceInit(APIJSONApplication.class); + ApijsonUtils.forceInit(APIJSONController.class); + ApijsonUtils.forceInit(APIJSONFunctionParser.class); + ApijsonUtils.forceInit(APIJSONObjectParser.class); + ApijsonUtils.forceInit(APIJSONParser.class); + ApijsonUtils.forceInit(APIJSONSQLConfig.class); + ApijsonUtils.forceInit(APIJSONSQLExecutor.class); + ApijsonUtils.forceInit(APIJSONVerifier.class); + } + + /** + * {@link APIJSONApplication} 初始化 + * + * @throws Exception 初始化化异常 + */ + void initAPIJSONApplication() throws Exception { + Fastjson2SqlConfig.SIMPLE_CALLBACK = fastjson2SimpleCallback; + Log.DEBUG = properties.isLogDebug(); + APIJSONApplication.init(properties.isShutdownWhenServerError(), fastjson2Creator); + if (properties.isEnableOnStartup()) { + Fastjson2Verifier.init(properties.isShutdownWhenServerError(), fastjson2Creator); + } + } +} diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/bean/GsonInitializingBean.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/bean/GsonInitializingBean.java new file mode 100644 index 0000000..e06d914 --- /dev/null +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/bean/GsonInitializingBean.java @@ -0,0 +1,53 @@ +package io.yunjiao.apijson.spring.boot.bean; + +import apijson.gson.*; +import io.yunjiao.apijson.gson.GsonCreator; +import io.yunjiao.apijson.gson.GsonSimpleCallback; +import io.yunjiao.apijson.gson.GsonSqlConfig; +import io.yunjiao.apijson.gson.GsonVerifier; +import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonProperties; +import io.yunjiao.apijson.util.ApijsonUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.InitializingBean; + +/** + * Fastjson2 应用初始化Bean + * + * @author yangyunjiao + */ +@RequiredArgsConstructor +public class GsonInitializingBean implements InitializingBean { + private final GsonSimpleCallback gsonSimpleCallback; + + private final GsonCreator gsonCreator; + + private final ApijsonProperties properties; + + @Override + public void afterPropertiesSet() throws Exception { + forceInitClass(); + initAPIJSONApplication(); + } + + /** + * 强迫加载类,执行静态代码块 + */ + void forceInitClass() { + ApijsonUtils.forceInit(APIJSONApplication.class); + ApijsonUtils.forceInit(APIJSONController.class); + ApijsonUtils.forceInit(APIJSONFunctionParser.class); + ApijsonUtils.forceInit(APIJSONObjectParser.class); + ApijsonUtils.forceInit(APIJSONParser.class); + ApijsonUtils.forceInit(APIJSONSQLConfig.class); + ApijsonUtils.forceInit(APIJSONSQLExecutor.class); + ApijsonUtils.forceInit(APIJSONVerifier.class); + } + + void initAPIJSONApplication() throws Exception { + GsonSqlConfig.SIMPLE_CALLBACK = gsonSimpleCallback; + APIJSONApplication.init(properties.isShutdownWhenServerError(), gsonCreator); + if (properties.isEnableOnStartup()) { + GsonVerifier.init(false, gsonCreator); + } + } +} diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/ApijsonFunctionParserConfigurer.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonFunctionParserConfigurer.java similarity index 91% rename from apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/ApijsonFunctionParserConfigurer.java rename to apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonFunctionParserConfigurer.java index b3ba3f9..770193b 100644 --- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/ApijsonFunctionParserConfigurer.java +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonFunctionParserConfigurer.java @@ -1,4 +1,4 @@ -package io.yunjiao.apijson.spring.boot; +package io.yunjiao.apijson.spring.boot.configurer; import apijson.orm.script.ScriptExecutor; diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/ApijsonSqlConfigConfigurer.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonSqlConfigConfigurer.java similarity index 93% rename from apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/ApijsonSqlConfigConfigurer.java rename to apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonSqlConfigConfigurer.java index 3365d0f..f895159 100644 --- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/ApijsonSqlConfigConfigurer.java +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonSqlConfigConfigurer.java @@ -1,4 +1,4 @@ -package io.yunjiao.apijson.spring.boot; +package io.yunjiao.apijson.spring.boot.configurer; import java.util.List; import java.util.Map; diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/ApijsonVerifierConfigurer.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonVerifierConfigurer.java similarity index 96% rename from apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/ApijsonVerifierConfigurer.java rename to apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonVerifierConfigurer.java index 82a4ac9..a6874f0 100644 --- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/ApijsonVerifierConfigurer.java +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonVerifierConfigurer.java @@ -1,4 +1,4 @@ -package io.yunjiao.apijson.spring.boot; +package io.yunjiao.apijson.spring.boot.configurer; import apijson.RequestMethod; import apijson.orm.Entry; diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/util/ApijsonUtils.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/util/ApijsonUtils.java index 09f232a..f761e21 100644 --- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/util/ApijsonUtils.java +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/util/ApijsonUtils.java @@ -7,9 +7,9 @@ import apijson.orm.AbstractSQLConfig; import apijson.orm.AbstractVerifier; import apijson.orm.Entry; import apijson.orm.script.ScriptExecutor; -import io.yunjiao.apijson.spring.boot.ApijsonFunctionParserConfigurer; -import io.yunjiao.apijson.spring.boot.ApijsonSqlConfigConfigurer; -import io.yunjiao.apijson.spring.boot.ApijsonVerifierConfigurer; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonFunctionParserConfigurer; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonSqlConfigConfigurer; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonVerifierConfigurer; import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonParserProperties; import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonSqlProperties; import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonVerifierProperties; @@ -50,11 +50,12 @@ public final class ApijsonUtils { return; } - if (!(o instanceof Collection collection)) { + if (!(o instanceof Collection)) { throw new IllegalArgumentException(o + " 不符合 Array 数组类型! 结构必须是 [] !"); } int i = -1; + Collection collection = (Collection)o; for (Object item : collection) { i++; checkFn.accept(item, i); diff --git a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonInitAutoConfigurationTest.java b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonInitAutoConfigurationTest.java index cf5a870..70f8f3d 100644 --- a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonInitAutoConfigurationTest.java +++ b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonInitAutoConfigurationTest.java @@ -1,8 +1,9 @@ package io.yunjiao.apijson.spring.boot.autoconfigure; -import io.yunjiao.apijson.spring.boot.ApijsonFunctionParserConfigurer; -import io.yunjiao.apijson.spring.boot.ApijsonSqlConfigConfigurer; -import io.yunjiao.apijson.spring.boot.ApijsonVerifierConfigurer; +import io.yunjiao.apijson.spring.boot.bean.ApijsonInitializingBean; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonFunctionParserConfigurer; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonSqlConfigConfigurer; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonVerifierConfigurer; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -34,6 +35,7 @@ public class ApijsonInitAutoConfigurationTest { assertThat(context).doesNotHaveBean(ApijsonSqlConfigConfigurer.class); assertThat(context).doesNotHaveBean(ApijsonVerifierConfigurer.class); assertThat(context).doesNotHaveBean(ApijsonFunctionParserConfigurer.class); + assertThat(context).hasSingleBean(ApijsonInitializingBean.class); }); } @@ -45,6 +47,7 @@ public class ApijsonInitAutoConfigurationTest { assertThat(context).hasSingleBean(ApijsonSqlConfigConfigurer.class); assertThat(context).hasSingleBean(ApijsonVerifierConfigurer.class); assertThat(context).hasSingleBean(ApijsonFunctionParserConfigurer.class); + assertThat(context).hasSingleBean(ApijsonInitializingBean.class); }); } diff --git a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfigurationIT.java b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfigurationIT.java index e7bf7a3..f30e003 100644 --- a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfigurationIT.java +++ b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfigurationIT.java @@ -2,6 +2,7 @@ package io.yunjiao.apijson.spring.boot.autoconfigure; import io.yunjiao.apijson.fastjson2.Fastjson2Creator; import io.yunjiao.apijson.fastjson2.Fastjson2SimpleCallback; +import io.yunjiao.apijson.spring.boot.bean.Fastjson2InitializingBean; import io.yunjiao.apijson.util.ApijsonConsts; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -25,7 +26,7 @@ public class Fastjson2ApplicationAutoConfigurationIT { } @Test - public void testNewIdSnowflakeStrategy() { + public void testDefault() { applicationContextRunner .withPropertyValues(ApijsonConsts.PROPERTY_PREFIX_APIJSON_APPLICATION + "=" + ApijsonProperties.Application.fastjson2, ApijsonConsts.PROPERTY_PREFIX_APIJSON_NEWIDSTRATEGY + "=" + ApijsonProperties.NewIdStrategy.timestamp, @@ -37,6 +38,7 @@ public class Fastjson2ApplicationAutoConfigurationIT { .run(context -> { assertThat(context).hasSingleBean(Fastjson2Creator.class); assertThat(context).hasSingleBean(Fastjson2SimpleCallback.class); + assertThat(context).hasSingleBean(Fastjson2InitializingBean.class); }); } diff --git a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfigurationIT.java b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfigurationIT.java index 1cefbb9..525d9e5 100644 --- a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfigurationIT.java +++ b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfigurationIT.java @@ -4,6 +4,7 @@ package io.yunjiao.apijson.spring.boot.autoconfigure; import io.yunjiao.apijson.gson.GsonCreator; import io.yunjiao.apijson.gson.GsonRestController; import io.yunjiao.apijson.gson.GsonSimpleCallback; +import io.yunjiao.apijson.spring.boot.bean.GsonInitializingBean; import io.yunjiao.apijson.util.ApijsonConsts; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -42,6 +43,7 @@ public class GsonApplicationAutoConfigurationIT { assertThat(context).hasSingleBean(GsonCreator.class); assertThat(context).hasSingleBean(GsonSimpleCallback.class); assertThat(context).hasSingleBean(GsonRestController.class); + assertThat(context).hasSingleBean(GsonInitializingBean.class); }); } diff --git a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/ApijsonFunctionParserConfigurerTest.java b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonFunctionParserConfigurerTest.java similarity index 92% rename from apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/ApijsonFunctionParserConfigurerTest.java rename to apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonFunctionParserConfigurerTest.java index defb9db..4580fb3 100644 --- a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/ApijsonFunctionParserConfigurerTest.java +++ b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonFunctionParserConfigurerTest.java @@ -1,8 +1,9 @@ -package io.yunjiao.apijson.spring.boot; +package io.yunjiao.apijson.spring.boot.configurer; import apijson.orm.AbstractFunctionParser; import apijson.orm.script.ScriptExecutor; import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonParserProperties; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonFunctionParserConfigurer; import io.yunjiao.apijson.util.ApijsonUtils; import org.junit.jupiter.api.Test; diff --git a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/ApijsonSqlConfigConfigurerTest.java b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonSqlConfigConfigurerTest.java similarity index 93% rename from apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/ApijsonSqlConfigConfigurerTest.java rename to apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonSqlConfigConfigurerTest.java index 62daa7a..a91dfe0 100644 --- a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/ApijsonSqlConfigConfigurerTest.java +++ b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonSqlConfigConfigurerTest.java @@ -1,8 +1,9 @@ -package io.yunjiao.apijson.spring.boot; +package io.yunjiao.apijson.spring.boot.configurer; import apijson.framework.ColumnUtil; import apijson.orm.AbstractSQLConfig; import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonSqlProperties; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonSqlConfigConfigurer; import io.yunjiao.apijson.util.ApijsonUtils; import org.junit.jupiter.api.Test; diff --git a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/ApijsonVerifierConfigurerTest.java b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonVerifierConfigurerTest.java similarity index 94% rename from apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/ApijsonVerifierConfigurerTest.java rename to apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonVerifierConfigurerTest.java index 5bd59fc..c1f1b4a 100644 --- a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/ApijsonVerifierConfigurerTest.java +++ b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/configurer/ApijsonVerifierConfigurerTest.java @@ -1,9 +1,10 @@ -package io.yunjiao.apijson.spring.boot; +package io.yunjiao.apijson.spring.boot.configurer; import apijson.RequestMethod; import apijson.orm.AbstractVerifier; import apijson.orm.Entry; import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonVerifierProperties; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonVerifierConfigurer; import io.yunjiao.apijson.util.ApijsonUtils; import org.junit.jupiter.api.Test; diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleFunctionParserConfigurer.java b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleFunctionParserConfigurer.java index f172a1f..0822438 100644 --- a/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleFunctionParserConfigurer.java +++ b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleFunctionParserConfigurer.java @@ -2,7 +2,7 @@ package io.yunjiao.apijson.example.config; import apijson.orm.script.JavaScriptExecutor; import apijson.orm.script.ScriptExecutor; -import io.yunjiao.apijson.spring.boot.ApijsonFunctionParserConfigurer; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonFunctionParserConfigurer; import org.springframework.context.annotation.Configuration; import java.util.List; diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleSqlConfigConfigurer.java b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleSqlConfigConfigurer.java index 31ec117..b9ac2ce 100644 --- a/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleSqlConfigConfigurer.java +++ b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleSqlConfigConfigurer.java @@ -1,7 +1,7 @@ package io.yunjiao.apijson.example.config; import apijson.StringUtil; -import io.yunjiao.apijson.spring.boot.ApijsonSqlConfigConfigurer; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonSqlConfigConfigurer; import org.springframework.context.annotation.Configuration; import java.util.Arrays; diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleVerifierConfigurer.java b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleVerifierConfigurer.java index 07889a9..ebf12c7 100644 --- a/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleVerifierConfigurer.java +++ b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleVerifierConfigurer.java @@ -3,7 +3,7 @@ package io.yunjiao.apijson.example.config; import apijson.RequestMethod; import apijson.StringUtil; import apijson.orm.Entry; -import io.yunjiao.apijson.spring.boot.ApijsonVerifierConfigurer; +import io.yunjiao.apijson.spring.boot.configurer.ApijsonVerifierConfigurer; import org.springframework.context.annotation.Configuration; import java.util.List; -- Gitee From 4e3785f2deca3fc67681bad42480ba1cd7404350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E8=BF=90=E4=BA=A4?= <44010039@qq.com> Date: Tue, 29 Jul 2025 17:58:09 +0800 Subject: [PATCH 2/2] =?UTF-8?q?style:=20=E6=B7=BB=E5=8A=A0log=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boot/autoconfigure/ApijsonInitAutoConfiguration.java | 6 ++++++ .../Fastjson2ApplicationAutoConfiguration.java | 6 ++++++ .../autoconfigure/GsonApplicationAutoConfiguration.java | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonInitAutoConfiguration.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonInitAutoConfiguration.java index 19e7b2e..4948178 100644 --- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonInitAutoConfiguration.java +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonInitAutoConfiguration.java @@ -4,6 +4,7 @@ import io.yunjiao.apijson.spring.boot.bean.ApijsonInitializingBean; import io.yunjiao.apijson.spring.boot.configurer.ApijsonFunctionParserConfigurer; import io.yunjiao.apijson.spring.boot.configurer.ApijsonSqlConfigConfigurer; import io.yunjiao.apijson.spring.boot.configurer.ApijsonVerifierConfigurer; +import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.ObjectProvider; @@ -19,6 +20,11 @@ import org.springframework.context.annotation.Bean; @RequiredArgsConstructor @AutoConfiguration public class ApijsonInitAutoConfiguration { + @PostConstruct + public void postConstruct() { + log.info("Apijson Init AutoConfiguration"); + } + /** * {@link ApijsonInitializingBean} 初始化 diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfiguration.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfiguration.java index 288e55a..48f5af2 100644 --- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfiguration.java +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfiguration.java @@ -10,6 +10,7 @@ import io.yunjiao.apijson.orm.NewIdStrategy; import io.yunjiao.apijson.spring.boot.autoconfigure.condition.ApllicationCondition; import io.yunjiao.apijson.spring.boot.bean.Fastjson2InitializingBean; import io.yunjiao.apijson.util.ApijsonConsts; +import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -33,6 +34,11 @@ import javax.sql.DataSource; @ConditionalOnClass({APIJSONApplication.class}) public class Fastjson2ApplicationAutoConfiguration { + @PostConstruct + public void postConstruct() { + log.info("Fastjson2 Application Auto Configuration"); + } + /** * Fastjson2创建器 实例化 * @param dataSource 数据源 diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfiguration.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfiguration.java index 14b628b..1017b51 100644 --- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfiguration.java +++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfiguration.java @@ -10,6 +10,7 @@ import io.yunjiao.apijson.orm.NewIdStrategy; import io.yunjiao.apijson.spring.boot.autoconfigure.condition.ApllicationCondition; import io.yunjiao.apijson.spring.boot.bean.GsonInitializingBean; import io.yunjiao.apijson.util.ApijsonConsts; +import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -33,6 +34,11 @@ import javax.sql.DataSource; @ConditionalOnClass({APIJSONApplication.class}) public class GsonApplicationAutoConfiguration { + @PostConstruct + public void postConstruct() { + log.info("Gson Application Auto Configuration"); + } + /** * Gson创建器 实例化 * @param dataSource 数据源 -- Gitee