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