diff --git a/ARTICLE.md b/ARTICLE.md
index 6414d7519c74f17c8857b21d11312a0ccfca2c9e..05e86aa404af175af2da8aada0f10bf9ceff03c3 100644
--- a/ARTICLE.md
+++ b/ARTICLE.md
@@ -2,4 +2,5 @@
* [How to Implement a Custom, Sequence-Based ID Generator](https://thorben-janssen.com/custom-sequence-based-idgenerator/)
* [如何高效优雅的使用java枚举](https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247533478&idx=1&sn=e490a390880decde70b92ee61047117c&chksm=e89c9a44be6b3f84aecd36ec7d6e3062da96bb9c84c8677ad7d587655d476f53663a5b0f406c&mpshare=1&scene=23&srcid=0612S6dpx1QsRkGS9tNuz2nn&sharer_shareinfo=314db2398ff71a77a92925a68003820f&sharer_shareinfo_first=314db2398ff71a77a92925a68003820f#rd)
-* [一文吃透 Apache Tika:从文件解析到元数据提取的全能工具库](https://zhuanlan.zhihu.com/p/1932473734637281918)
\ No newline at end of file
+* [一文吃透 Apache Tika:从文件解析到元数据提取的全能工具库](https://zhuanlan.zhihu.com/p/1932473734637281918)
+* [Spring Boot 遇上Apache Tika,数据提取竟如此简单!](https://mp.weixin.qq.com/s?__biz=Mzk0ODYyNjE4NA==&mid=2247488503&idx=1&sn=571aded8fbbf782a1c34f24e296a2ed9&chksm=c23d5c12c39c1f97d74cd4ba69c268a08ef9a9fc4950262bba95fb2ea3914766177c0ea11356&mpshare=1&scene=23&srcid=0829OVWDAPuIv1HKCMwNVik3&sharer_shareinfo=70614378e0d640a391dbd78bdce61d20&sharer_shareinfo_first=70614378e0d640a391dbd78bdce61d20#rd)
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9f256e4c49149e1c7f959df74f6039da2b934070..dd1769fb1b1be48fcabde763e04e66b8620d6c25 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,15 @@
# 变更日志
-## [未发布]
+## [路线图]
+- starter-tika-client
+- starter-tika-server
+- starter-keycloak-server
+- starter-s3
+- starter-cache
+- starter-data-tenant
+- starter-jasperreports
+
+## [0.4.0]
### 新增
- 集成uid-generator框架,生成ID
- 自动配置cn.hutool.extra.spring.SpringUtil工具
@@ -9,6 +18,7 @@
- 集成Tika
- 验证码缓存工厂(CaptchaCacheFactory),单例模式
- 扩展APIJSON框架,实现多数据源
+- 字体工具,支持:阿里巴巴普惠,思源黑体,思源宋体
### 变更
-
diff --git a/README.md b/README.md
index e2a68bb92bfdc5a947bb26fb37201855b3b30af9..04124dc0e3c8289356cf5cc07997b684c527c848 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
基于`Spring Boot`框架,集成其他框架开发的`Starter`
-[使用指南](https://yunjiao-source.github.io)
+[使用指南](https://yunjiao-spring-boot.pages.dev/)
## 发布版本
diff --git a/autoconfigure/pom.xml b/autoconfigure/pom.xml
index 71c4d171bb0def934866d93d9783f1b4d6dd2888..320fafd557432da757eadcf9393ddad963fc1290 100644
--- a/autoconfigure/pom.xml
+++ b/autoconfigure/pom.xml
@@ -52,12 +52,12 @@
extension-id
true
-
- com.google.guava
- guava
+ io.gitee.yunjiao-source.spring-boot
+ extension-tika
true
+
org.slf4j
slf4j-api
@@ -99,6 +99,7 @@
true
+
com.querydsl
querydsl-sql-spring
@@ -117,12 +118,7 @@
true
-
- cn.hutool
- hutool-core
- true
-
-
+
com.github.APIJSON
apijson-framework
@@ -139,11 +135,26 @@
true
+
+
+
+ io.undertow
+ undertow-core
+ true
+
+
+ io.undertow
+ undertow-websockets-jsr
+ true
+
+
+
org.springframework.boot
spring-boot-starter-test
test
+
\ No newline at end of file
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonAutoConfiguration.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonAutoConfiguration.java
index bd8ced20c9277ab6afe0f81493b96fa936066190..d9597d923f885f6b8aaa5cb887be8283fa4763be 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonAutoConfiguration.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonAutoConfiguration.java
@@ -2,10 +2,10 @@ package yunjiao.springboot.autoconfigure.apijson;
import apijson.framework.APIJSONApplication;
-import yunjiao.springboot.extension.apjson._APIJSON;
-import yunjiao.springboot.extension.apjson.annotation.ApijsonRest;
-import yunjiao.springboot.extension.apjson.orm.IdKeyApijsonStrategy;
-import yunjiao.springboot.extension.apjson.orm.IdKeyStrategy;
+import yunjiao.springboot.extension.apijson._APIJSON;
+import yunjiao.springboot.extension.apijson.annotation.ApijsonRest;
+import yunjiao.springboot.extension.apijson.orm.IdKeyApijsonStrategy;
+import yunjiao.springboot.extension.apijson.orm.IdKeyStrategy;
import jakarta.annotation.Nonnull;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonInitConfiguration.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonInitConfiguration.java
index c6b5f592395eec5932f4e97b5769771d245e6b0e..f07222d8f06f01305a8c790c63f77fcf85f9291f 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonInitConfiguration.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonInitConfiguration.java
@@ -6,6 +6,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.extension.apijson.ApijsonFunctionParserConfigurer;
+import yunjiao.springboot.extension.apijson.ApijsonSqlConfigConfigurer;
+import yunjiao.springboot.extension.apijson.ApijsonVerifierConfigurer;
/**
* APIJSON初始化自动配置
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonInitializingBean.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonInitializingBean.java
index 0be497b91fa886ace3709d281f265e9656a25de6..138047959b36d41579d090040fb9bef68ce53c6d 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonInitializingBean.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonInitializingBean.java
@@ -4,6 +4,9 @@ import apijson.framework.*;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.ObjectProvider;
+import yunjiao.springboot.extension.apijson.ApijsonFunctionParserConfigurer;
+import yunjiao.springboot.extension.apijson.ApijsonSqlConfigConfigurer;
+import yunjiao.springboot.extension.apijson.ApijsonVerifierConfigurer;
import java.util.stream.Collectors;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlProperties.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlProperties.java
index d919bedfedb16bf1459017394bd9f6061cf0785a..c9708bcc54943ebb6777881008d0f55282c9718d 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlProperties.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlProperties.java
@@ -1,6 +1,6 @@
package yunjiao.springboot.autoconfigure.apijson;
-import yunjiao.springboot.extension.apjson.util.ApijsonConsts;
+import yunjiao.springboot.extension.apijson.util.ApijsonConsts;
import yunjiao.springboot.autoconfigure.util.PropertyNameConsts;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonUtils.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonUtils.java
index d161e3e2aabe607745b348f6113b1db7bc19e186..2c9a20fa76e088fac650c8f19e30194a110522f4 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonUtils.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonUtils.java
@@ -9,6 +9,9 @@ import apijson.orm.Entry;
import apijson.orm.script.ScriptExecutor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ObjectUtils;
+import yunjiao.springboot.extension.apijson.ApijsonFunctionParserConfigurer;
+import yunjiao.springboot.extension.apijson.ApijsonSqlConfigConfigurer;
+import yunjiao.springboot.extension.apijson.ApijsonVerifierConfigurer;
import java.util.*;
import java.util.function.BiConsumer;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/Fastjson2ApplicationConfiguration.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/Fastjson2ApplicationConfiguration.java
index 1c3be193f8960244a9a66e0dcb88e8dc3f333a2f..00af6e3765266eb251cded3ae19df74dc6584cd4 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/Fastjson2ApplicationConfiguration.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/Fastjson2ApplicationConfiguration.java
@@ -1,10 +1,5 @@
package yunjiao.springboot.autoconfigure.apijson;
-import yunjiao.springboot.extension.apjson.orm.IdKeyStrategy;
-import yunjiao.springboot.extension.apjson.orm.NewIdStrategy;
-import yunjiao.springboot.autoconfigure.apijson.condition.ApllicationCondition;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.*;
-import yunjiao.springboot.autoconfigure.util.PropertyNameConsts;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -15,6 +10,15 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.autoconfigure.apijson.condition.ApllicationCondition;
+import yunjiao.springboot.autoconfigure.apijson.fastjson2.Fastjson2InitializingBean;
+import yunjiao.springboot.autoconfigure.util.PropertyNameConsts;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2Creator;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2EXtRestController;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2RestController;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2SimpleCallback;
+import yunjiao.springboot.extension.apijson.orm.IdKeyStrategy;
+import yunjiao.springboot.extension.apijson.orm.NewIdStrategy;
import javax.sql.DataSource;
@@ -48,7 +52,7 @@ public class Fastjson2ApplicationConfiguration {
@ConditionalOnMissingBean
Fastjson2Creator fastjson2Creator(DataSource dataSource,
ApijsonSqlProperties sqlProperties) {
- Fastjson2Creator bean = new Fastjson2Creator(dataSource, sqlProperties);
+ Fastjson2Creator bean = new Fastjson2Creator(dataSource, sqlProperties.getConfig().getVersion());
if (log.isDebugEnabled()) {
log.debug("Configure Bean [Fastjson2 Creator -> {}]", bean);
}
@@ -109,7 +113,8 @@ public class Fastjson2ApplicationConfiguration {
*/
@Bean
Fastjson2RestController fastjson2RestController() {
- Fastjson2RestController bean = new Fastjson2RestController(properties);
+ Fastjson2RestController bean = new Fastjson2RestController(properties.isNeedVerifyLogin(),
+ properties.isNeedVerifyRole(), properties.isNeedVerifyContent());
if (log.isDebugEnabled()) {
log.debug("Configure Bean [Fastjson2 Rest Controller -> {}]", bean);
}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/GsonApplicationConfiguration.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/GsonApplicationConfiguration.java
index 9d3c8004d107c88268cc8e6eb0347b3464a7d611..49e3d07504433bbaf52003f16c9656329cd9e5c3 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/GsonApplicationConfiguration.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/GsonApplicationConfiguration.java
@@ -1,10 +1,5 @@
package yunjiao.springboot.autoconfigure.apijson;
-import yunjiao.springboot.extension.apjson.orm.IdKeyStrategy;
-import yunjiao.springboot.extension.apjson.orm.NewIdStrategy;
-import yunjiao.springboot.autoconfigure.apijson.condition.ApllicationCondition;
-import yunjiao.springboot.autoconfigure.apijson.gson.*;
-import yunjiao.springboot.autoconfigure.util.PropertyNameConsts;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -15,6 +10,15 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.autoconfigure.apijson.condition.ApllicationCondition;
+import yunjiao.springboot.autoconfigure.apijson.gson.GsonInitializingBean;
+import yunjiao.springboot.autoconfigure.util.PropertyNameConsts;
+import yunjiao.springboot.extension.apijson.gson.GsonCreator;
+import yunjiao.springboot.extension.apijson.gson.GsonEXtRestController;
+import yunjiao.springboot.extension.apijson.gson.GsonRestController;
+import yunjiao.springboot.extension.apijson.gson.GsonSimpleCallback;
+import yunjiao.springboot.extension.apijson.orm.IdKeyStrategy;
+import yunjiao.springboot.extension.apijson.orm.NewIdStrategy;
import javax.sql.DataSource;
@@ -48,7 +52,7 @@ public class GsonApplicationConfiguration {
@ConditionalOnMissingBean
GsonCreator gsonCreator(DataSource dataSource,
ApijsonSqlProperties sqlProperties) {
- GsonCreator bean = new GsonCreator(dataSource, sqlProperties);
+ GsonCreator bean = new GsonCreator(dataSource, sqlProperties.getConfig().getVersion());
if (log.isDebugEnabled()) {
log.debug("Configure Bean [Gson Creator -> {}]", bean);
}
@@ -104,7 +108,8 @@ public class GsonApplicationConfiguration {
@Bean
GsonRestController gsonRestController() {
- GsonRestController bean = new GsonRestController(properties);
+ GsonRestController bean = new GsonRestController(properties.isNeedVerifyLogin(),
+ properties.isNeedVerifyRole(), properties.isNeedVerifyContent());
if (log.isDebugEnabled()) {
log.debug("Configure Bean [Gson Rest Controller -> {}]", bean);
}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/NewIdStrategyConfiguration.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/NewIdStrategyConfiguration.java
index cab920d47c23b9ff6821e4097327c04a1c9f6851..075aeca84debc54ef3de36f3ddf04b687458d34b 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/NewIdStrategyConfiguration.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/NewIdStrategyConfiguration.java
@@ -9,7 +9,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
-import yunjiao.springboot.extension.apjson.orm.*;
+import yunjiao.springboot.extension.apijson.orm.*;
/**
* {@link NewIdStrategy}实现类自动配置
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2InitializingBean.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2InitializingBean.java
index cd255625757bc746f87e26db39cdfcfcb2427259..0f3c337b46891d32d214478cf0b60c51572553e4 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2InitializingBean.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2InitializingBean.java
@@ -2,10 +2,14 @@ package yunjiao.springboot.autoconfigure.apijson.fastjson2;
import apijson.Log;
import apijson.fastjson2.*;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonProperties;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.InitializingBean;
+import yunjiao.springboot.autoconfigure.apijson.ApijsonProperties;
+import yunjiao.springboot.autoconfigure.apijson.ApijsonUtils;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2Creator;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2SimpleCallback;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2SqlConfig;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2Verifier;
/**
* Fastjson2 应用初始化Bean
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonInitializingBean.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonInitializingBean.java
index 06adb5b893af25d7e228e65daa409b24e3db9fcf..04db38b59dfb2c807c5c0b6d83c44ea8d42f00b0 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonInitializingBean.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonInitializingBean.java
@@ -1,10 +1,14 @@
package yunjiao.springboot.autoconfigure.apijson.gson;
import apijson.gson.*;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonProperties;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.InitializingBean;
+import yunjiao.springboot.autoconfigure.apijson.ApijsonProperties;
+import yunjiao.springboot.autoconfigure.apijson.ApijsonUtils;
+import yunjiao.springboot.extension.apijson.gson.GsonCreator;
+import yunjiao.springboot.extension.apijson.gson.GsonSimpleCallback;
+import yunjiao.springboot.extension.apijson.gson.GsonSqlConfig;
+import yunjiao.springboot.extension.apijson.gson.GsonVerifier;
/**
* Fastjson2 应用初始化Bean
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/AnjiCaptchaConfiguration.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/AnjiCaptchaConfiguration.java
index 4275b28bf471bd150c0d924049bfb86dbb2b5a04..ef8183d1474651dbf185182d0610a6283a19fc05 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/AnjiCaptchaConfiguration.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/AnjiCaptchaConfiguration.java
@@ -64,11 +64,11 @@ public class AnjiCaptchaConfiguration {
config.put(Const.ORIGINAL_PATH_PIC_CLICK, properties.getClickWord().getPicClick());
config.put(Const.CAPTCHA_SLIP_OFFSET, properties.getBlockPuzzle().getSlipOffset());
config.put(Const.CAPTCHA_AES_STATUS, "false");
- config.put(Const.CAPTCHA_WATER_FONT, properties.getWaterFont());
+ config.put(Const.CAPTCHA_WATER_FONT, properties.getWaterFont().getName());
config.put(Const.CAPTCHA_FONT_SIZE, properties.getClickWord().getFontSize());
- config.put(Const.CAPTCHA_FONT_STYLE, properties.getClickWord().getFontStyle().getMapping());
+ config.put(Const.CAPTCHA_FONT_STYLE, properties.getClickWord().getFontStyleEnum().getMapping());
config.put(Const.CAPTCHA_WORD_COUNT, properties.getClickWord().getClickWordCount());
fixBugCache(config);
@@ -144,6 +144,10 @@ public class AnjiCaptchaConfiguration {
return service;
}
+ /**
+ * 初始化滑块资源
+ * @param jigsaw 滑块资源路径
+ */
private void initJigsawResource(String jigsaw) {
if (StringUtils.hasText(jigsaw) && jigsaw.startsWith("classpath")) {
ImageUtils.cacheBootImage(getResourcesImagesFile(jigsaw + "/original/*.png"),
@@ -152,6 +156,10 @@ public class AnjiCaptchaConfiguration {
}
}
+ /**
+ * 初始化文字点击资源
+ * @param picClick 文字点击资源路径
+ */
private void initPicClickResource(String picClick) {
if (StringUtils.hasText(picClick) && picClick.startsWith("classpath")) {
ImageUtils.cacheBootImage(Collections.emptyMap(), Collections.emptyMap(),
@@ -159,7 +167,13 @@ public class AnjiCaptchaConfiguration {
}
}
- public Map getResourcesImagesFile(String path) {
+ /**
+ * 读取图片资源
+ *
+ * @param path 路径
+ * @return 资源
+ */
+ private Map getResourcesImagesFile(String path) {
Map imgMap = new HashMap<>();
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/AnjiCaptchaProperties.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/AnjiCaptchaProperties.java
index d141df3948823aec57420a42db7a5e815c972062..674c99da7f70f42873e6b397419b94db03a22d6d 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/AnjiCaptchaProperties.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/AnjiCaptchaProperties.java
@@ -4,7 +4,8 @@ import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import yunjiao.springboot.autoconfigure.util.PropertyNameConsts;
-import yunjiao.springboot.extension.common.model.FontStyle;
+import yunjiao.springboot.extension.common.model.FontNameEnum;
+import yunjiao.springboot.extension.common.model.FontStyleEnum;
/**
* anji验证码属性
@@ -20,9 +21,9 @@ public class AnjiCaptchaProperties {
private String waterMark = "我的水印";
/**
- * 右下角水印字体(文泉驿正黑).
+ * 右下角水印字体,默认宋体.
*/
- private String waterFont = "WenQuanZhengHei.ttf";
+ private FontNameEnum waterFont = FontNameEnum.SimSun;
/**
* 滑动验证码配置
@@ -75,7 +76,7 @@ public class AnjiCaptchaProperties {
/**
* 点选字体样式
*/
- private FontStyle fontStyle = FontStyle.bold;
+ private FontStyleEnum fontStyleEnum = FontStyleEnum.bold;
/**
* 点选字体大小
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/CaptchaServiceFactory.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/CaptchaServiceFactory.java
index 847075b4f5d15fe7522b195ebe28a82f759b391a..a8c61d2caddec5cb262318b9fba4d91261f6c719 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/CaptchaServiceFactory.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/CaptchaServiceFactory.java
@@ -21,7 +21,7 @@ public record CaptchaServiceFactory(Map service
* @return 实例
*/
public CaptchaService findService(String categoryName) {
- CaptchaCategory category = EnumCache.findByName(CaptchaCategory.class, categoryName);
+ CaptchaCategory category = EnumCache.getInstance().lookupByName(CaptchaCategory.class, categoryName);
if (category == null) {
throw new CaptchaException("验证码分类代码不存在,名称是:" + categoryName);
}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/HutoolCaptchaConfiguration.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/HutoolCaptchaConfiguration.java
index 427cdd34c7271c443a149e517baed97baf6e9da4..ef03286351c3a03b30635e3e19d3b514e7fb8d25 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/HutoolCaptchaConfiguration.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/HutoolCaptchaConfiguration.java
@@ -12,6 +12,7 @@ import yunjiao.springboot.extension.captcha.hutool.*;
import yunjiao.springboot.extension.common.captcha.CaptchaService;
import java.awt.*;
+import java.util.Optional;
/**
* Hutool验证码配置
@@ -106,12 +107,10 @@ public class HutoolCaptchaConfiguration {
Assert.isTrue(drawing.getHeight() > 0, "验证码配置属性‘height‘值必须大于0");
Assert.isTrue(drawing.getInterfereCount() > 0, "验证码配置属性‘interfereCount‘值必须大于0");
- Float transparency = drawing.getTransparency();
- if (transparency != null) {
- Assert.isTrue(drawing.getTransparency() >= 0 && drawing.getTransparency() <= 1, "验证码配置属性‘transparency‘值必须在[0, 1]之间");
- }
- Assert.isTrue(drawing.getFuzziness() >= 0 && drawing.getFuzziness() <= 30, "验证码配置属性‘fuzziness‘值必须在[0, 30]之间");
-
+ Optional.ofNullable(drawing.getTransparency()).ifPresent(transparency ->
+ Assert.isTrue(drawing.getTransparency() >= 0 && drawing.getTransparency() <= 1, "验证码配置属性‘transparency‘值必须在[0, 1]之间"));
+ Optional.ofNullable(drawing.getFuzziness()).ifPresent(fuzziness ->
+ Assert.isTrue(drawing.getFuzziness() >= 0 && drawing.getFuzziness() <= 30, "验证码配置属性‘fuzziness‘值必须在[0, 30]之间"));
HutoolCaptchaProperties.CodeOptions code = drawing.getCode();
Assert.isTrue(code.getLength() > 0, "验证码配置属性‘code.length‘值必须大于0");
@@ -137,6 +136,6 @@ public class HutoolCaptchaConfiguration {
@SuppressWarnings({"all"})
private Font createFont(HutoolCaptchaProperties.FontOptions options) {
- return new Font(options.getName(), options.getStyle().getMapping(), options.getSize());
+ return options.getName().getFont(options.getStyle().getMapping(), options.getSize());
}
}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/HutoolCaptchaProperties.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/HutoolCaptchaProperties.java
index 09cf3a7651439fb2f3fa301ac633e1416ef757d8..9cce75cab41474745561158ada47a76437da9beb 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/HutoolCaptchaProperties.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/captcha/HutoolCaptchaProperties.java
@@ -1,8 +1,9 @@
package yunjiao.springboot.autoconfigure.captcha;
import yunjiao.springboot.extension.captcha.hutool.CodeGeneratorType;
-import yunjiao.springboot.extension.common.model.ColorType;
-import yunjiao.springboot.extension.common.model.FontStyle;
+import yunjiao.springboot.extension.common.model.ColorTypeEnum;
+import yunjiao.springboot.extension.common.model.FontNameEnum;
+import yunjiao.springboot.extension.common.model.FontStyleEnum;
import yunjiao.springboot.autoconfigure.util.PropertyNameConsts;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -22,23 +23,23 @@ public class HutoolCaptchaProperties {
*/
@NestedConfigurationProperty
private DrawingOptions line = DrawingOptions.of(new DrawingOptions(), 250, 50, 60,
- ColorType.white, null, 2, true, null, FontStyle.plain, 36,
+ ColorTypeEnum.white, null, null, true, FontNameEnum.Default, FontStyleEnum.plain, 36,
CodeGeneratorType.numAndChar, 5);
/**
* 圆圈干扰验证码
*/
@NestedConfigurationProperty
- private DrawingOptions circle = DrawingOptions.of(new DrawingOptions(), 250, 50, 30,
- ColorType.white, null, 2, true, null, FontStyle.plain, 36,
+ private DrawingOptions circle = DrawingOptions.of(new DrawingOptions(), 250, 50, 15,
+ ColorTypeEnum.white, null, null, true, FontNameEnum.Default, FontStyleEnum.plain, 36,
CodeGeneratorType.numAndChar, 5);
/**
* 扭曲干扰验证码
*/
@NestedConfigurationProperty
- private DrawingOptions shear = DrawingOptions.of(new DrawingOptions(), 250, 50, 4,
- ColorType.white, null, 2, true, null, FontStyle.plain, 36,
+ private DrawingOptions shear = DrawingOptions.of(new DrawingOptions(), 250, 50, 8,
+ ColorTypeEnum.white, null, null, true, FontNameEnum.Default, FontStyleEnum.plain, 36,
CodeGeneratorType.numAndChar, 5);
/**
@@ -46,9 +47,12 @@ public class HutoolCaptchaProperties {
*/
@NestedConfigurationProperty
private GifDrawingOptions gif = GifDrawingOptions.of(new GifDrawingOptions(), 250, 50, 10,
- ColorType.white, null, 2, true, null, FontStyle.plain, 36,
+ ColorTypeEnum.white, null, null, true, FontNameEnum.Default, FontStyleEnum.plain, 36,
CodeGeneratorType.numAndChar, 5, 10, 0, 0, 255);
+ /**
+ * gif绘图配置
+ */
@Data
@EqualsAndHashCode(callSuper = true)
public static class GifDrawingOptions extends DrawingOptions {
@@ -73,13 +77,35 @@ public class HutoolCaptchaProperties {
private Integer maxColor;
+ /**
+ * 创建gif绘图配置实例
+ *
+ * @param options 必须值
+ * @param width 必须值
+ * @param height 必须值
+ * @param interfereCount 必须值
+ * @param backgroundColor 必须值
+ * @param transparency 必须值
+ * @param fuzziness 必须值
+ * @param validIgnoreCase 校验忽略大小写
+ * @param fontName 可以空
+ * @param fontStyleEnum 必须值
+ * @param fontSize 必须值
+ * @param generator 必须值
+ * @param length 必须值
+ * @param quality 量化器取样间隔
+ * @param repeat 帧循环次数
+ * @param minColor 设置随机颜色时,最小的取色范围
+ * @param maxColor 设置随机颜色时,最大的取色范围
+ * @return 实例
+ */
public static GifDrawingOptions of(GifDrawingOptions options, int width, int height, int interfereCount,
- ColorType backgroundColor, Float transparency, Integer fuzziness, Boolean validIgnoreCase,
- String fontName, FontStyle fontStyle, Integer fontSize,
- CodeGeneratorType generator, int length,
+ ColorTypeEnum backgroundColor, Float transparency, Integer fuzziness, Boolean validIgnoreCase,
+ FontNameEnum fontName, FontStyleEnum fontStyleEnum, Integer fontSize,
+ CodeGeneratorType generator, int length,
Integer quality, Integer repeat, Integer minColor, Integer maxColor) {
DrawingOptions.of(options, width, height, interfereCount, backgroundColor, transparency, fuzziness, validIgnoreCase, fontName,
- fontStyle, fontSize, generator, length);
+ fontStyleEnum, fontSize, generator, length);
options.setQuality(quality);
options.setRepeat(repeat);
options.setMinColor(minColor);
@@ -89,7 +115,7 @@ public class HutoolCaptchaProperties {
}
/**
- * 绘图选项
+ * 绘图配置
*/
@Data
public static class DrawingOptions {
@@ -111,7 +137,7 @@ public class HutoolCaptchaProperties {
/**
* 背景色
*/
- private ColorType backgroundColor;
+ private ColorTypeEnum backgroundColor;
/**
* 文字透明度,取值0~1,1表示不透明
@@ -150,18 +176,19 @@ public class HutoolCaptchaProperties {
* @param backgroundColor 必须值
* @param transparency 必须值
* @param fuzziness 必须值
+ * @param validIgnoreCase 校验忽略大小写
* @param fontName 可以空
- * @param fontStyle 必须值
+ * @param fontStyleEnum 必须值
* @param fontSize 必须值
* @param generator 必须值
* @param length 必须值
* @return 实例
*/
public static DrawingOptions of(DrawingOptions options, int width, int height, int interfereCount,
- ColorType backgroundColor, Float transparency, Integer fuzziness, Boolean validIgnoreCase,
- String fontName, FontStyle fontStyle, Integer fontSize,
+ ColorTypeEnum backgroundColor, Float transparency, Integer fuzziness, Boolean validIgnoreCase,
+ FontNameEnum fontName, FontStyleEnum fontStyleEnum, Integer fontSize,
CodeGeneratorType generator, int length) {
- FontOptions font = FontOptions.of(new FontOptions(), fontName, fontStyle, fontSize);
+ FontOptions font = FontOptions.of(new FontOptions(), fontName, fontStyleEnum, fontSize);
CodeOptions code = CodeOptions.of(new CodeOptions(), generator, length);
options.setWidth(width);
@@ -184,14 +211,14 @@ public class HutoolCaptchaProperties {
@Data
public static class FontOptions {
/**
- * 字体名称, 为空表示使用系统默认字体
+ * 字体名称, 系统默认字体
*/
- private String name;
+ private FontNameEnum name = FontNameEnum.Default;
/**
* 字体风格
*/
- private FontStyle style;
+ private FontStyleEnum style;
/**
* 字体大小
@@ -207,7 +234,7 @@ public class HutoolCaptchaProperties {
* @param size 必须值
* @return 实例
*/
- public static FontOptions of(FontOptions options, String name, FontStyle style, Integer size) {
+ public static FontOptions of(FontOptions options, FontNameEnum name, FontStyleEnum style, Integer size) {
options.setName(name);
options.setStyle(style);
options.setSize(size);
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/util/UtilsAutoConfig.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/common/CommonAutoConfig.java
similarity index 52%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/util/UtilsAutoConfig.java
rename to autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/common/CommonAutoConfig.java
index 1005c6695b2aaec2fb85ecd083e20ef2306b0c69..5efb47121945d64136dfff71abf583e625fed259 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/util/UtilsAutoConfig.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/common/CommonAutoConfig.java
@@ -1,6 +1,7 @@
-package yunjiao.springboot.autoconfigure.util;
+package yunjiao.springboot.autoconfigure.common;
import cn.hutool.extra.spring.SpringUtil;
+import io.undertow.websockets.jsr.WebSocketDeploymentInfo;
import jakarta.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -9,20 +10,20 @@ import org.springframework.context.annotation.Bean;
import yunjiao.springboot.extension.common._Common;
/**
- * 工具自动配置
+ * 通用的自动配置
*
* @author yangyunjiao
*/
@Slf4j
@AutoConfiguration
@ConditionalOnClass({_Common.class})
-public class UtilsAutoConfig {
+public class CommonAutoConfig {
/**
* {@link PostConstruct} 注解方法
*/
@PostConstruct
public void postConstruct() {
- log.info("Utils Auto Configuration");
+ log.info("Common Auto Configuration");
}
@Bean
@@ -33,4 +34,20 @@ public class UtilsAutoConfig {
}
return bean;
}
+
+ /**
+ * 解决:
+ *
+ * @return 实例
+ */
+ @Bean
+ @ConditionalOnClass({WebSocketDeploymentInfo.class})
+ CustomizerUndertowServletWebServerFactory customizerUndertowServletWebServerFactory() {
+ CustomizerUndertowServletWebServerFactory bean = new CustomizerUndertowServletWebServerFactory();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Configure Bean [Customizer Undertow Servlet Web Server Factory -> {}]", bean);
+ }
+ return bean;
+ }
}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/common/CustomizerUndertowServletWebServerFactory.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/common/CustomizerUndertowServletWebServerFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..f61c2d2f95ddd48f775c641dab607db11f1e75ca
--- /dev/null
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/common/CustomizerUndertowServletWebServerFactory.java
@@ -0,0 +1,23 @@
+package yunjiao.springboot.autoconfigure.common;
+
+import io.undertow.server.DefaultByteBufferPool;
+import io.undertow.websockets.jsr.WebSocketDeploymentInfo;
+import org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory;
+import org.springframework.boot.web.server.WebServerFactoryCustomizer;
+
+/**
+ * {link UndertowServletWebServerFactory} 自定义配置。
+ * 解决:UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
+ *
+ * @author yangyunjiao
+ */
+public class CustomizerUndertowServletWebServerFactory implements WebServerFactoryCustomizer {
+ @Override
+ public void customize(UndertowServletWebServerFactory factory) {
+ factory.addDeploymentInfoCustomizers(deploymentInfo -> {
+ WebSocketDeploymentInfo webSocketDeploymentInfo = new WebSocketDeploymentInfo();
+ webSocketDeploymentInfo.setBuffers(new DefaultByteBufferPool(false, 1024));
+ deploymentInfo.addServletContextAttribute(WebSocketDeploymentInfo.ATTRIBUTE_NAME, webSocketDeploymentInfo);
+ });
+ }
+}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/id/HutoolIdConfiguration.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/id/HutoolIdConfiguration.java
index 301f19535f665b104535f7c024d4164685089934..b0decf0db4beffd7896933611cf7df85bfb6df09 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/id/HutoolIdConfiguration.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/id/HutoolIdConfiguration.java
@@ -29,7 +29,7 @@ public class HutoolIdConfiguration {
}
/**
- * 雪花算法, 获取系统变量 SNOWFLAKE_WORKER_ID 和 SNOWFLAKE_DATACENTER_ID 值创建,
+ * 雪花算法, 获取系统变量 'yunjiao.springboot.extension.id.snowflakeWorkId' 和 'yunjiao.springboot.extension.id.snowflakeDatacenterId' 值创建,
* 如果不存在,值默认是1
*
* @param env 必须值
@@ -47,7 +47,7 @@ public class HutoolIdConfiguration {
}
if (workerId == 1L && datacenterId == 1L) {
- log.warn("Hutool 框架雪花算法配置使用默认参数。如需支持分布式,请设置系统环境变量:{} 与 {}", CommonConsts.ENV_SNOWFLAKE_WORKER_ID, CommonConsts.ENV_SNOWFLAKE_DATACENTER_ID);
+ log.warn("Hutool 框架雪花算法配置使用默认参数。如需支持分布式,请设置系统环境变量:'{}' 与 '{}'", CommonConsts.ENV_SNOWFLAKE_WORKER_ID, CommonConsts.ENV_SNOWFLAKE_DATACENTER_ID);
}
return snowflake;
}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/querydsl/jpa/QuerydslJPAConfiguration.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/querydsl/jpa/QuerydslJPAConfiguration.java
index e7430177b687191a8b576f0b2968cb9074a69aba..78bc95f1463ed4f9c5e5a3d9d54aa4a65c1777ff 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/querydsl/jpa/QuerydslJPAConfiguration.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/querydsl/jpa/QuerydslJPAConfiguration.java
@@ -31,11 +31,16 @@ public class QuerydslJPAConfiguration {
log.info("QueryDSL JPA Configuration");
}
+ /**
+ * {@link JPAQueryFactory} 创建实例
+ * @param jpaQueryFactoryConfigurers 自定义配置
+ * @return 实例
+ */
@Bean
- public JPAQueryFactory jpaQueryFactory(ObjectProvider jpaQueryFactoryConfigurer) {
+ public JPAQueryFactory jpaQueryFactory(ObjectProvider jpaQueryFactoryConfigurers) {
JPAQueryFactory bean = new JPAQueryFactory(entityManager);
// 执行自定义配置
- jpaQueryFactoryConfigurer.orderedStream().forEach(configurer -> configurer.configure(bean));
+ jpaQueryFactoryConfigurers.orderedStream().forEach(configurer -> configurer.configure(bean));
if (log.isDebugEnabled()) {
log.debug("Configure Bean [JPA Query Factory -> {}]", bean);
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/querydsl/sql/QuerydslSQLConfiguration.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/querydsl/sql/QuerydslSQLConfiguration.java
index 5a6b29cfe5657da60f3efc2e6f9cc992608c1ef4..3a8bc57551afdb98e91a72b0249f741dd3e5a022 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/querydsl/sql/QuerydslSQLConfiguration.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/querydsl/sql/QuerydslSQLConfiguration.java
@@ -5,7 +5,6 @@ import com.querydsl.sql.SQLQueryFactory;
import com.querydsl.sql.SQLTemplates;
import com.querydsl.sql.spring.SpringConnectionProvider;
import com.querydsl.sql.spring.SpringExceptionTranslator;
-import yunjiao.springboot.extension.querydsl.sql.SQLQueryCurdExecutor;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -14,6 +13,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.extension.querydsl.sql.SQLQueryCurdExecutor;
import javax.sql.DataSource;
@@ -29,11 +29,20 @@ import javax.sql.DataSource;
public class QuerydslSQLConfiguration {
private final DataSource dataSource;
+ /**
+ * {@link PostConstruct} 注解方法
+ */
@PostConstruct
public void postConstruct() {
log.info("QueryDSL SQL Configuration");
}
+ /**
+ * {@link SQLQueryFactory} 创建实例
+ * @param sqlTemplates 必须值
+ * @param sqlQueryFactoryConfigurers 自定义配置
+ * @return 实例
+ */
@Bean
SQLQueryFactory sqlQueryFactory(SQLTemplates sqlTemplates,
ObjectProvider sqlQueryFactoryConfigurers) {
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/tika/TikaAutoConfiguration.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/tika/TikaAutoConfiguration.java
new file mode 100644
index 0000000000000000000000000000000000000000..dac55f55d3bb0710d5ffe526a62c794e39b08460
--- /dev/null
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/tika/TikaAutoConfiguration.java
@@ -0,0 +1,70 @@
+package yunjiao.springboot.autoconfigure.tika;
+
+import jakarta.annotation.PostConstruct;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.tika.Tika;
+import org.apache.tika.config.TikaConfig;
+import org.apache.tika.detect.Detector;
+import org.apache.tika.exception.TikaException;
+import org.apache.tika.parser.AutoDetectParser;
+import org.apache.tika.parser.Parser;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.core.io.Resource;
+import org.xml.sax.SAXException;
+import yunjiao.springboot.extension.tika._TIKA;
+
+import java.io.IOException;
+
+/**
+ * 验证码 自动配置
+ *
+ * @author yangyunjiao
+ */
+@Slf4j
+@AutoConfiguration
+@ConditionalOnClass({_TIKA.class})
+@EnableConfigurationProperties({TikaProperties.class})
+public class TikaAutoConfiguration {
+ /**
+ * {@link PostConstruct} 注解方法
+ */
+ @PostConstruct
+ public void postConstruct() {
+ log.info("Tika Auto Configuration");
+ }
+
+ @Bean
+ Tika tika(TikaProperties properties) {
+ TikaConfig config = createTikaConfig(properties.getConfigXmlFile());
+
+ Detector detector = config.getDetector();
+ Parser autoDetectParser = new AutoDetectParser(config);
+ Tika bean = new Tika(detector, autoDetectParser);
+ if (log.isDebugEnabled()) {
+ log.debug("Configure Bean [Tika -> {}]", bean);
+ }
+
+ return bean;
+ }
+
+ private TikaConfig createTikaConfig(Resource res) {
+ if (res != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Loading tika config file: {}", res.getFilename());
+ }
+ try {
+ return new TikaConfig(res.getInputStream());
+ } catch (IOException e) {
+ throw new RuntimeException("Unable to read default configuration", e);
+ } catch (TikaException | SAXException e) {
+ throw new RuntimeException("Unable to access default configuration", e);
+ }
+ }
+
+ return TikaConfig.getDefaultConfig();
+ }
+
+}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/tika/TikaProperties.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/tika/TikaProperties.java
new file mode 100644
index 0000000000000000000000000000000000000000..4f22b9b89b5da000183b702b53c3e69516b8ae28
--- /dev/null
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/tika/TikaProperties.java
@@ -0,0 +1,20 @@
+package yunjiao.springboot.autoconfigure.tika;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.core.io.Resource;
+import yunjiao.springboot.autoconfigure.util.PropertyNameConsts;
+
+/**
+ * Tika配置文件
+ *
+ * @author yangyunjiao
+ */
+@Data
+@ConfigurationProperties(prefix = PropertyNameConsts.PROPERTY_PREFIX_TIKA)
+public class TikaProperties {
+ /**
+ * tika配置xml文件路径,如:classpath:tika/config.xml
+ */
+ private Resource configXmlFile;
+}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/util/PropertyNameConsts.java b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/util/PropertyNameConsts.java
index dc8163526319b7da200d722795444a83dca60a31..8afaeb0b6f87ca6cc1d399f8607f957a86a66224 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/util/PropertyNameConsts.java
+++ b/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/util/PropertyNameConsts.java
@@ -16,6 +16,11 @@ public class PropertyNameConsts {
*/
public static final String PROPERTY_PREFIX_SPRING = "spring";
+ /**
+ * tika 属性
+ */
+ public static final String PROPERTY_PREFIX_TIKA = PROPERTY_PREFIX_SPRING + ".tika";
+
// id
/**
diff --git a/autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index 8aecf27b30312201077d5edc2053cf9930c1914d..b6876bd034172f412f7b164dea613d1e1e226e1e 100644
--- a/autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,5 +1,6 @@
+yunjiao.springboot.autoconfigure.common.CommonAutoConfig
yunjiao.springboot.autoconfigure.querydsl.QueryDSLAutoConfig
yunjiao.springboot.autoconfigure.id.IdAutoConfiguration
yunjiao.springboot.autoconfigure.captcha.CaptchaAutoConfiguration
yunjiao.springboot.autoconfigure.apijson.ApijsonAutoConfiguration
-yunjiao.springboot.autoconfigure.util.UtilsAutoConfig
\ No newline at end of file
+yunjiao.springboot.autoconfigure.tika.TikaAutoConfiguration
\ No newline at end of file
diff --git a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonAutoConfigurationTest.java b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonAutoConfigurationTest.java
index b2e7d17be3d50099a3f6945dbba1a2dc29364727..9c70af45de85c4e5ef335c7fe7847f4772d8e88e 100644
--- a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonAutoConfigurationTest.java
+++ b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonAutoConfigurationTest.java
@@ -1,7 +1,7 @@
package yunjiao.springboot.autoconfigure.apijson;
-import yunjiao.springboot.extension.apjson.orm.IdKeyApijsonStrategy;
-import yunjiao.springboot.extension.apjson.orm.IdKeyStrategy;
+import yunjiao.springboot.extension.apijson.orm.IdKeyApijsonStrategy;
+import yunjiao.springboot.extension.apijson.orm.IdKeyStrategy;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
diff --git a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonFunctionParserConfigurerTest.java b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonFunctionParserConfigurerTest.java
index 0736b33738cadb11488f0c8053d85dd66149849d..02cbcfc989577528dab92b1c944687ca2085b1a6 100644
--- a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonFunctionParserConfigurerTest.java
+++ b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonFunctionParserConfigurerTest.java
@@ -4,6 +4,7 @@ import apijson.framework.APIJSONFunctionParser;
import apijson.orm.AbstractFunctionParser;
import apijson.orm.script.ScriptExecutor;
import org.junit.jupiter.api.Test;
+import yunjiao.springboot.extension.apijson.ApijsonFunctionParserConfigurer;
import java.util.List;
import java.util.Map;
diff --git a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonInitConfigurationTest.java b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonInitConfigurationTest.java
index 52437177288829d5fe62787ba83f72cb5470f0d8..7a7813d0ae5b07cb1ad328626a84e6dd9cc76c42 100644
--- a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonInitConfigurationTest.java
+++ b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonInitConfigurationTest.java
@@ -7,6 +7,9 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.extension.apijson.ApijsonFunctionParserConfigurer;
+import yunjiao.springboot.extension.apijson.ApijsonSqlConfigConfigurer;
+import yunjiao.springboot.extension.apijson.ApijsonVerifierConfigurer;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
diff --git a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlConfigConfigurerTest.java b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlConfigConfigurerTest.java
index 6cc802ba4da288ae81ba16c47c81ae7112c98679..97080056ed91901d849a5e44dadd5a28aa04d05f 100644
--- a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlConfigConfigurerTest.java
+++ b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlConfigConfigurerTest.java
@@ -4,6 +4,7 @@ import apijson.framework.APIJSONSQLConfig;
import apijson.framework.ColumnUtil;
import apijson.orm.AbstractSQLConfig;
import org.junit.jupiter.api.Test;
+import yunjiao.springboot.extension.apijson.ApijsonSqlConfigConfigurer;
import java.util.List;
import java.util.Map;
diff --git a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlPropertiesTest.java b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlPropertiesTest.java
index a4423423866e419fff9f6cd606cd319f4bb1adf5..ce311589451f16a58f09694614099aefe547e852 100644
--- a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlPropertiesTest.java
+++ b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlPropertiesTest.java
@@ -1,6 +1,6 @@
package yunjiao.springboot.autoconfigure.apijson;
-import yunjiao.springboot.extension.apjson.util.ApijsonConsts;
+import yunjiao.springboot.extension.apijson.util.ApijsonConsts;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
diff --git a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonVerifierConfigurerTest.java b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonVerifierConfigurerTest.java
index 4e41c58ca9997368f8e4580a95636c8113b0723a..7ce6d6642f32e20b39d4ca9c9fc5476f013d1244 100644
--- a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonVerifierConfigurerTest.java
+++ b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/ApijsonVerifierConfigurerTest.java
@@ -5,6 +5,7 @@ import apijson.framework.APIJSONVerifier;
import apijson.orm.AbstractVerifier;
import apijson.orm.Entry;
import org.junit.jupiter.api.Test;
+import yunjiao.springboot.extension.apijson.ApijsonVerifierConfigurer;
import java.util.List;
import java.util.Map;
diff --git a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/NewIdStrategyConfigurationTest.java b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/NewIdStrategyConfigurationTest.java
index 6263638dd845f4b3432aacc6852bee6ddcaf42a5..b11ad15de3c5fc4ce9fe00903f1cb102612052c2 100644
--- a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/NewIdStrategyConfigurationTest.java
+++ b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/NewIdStrategyConfigurationTest.java
@@ -7,7 +7,7 @@ import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
-import yunjiao.springboot.extension.apjson.orm.*;
+import yunjiao.springboot.extension.apijson.orm.*;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
diff --git a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/RestApiAutoConfigurationTest.java b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/RestApiAutoConfigurationTest.java
index 2068ac9f4fd71abca1e45280469b90aae135998f..444428ddc75a9c0de3327f802b277556721878b4 100644
--- a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/RestApiAutoConfigurationTest.java
+++ b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/apijson/RestApiAutoConfigurationTest.java
@@ -1,14 +1,14 @@
package yunjiao.springboot.autoconfigure.apijson;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.Fastjson2EXtRestController;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.Fastjson2RestController;
-import yunjiao.springboot.autoconfigure.apijson.gson.GsonEXtRestController;
-import yunjiao.springboot.autoconfigure.apijson.gson.GsonRestController;
-import yunjiao.springboot.autoconfigure.util.PropertyNameConsts;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
+import yunjiao.springboot.autoconfigure.util.PropertyNameConsts;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2EXtRestController;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2RestController;
+import yunjiao.springboot.extension.apijson.gson.GsonEXtRestController;
+import yunjiao.springboot.extension.apijson.gson.GsonRestController;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/captcha/CaptchaDemo.java b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/captcha/CaptchaDemo.java
new file mode 100644
index 0000000000000000000000000000000000000000..48af21a364542ed70d482e9cedf06862e568221b
--- /dev/null
+++ b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/captcha/CaptchaDemo.java
@@ -0,0 +1,175 @@
+package yunjiao.springboot.autoconfigure.captcha;
+
+import com.anji.captcha.service.CaptchaCacheService;
+import yunjiao.springboot.extension.common.captcha.CaptchaCategory;
+import yunjiao.springboot.extension.common.captcha.CaptchaData;
+import yunjiao.springboot.extension.common.captcha.CaptchaService;
+import yunjiao.springboot.extension.common.util.EnumCache;
+
+import javax.swing.*;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 验证码示例
+ *
+ * @author yangyunjiao
+ */
+public class CaptchaDemo {
+ static class CaptchaFrame extends JFrame {
+
+ private CaptchaServiceFactory captchaServiceFactory;
+ private CaptchaData currentCaptcha;
+
+ private JComboBox typeComboBox;
+ private JLabel captchaImageLabel;
+ private JLabel backgroundImageLabel;
+ private JTextField inputField;
+ private JButton verifyButton;
+ private JButton refreshButton;
+
+ public CaptchaFrame() {
+ buildService();
+
+ setTitle("验证码校验系统");
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ setSize(500, 350);
+ setLocationRelativeTo(null);
+
+ initUI();
+ refreshCaptcha();
+ }
+
+ private void buildService() {
+ HutoolCaptchaConfiguration hutoolCaptchaConfiguration = new HutoolCaptchaConfiguration();
+ HutoolCaptchaProperties hutoolCaptchaProperties = new HutoolCaptchaProperties();
+ Map services = new HashMap<>();
+
+ services.put(CaptchaCategory.line, hutoolCaptchaConfiguration.lineCaptchaService(hutoolCaptchaProperties));
+ services.put(CaptchaCategory.circle, hutoolCaptchaConfiguration.circleCaptchaService(hutoolCaptchaProperties));
+ services.put(CaptchaCategory.shear, hutoolCaptchaConfiguration.sheareCaptchaService(hutoolCaptchaProperties));
+ services.put(CaptchaCategory.gif, hutoolCaptchaConfiguration.gifCaptchaService(hutoolCaptchaProperties));
+
+ AnjiCaptchaConfiguration anjiCaptchaConfiguration = new AnjiCaptchaConfiguration();
+ AnjiCaptchaProperties anjiCaptchaProperties = new AnjiCaptchaProperties();
+ CaptchaCacheService captchaCacheService = com.anji.captcha.service.impl.CaptchaServiceFactory.getCache("local");
+ com.anji.captcha.service.CaptchaService captchaService = anjiCaptchaConfiguration.captchaService(anjiCaptchaProperties);
+
+ services.put(CaptchaCategory.blockPuzzle, anjiCaptchaConfiguration.blockPuzzleCaptchaService(captchaService, captchaCacheService, anjiCaptchaProperties));
+ services.put(CaptchaCategory.clickWord, anjiCaptchaConfiguration.clickWorkCaptchaService(captchaService, captchaCacheService, anjiCaptchaProperties));
+ captchaServiceFactory = new CaptchaServiceFactory(services);
+ }
+
+ private void initUI() {
+ setLayout(new BorderLayout(10, 10));
+
+ // 顶部面板 - 验证码类型选择
+ JPanel topPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
+ topPanel.add(new JLabel("验证码类型:"));
+
+ String[] captchaName = Arrays.stream(CaptchaCategory.values()).map(CaptchaCategory::getDescription).toArray(String[]::new);
+
+ typeComboBox = new JComboBox<>(captchaName);
+ topPanel.add(typeComboBox);
+
+ refreshButton = new JButton("刷新验证码");
+ refreshButton.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ refreshCaptcha();
+ }
+ });
+ topPanel.add(refreshButton);
+
+ add(topPanel, BorderLayout.NORTH);
+
+ // 中间面板 - 验证码图片显示
+ JPanel centerPanel = new JPanel(new BorderLayout());
+ centerPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
+ captchaImageLabel = new JLabel();
+ captchaImageLabel.setHorizontalAlignment(SwingConstants.CENTER);
+ backgroundImageLabel = new JLabel();
+ backgroundImageLabel.setHorizontalAlignment(SwingConstants.CENTER);
+ centerPanel.add(captchaImageLabel, BorderLayout.CENTER);
+ centerPanel.add(backgroundImageLabel, BorderLayout.SOUTH);
+
+ add(centerPanel, BorderLayout.CENTER);
+
+ // 底部面板 - 输入和验证
+ JPanel bottomPanel = new JPanel(new BorderLayout(10, 10));
+ bottomPanel.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
+
+ JPanel inputPanel = new JPanel(new BorderLayout(10, 10));
+ inputPanel.add(new JLabel("请输入验证码:"), BorderLayout.WEST);
+ inputField = new JTextField();
+ inputPanel.add(inputField, BorderLayout.CENTER);
+
+ verifyButton = new JButton("验证");
+ verifyButton.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ verifyCaptcha();
+ }
+ });
+ inputPanel.add(verifyButton, BorderLayout.EAST);
+
+ bottomPanel.add(inputPanel, BorderLayout.CENTER);
+ add(bottomPanel, BorderLayout.SOUTH);
+ }
+
+ private void refreshCaptcha() {
+ String selectedType = (String) typeComboBox.getSelectedItem();
+ CaptchaCategory category = EnumCache.getInstance()
+ .lookupByValue(CaptchaCategory.class, selectedType, CaptchaCategory::getDescription);
+ currentCaptcha = captchaServiceFactory.findService(category).draw();
+
+ try {
+ ImageIcon icon = new ImageIcon(currentCaptcha.captchaImage());
+ captchaImageLabel.setIcon(icon);
+
+ if (currentCaptcha.backgroundImage() != null) {
+ icon = new ImageIcon(currentCaptcha.backgroundImage());
+ backgroundImageLabel.setIcon(icon);
+ } else {
+ backgroundImageLabel.setIcon(null);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(this, "加载验证码图片失败", "错误", JOptionPane.ERROR_MESSAGE);
+ }
+
+ inputField.setText("");
+ }
+
+ private void verifyCaptcha() {
+ String userInput = inputField.getText().trim();
+ if (userInput.isEmpty()) {
+ JOptionPane.showMessageDialog(this, "请输入验证码", "提示", JOptionPane.WARNING_MESSAGE);
+ return;
+ }
+
+ String selectedType = (String) typeComboBox.getSelectedItem();
+ CaptchaCategory category = EnumCache.getInstance()
+ .lookupByValue(CaptchaCategory.class, selectedType, CaptchaCategory::getDescription);
+
+ boolean isValid = captchaServiceFactory.findService(category).verify(currentCaptcha.code(), userInput);
+ if (isValid) {
+ JOptionPane.showMessageDialog(this, "验证码正确!", "成功", JOptionPane.INFORMATION_MESSAGE);
+ refreshCaptcha();
+ } else {
+ JOptionPane.showMessageDialog(this, "验证码错误,请重新输入", "错误", JOptionPane.ERROR_MESSAGE);
+ inputField.setText("");
+ inputField.requestFocus();
+ }
+ }
+
+ }
+
+ public static void main(String[] args) {
+ SwingUtilities.invokeLater(() -> new CaptchaFrame().setVisible(true));
+ }
+}
diff --git a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/util/UtilsAutoConfigTest.java b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/common/CommonAutoConfigTest.java
similarity index 79%
rename from autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/util/UtilsAutoConfigTest.java
rename to autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/common/CommonAutoConfigTest.java
index e6847793588f3c5f3418d3b2f4c83939a9ee1906..41b348c8d1bfa87129eb409f13d7d7cf4b76f44d 100644
--- a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/util/UtilsAutoConfigTest.java
+++ b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/common/CommonAutoConfigTest.java
@@ -1,27 +1,28 @@
-package yunjiao.springboot.autoconfigure.util;
+package yunjiao.springboot.autoconfigure.common;
import cn.hutool.extra.spring.SpringUtil;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
+import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import static org.assertj.core.api.Assertions.assertThat;
/**
- * {@link UtilsAutoConfig} 单元测试用例
+ * {@link CommonAutoConfig} 单元测试用例
*
* @author yangyunjiao
*/
-public class UtilsAutoConfigTest {
+public class CommonAutoConfigTest {
private ApplicationContextRunner applicationContextRunner;
@BeforeEach
void setUp() {
applicationContextRunner = new ApplicationContextRunner()
- .withConfiguration(AutoConfigurations.of(UtilsAutoConfig.class, TestConfig.class));
+ .withConfiguration(AutoConfigurations.of(CommonAutoConfig.class, TestConfig.class));
}
@Test
@@ -29,6 +30,7 @@ public class UtilsAutoConfigTest {
applicationContextRunner
.run(context -> {
assertThat(context).hasSingleBean(SpringUtil.class);
+ assertThat(context).hasSingleBean(WebServerFactoryCustomizer.class);
assertThat(context).hasSingleBean(TestService.class);
});
}
diff --git a/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/tika/TikaAutoConfigurationTest.java b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/tika/TikaAutoConfigurationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7f7d74cfb696f63fe737f20a524d46beaee3fb1
--- /dev/null
+++ b/autoconfigure/src/test/java/yunjiao/springboot/autoconfigure/tika/TikaAutoConfigurationTest.java
@@ -0,0 +1,48 @@
+package yunjiao.springboot.autoconfigure.tika;
+
+import org.apache.tika.Tika;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.autoconfigure.AutoConfigurations;
+import org.springframework.boot.test.context.runner.ApplicationContextRunner;
+import yunjiao.springboot.autoconfigure.util.PropertyNameConsts;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * {@link TikaAutoConfiguration} 单元测试用例
+ *
+ * @author yangyunjiao
+ */
+public class TikaAutoConfigurationTest {
+ private ApplicationContextRunner applicationContextRunner;
+
+ @BeforeEach
+ void setUp() {
+ applicationContextRunner = new ApplicationContextRunner()
+ .withConfiguration(AutoConfigurations.of(TikaAutoConfiguration.class));
+ }
+
+ @Test
+ void whenConfig_thenExist() {
+ applicationContextRunner
+ .run(context -> {
+ assertThat(context).hasSingleBean(Tika.class);
+ });
+ }
+
+ @Test
+ void giveConfigFile_whenConfig_thenFail() {
+ // 因为缺少包,所以异常,异常也说明配置文件正常加载了
+ applicationContextRunner
+ .withPropertyValues(PropertyNameConsts.PROPERTY_PREFIX_TIKA + ".config-xml-file=classpath:tika/config.xml")
+ .run(context -> {
+ assertThat(context).hasFailed();
+ assertThat(context.getStartupFailure()).isNotNull();
+ assertThat(context.getStartupFailure())
+ .rootCause()
+ .isInstanceOf(ClassNotFoundException.class)
+ .hasMessageContaining("org.apache.tika.parser.html.HtmlEncodingDetector");
+ });
+ }
+}
diff --git a/autoconfigure/src/test/resources/tika/config.xml b/autoconfigure/src/test/resources/tika/config.xml
new file mode 100644
index 0000000000000000000000000000000000000000..06fd7ca62c65f816e424723065bd245acf4d4eff
--- /dev/null
+++ b/autoconfigure/src/test/resources/tika/config.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+ 64000
+
+
+
+
\ No newline at end of file
diff --git a/dependencies/pom.xml b/dependencies/pom.xml
index 7900c9a4b3eb05d96ee7b8d969f372d9aeda110d..5b77d99e6c5031a33ee42cda84df3fe09c43badb 100644
--- a/dependencies/pom.xml
+++ b/dependencies/pom.xml
@@ -28,6 +28,7 @@
1.0.2
1.4.0
2.2
+ 3.2.2
17
${java.version}
@@ -77,6 +78,12 @@
extension-id
${revision}
+
+ io.gitee.yunjiao-source.spring-boot
+ extension-tika
+ ${revision}
+
+
io.gitee.yunjiao-source.spring-boot
starter-querydsl-jpa
@@ -107,6 +114,11 @@
starter-captcha
${revision}
+
+ io.gitee.yunjiao-source.spring-boot
+ starter-tika
+ ${revision}
+
@@ -123,6 +135,13 @@
pom
import
+
+ org.apache.tika
+ tika-bom
+ ${tika.version}
+ pom
+ import
+
@@ -182,6 +201,7 @@
apijson-gson
${apijson-gson.version}
+
diff --git a/docs/chapter/1.introduction.adoc b/docs/adoc/chapter/1.introduction.adoc
similarity index 100%
rename from docs/chapter/1.introduction.adoc
rename to docs/adoc/chapter/1.introduction.adoc
diff --git a/docs/chapter/2.id.adoc b/docs/adoc/chapter/2.id.adoc
similarity index 95%
rename from docs/chapter/2.id.adoc
rename to docs/adoc/chapter/2.id.adoc
index e30a450913df993656fd30650136bb194ca4184f..06b2002b56d0e38d0f76d4277888603bc487cd80 100644
--- a/docs/chapter/2.id.adoc
+++ b/docs/adoc/chapter/2.id.adoc
@@ -120,8 +120,8 @@ public class IdCommandLineRunner implements CommandLineRunner {
在使用中,日志中会出现警告信息
[source,console,indent=0]
----
-WARN --- [ main] y.s.e.i.u.EnvironmentWorkerIdAssigner : Uid-Generator 框架雪花算法配置使用默认参数。如需支持分布式,请设置系统环境变量:SNOWFLAKE_WORKER_ID
-WARN --- [ main] y.s.a.id.HutoolIdConfiguration : Hutool 框架雪花算法配置使用默认参数。如需支持分布式,请设置系统环境变量:SNOWFLAKE_WORKER_ID 与 SNOWFLAKE_DATACENTER_ID
+WARN --- [ main] y.s.e.i.u.EnvironmentWorkerIdAssigner : Uid-Generator 框架雪花算法配置使用默认参数。如需支持分布式,请设置系统环境变量:'yunjiao.springboot.extension.id.snowflakeWorkId'
+WARN --- [ main] y.s.a.id.HutoolIdConfiguration : Hutool 框架雪花算法配置使用默认参数。如需支持分布式,请设置系统环境变量:'yunjiao.springboot.extension.id.snowflakeWorkId' 与 'yunjiao.springboot.extension.id.snowflakeDatacenterId'
----
如果不是微服务或集群部署应用,可以忽略此警告
diff --git a/docs/chapter/3.apijson.adoc b/docs/adoc/chapter/3.apijson.adoc
similarity index 100%
rename from docs/chapter/3.apijson.adoc
rename to docs/adoc/chapter/3.apijson.adoc
diff --git a/docs/chapter/4.captcha.adoc b/docs/adoc/chapter/4.captcha.adoc
similarity index 100%
rename from docs/chapter/4.captcha.adoc
rename to docs/adoc/chapter/4.captcha.adoc
diff --git a/docs/chapter/5.querydsl.adoc b/docs/adoc/chapter/5.querydsl.adoc
similarity index 100%
rename from docs/chapter/5.querydsl.adoc
rename to docs/adoc/chapter/5.querydsl.adoc
diff --git a/docs/index.adoc b/docs/adoc/index.adoc
similarity index 100%
rename from docs/index.adoc
rename to docs/adoc/index.adoc
diff --git a/examples/example-apijson-fastjson2/pom.xml b/examples/example-apijson-fastjson2/pom.xml
index 37c439fc732152d5ac6146160f0311afa6c22be8..8cefd72cc2b1ded2eb60cccc0302c3d89162ce4b 100644
--- a/examples/example-apijson-fastjson2/pom.xml
+++ b/examples/example-apijson-fastjson2/pom.xml
@@ -23,6 +23,17 @@
org.springframework.boot
spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-undertow
@@ -31,7 +42,14 @@
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
\ No newline at end of file
diff --git a/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/ApijsonFastjson2Configuration.java b/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/ApijsonFastjson2Configuration.java
index bcb39def2aad7be9990ab7ce38af9858a97be65c..44ab9201c3320fff02c046de52ac0a730195d5ec 100644
--- a/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/ApijsonFastjson2Configuration.java
+++ b/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/ApijsonFastjson2Configuration.java
@@ -1,7 +1,7 @@
package yunjiao.springboot.example.apijson;
import yunjiao.springboot.example.apijson.fastjson2.CustomFastjson2Creator;
-import yunjiao.springboot.extension.apjson.util.ApijsonConsts;
+import yunjiao.springboot.extension.apijson.util.ApijsonConsts;
import yunjiao.springboot.autoconfigure.apijson.ApijsonSqlProperties;
import jakarta.annotation.Nonnull;
import lombok.extern.slf4j.Slf4j;
diff --git a/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/config/CustomFunctionParserConfigurer.java b/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/config/CustomFunctionParserConfigurer.java
index ec3d9edbc00c3edb09844d8e1360880501d31322..20d4b085d093b8ed1469b85ba6878c79d3736053 100644
--- a/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/config/CustomFunctionParserConfigurer.java
+++ b/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/config/CustomFunctionParserConfigurer.java
@@ -2,8 +2,8 @@ package yunjiao.springboot.example.apijson.config;
import apijson.orm.script.JavaScriptExecutor;
import apijson.orm.script.ScriptExecutor;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonFunctionParserConfigurer;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.extension.apijson.ApijsonFunctionParserConfigurer;
import java.util.List;
import java.util.Map;
diff --git a/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/config/CustomSqlConfigConfigurer.java b/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/config/CustomSqlConfigConfigurer.java
index d3a6ee00824d872a6fc4a0efc63c24905e1c7b2c..216df3d042d6bd925a105aaa094d93331e69ae84 100644
--- a/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/config/CustomSqlConfigConfigurer.java
+++ b/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/config/CustomSqlConfigConfigurer.java
@@ -1,8 +1,8 @@
package yunjiao.springboot.example.apijson.config;
import apijson.StringUtil;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonSqlConfigConfigurer;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.extension.apijson.ApijsonSqlConfigConfigurer;
import java.util.Arrays;
import java.util.HashMap;
diff --git a/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/config/CustomVerifierConfigurer.java b/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/config/CustomVerifierConfigurer.java
index f74268ece38454b4dcaf923bde9aa5c80b2752c1..bc5e3a27284d43fb16c9507fdf25e052c97ad2a4 100644
--- a/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/config/CustomVerifierConfigurer.java
+++ b/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/config/CustomVerifierConfigurer.java
@@ -3,8 +3,8 @@ package yunjiao.springboot.example.apijson.config;
import apijson.RequestMethod;
import apijson.StringUtil;
import apijson.orm.Entry;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonVerifierConfigurer;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.extension.apijson.ApijsonVerifierConfigurer;
import java.util.List;
import java.util.Map;
diff --git a/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2Creator.java b/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2Creator.java
index 995363a8be67dcfdbf63882c69e3d1ea28818267..4c6df2f9c5c87fd4b072f25cee7fc6d495cf51f2 100644
--- a/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2Creator.java
+++ b/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2Creator.java
@@ -2,7 +2,7 @@ package yunjiao.springboot.example.apijson.fastjson2;
import apijson.fastjson2.APIJSONFunctionParser;
import yunjiao.springboot.autoconfigure.apijson.ApijsonSqlProperties;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.Fastjson2Creator;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2Creator;
import javax.sql.DataSource;
import java.io.Serializable;
@@ -14,7 +14,7 @@ import java.io.Serializable;
*/
public class CustomFastjson2Creator extends Fastjson2Creator {
public CustomFastjson2Creator(DataSource dataSource, ApijsonSqlProperties sqlProperties) {
- super(dataSource, sqlProperties);
+ super(dataSource, sqlProperties.getConfig().getVersion());
}
@Override
diff --git a/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2FunctionParser.java b/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2FunctionParser.java
index a8271170e655d4eca46fecf2001e73aa5486c662..091fd3a2a6c6cb737694c6471b4f1db12caec11b 100644
--- a/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2FunctionParser.java
+++ b/examples/example-apijson-fastjson2/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2FunctionParser.java
@@ -11,9 +11,9 @@ import apijson.orm.Visitor;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import yunjiao.springboot.autoconfigure.apijson.ApijsonUtils;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.Fastjson2FunctionParser;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.Fastjson2Parser;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.Fastjson2Verifier;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2FunctionParser;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2Parser;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2Verifier;
import java.io.Serializable;
import java.util.ArrayList;
diff --git a/examples/example-apijson-gson/pom.xml b/examples/example-apijson-gson/pom.xml
index 59de71f1fdf206ae530da1d2a6609fd8e4fb0f7a..bbe75fe5e04129643415f45c36983b3d269f730c 100644
--- a/examples/example-apijson-gson/pom.xml
+++ b/examples/example-apijson-gson/pom.xml
@@ -23,6 +23,17 @@
org.springframework.boot
spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-undertow
@@ -31,6 +42,13 @@
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
\ No newline at end of file
diff --git a/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/ApijsonGsonConfiguration.java b/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/ApijsonGsonConfiguration.java
index 180134903102cac5bde2f66526184c28df53eab0..41665f9c018d6c56048f269427e3c824b4c6a26b 100644
--- a/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/ApijsonGsonConfiguration.java
+++ b/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/ApijsonGsonConfiguration.java
@@ -1,7 +1,7 @@
package yunjiao.springboot.example.apijson;
import yunjiao.springboot.example.apijson.gson.CustomGsonCreator;
-import yunjiao.springboot.extension.apjson.util.ApijsonConsts;
+import yunjiao.springboot.extension.apijson.util.ApijsonConsts;
import yunjiao.springboot.autoconfigure.apijson.ApijsonSqlProperties;
import jakarta.annotation.Nonnull;
import lombok.extern.slf4j.Slf4j;
diff --git a/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/config/CustomFunctionParserConfigurer.java b/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/config/CustomFunctionParserConfigurer.java
index ec3d9edbc00c3edb09844d8e1360880501d31322..20d4b085d093b8ed1469b85ba6878c79d3736053 100644
--- a/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/config/CustomFunctionParserConfigurer.java
+++ b/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/config/CustomFunctionParserConfigurer.java
@@ -2,8 +2,8 @@ package yunjiao.springboot.example.apijson.config;
import apijson.orm.script.JavaScriptExecutor;
import apijson.orm.script.ScriptExecutor;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonFunctionParserConfigurer;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.extension.apijson.ApijsonFunctionParserConfigurer;
import java.util.List;
import java.util.Map;
diff --git a/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/config/CustomSqlConfigConfigurer.java b/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/config/CustomSqlConfigConfigurer.java
index d3a6ee00824d872a6fc4a0efc63c24905e1c7b2c..216df3d042d6bd925a105aaa094d93331e69ae84 100644
--- a/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/config/CustomSqlConfigConfigurer.java
+++ b/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/config/CustomSqlConfigConfigurer.java
@@ -1,8 +1,8 @@
package yunjiao.springboot.example.apijson.config;
import apijson.StringUtil;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonSqlConfigConfigurer;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.extension.apijson.ApijsonSqlConfigConfigurer;
import java.util.Arrays;
import java.util.HashMap;
diff --git a/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/config/CustomVerifierConfigurer.java b/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/config/CustomVerifierConfigurer.java
index f74268ece38454b4dcaf923bde9aa5c80b2752c1..bc5e3a27284d43fb16c9507fdf25e052c97ad2a4 100644
--- a/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/config/CustomVerifierConfigurer.java
+++ b/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/config/CustomVerifierConfigurer.java
@@ -3,8 +3,8 @@ package yunjiao.springboot.example.apijson.config;
import apijson.RequestMethod;
import apijson.StringUtil;
import apijson.orm.Entry;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonVerifierConfigurer;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.extension.apijson.ApijsonVerifierConfigurer;
import java.util.List;
import java.util.Map;
diff --git a/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/gson/CustomGsonCreator.java b/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/gson/CustomGsonCreator.java
index 50465d72042b33429a6b8d989c07c93f814a7b34..d9458faf92d88800692d87a3347fccf46205ab57 100644
--- a/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/gson/CustomGsonCreator.java
+++ b/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/gson/CustomGsonCreator.java
@@ -2,7 +2,7 @@ package yunjiao.springboot.example.apijson.gson;
import apijson.gson.APIJSONFunctionParser;
import yunjiao.springboot.autoconfigure.apijson.ApijsonSqlProperties;
-import yunjiao.springboot.autoconfigure.apijson.gson.GsonCreator;
+import yunjiao.springboot.extension.apijson.gson.GsonCreator;
import javax.sql.DataSource;
import java.io.Serializable;
@@ -14,7 +14,7 @@ import java.io.Serializable;
*/
public class CustomGsonCreator extends GsonCreator {
public CustomGsonCreator(DataSource dataSource, ApijsonSqlProperties sqlProperties) {
- super(dataSource, sqlProperties);
+ super(dataSource, sqlProperties.getConfig().getVersion());
}
@Override
diff --git a/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/gson/CustomGsonFunctionParser.java b/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/gson/CustomGsonFunctionParser.java
index d4e534cef01b90d45316b206a2257a7282b878cc..d32e92a60c113a7301ae274c9560434cda15ea06 100644
--- a/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/gson/CustomGsonFunctionParser.java
+++ b/examples/example-apijson-gson/src/main/java/yunjiao/springboot/example/apijson/gson/CustomGsonFunctionParser.java
@@ -6,8 +6,8 @@ import apijson.StringUtil;
import apijson.orm.AbstractVerifier;
import apijson.orm.Visitor;
import yunjiao.springboot.autoconfigure.apijson.ApijsonUtils;
-import yunjiao.springboot.autoconfigure.apijson.gson.GsonFunctionParser;
-import yunjiao.springboot.autoconfigure.apijson.gson.GsonVerifier;
+import yunjiao.springboot.extension.apijson.gson.GsonFunctionParser;
+import yunjiao.springboot.extension.apijson.gson.GsonVerifier;
import java.io.Serializable;
import java.util.ArrayList;
diff --git a/examples/example-apijson-multipledatasource/pom.xml b/examples/example-apijson-multipledatasource/pom.xml
index 438c203048601b8c76695125111f0c505fc59cce..dc21781a6b8c8e5777ab9fde964818b6aa1aa856 100644
--- a/examples/example-apijson-multipledatasource/pom.xml
+++ b/examples/example-apijson-multipledatasource/pom.xml
@@ -23,6 +23,17 @@
org.springframework.boot
spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-undertow
@@ -35,7 +46,14 @@
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
\ No newline at end of file
diff --git a/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/ApijsonMultipleDataSourceConfiguration.java b/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/ApijsonMultipleDataSourceConfiguration.java
index 8e2574bb7f2a67b3d5d3bf45da51b7280a384ed2..d1fe053533374ea81e98f16e51edc8bafd54fcc8 100644
--- a/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/ApijsonMultipleDataSourceConfiguration.java
+++ b/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/ApijsonMultipleDataSourceConfiguration.java
@@ -13,7 +13,7 @@ import yunjiao.springboot.extension.common.spring.jdbc.MultipleDataSource;
import yunjiao.springboot.autoconfigure.apijson.ApijsonSqlProperties;
import yunjiao.springboot.example.apijson.fastjson2.CustomFastjson2Creator;
import yunjiao.springboot.extension.common.spring.jdbc.DataSourceContextHolder;
-import yunjiao.springboot.extension.apjson.util.ApijsonConsts;
+import yunjiao.springboot.extension.apijson.util.ApijsonConsts;
import javax.sql.DataSource;
import java.util.HashMap;
diff --git a/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/config/CustomFunctionParserConfigurer.java b/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/config/CustomFunctionParserConfigurer.java
index ec3d9edbc00c3edb09844d8e1360880501d31322..20d4b085d093b8ed1469b85ba6878c79d3736053 100644
--- a/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/config/CustomFunctionParserConfigurer.java
+++ b/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/config/CustomFunctionParserConfigurer.java
@@ -2,8 +2,8 @@ package yunjiao.springboot.example.apijson.config;
import apijson.orm.script.JavaScriptExecutor;
import apijson.orm.script.ScriptExecutor;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonFunctionParserConfigurer;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.extension.apijson.ApijsonFunctionParserConfigurer;
import java.util.List;
import java.util.Map;
diff --git a/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/config/CustomSqlConfigConfigurer.java b/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/config/CustomSqlConfigConfigurer.java
index d3a6ee00824d872a6fc4a0efc63c24905e1c7b2c..216df3d042d6bd925a105aaa094d93331e69ae84 100644
--- a/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/config/CustomSqlConfigConfigurer.java
+++ b/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/config/CustomSqlConfigConfigurer.java
@@ -1,8 +1,8 @@
package yunjiao.springboot.example.apijson.config;
import apijson.StringUtil;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonSqlConfigConfigurer;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.extension.apijson.ApijsonSqlConfigConfigurer;
import java.util.Arrays;
import java.util.HashMap;
diff --git a/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/config/CustomVerifierConfigurer.java b/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/config/CustomVerifierConfigurer.java
index f74268ece38454b4dcaf923bde9aa5c80b2752c1..bc5e3a27284d43fb16c9507fdf25e052c97ad2a4 100644
--- a/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/config/CustomVerifierConfigurer.java
+++ b/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/config/CustomVerifierConfigurer.java
@@ -3,8 +3,8 @@ package yunjiao.springboot.example.apijson.config;
import apijson.RequestMethod;
import apijson.StringUtil;
import apijson.orm.Entry;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonVerifierConfigurer;
import org.springframework.context.annotation.Configuration;
+import yunjiao.springboot.extension.apijson.ApijsonVerifierConfigurer;
import java.util.List;
import java.util.Map;
diff --git a/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2Creator.java b/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2Creator.java
index 995363a8be67dcfdbf63882c69e3d1ea28818267..4c6df2f9c5c87fd4b072f25cee7fc6d495cf51f2 100644
--- a/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2Creator.java
+++ b/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2Creator.java
@@ -2,7 +2,7 @@ package yunjiao.springboot.example.apijson.fastjson2;
import apijson.fastjson2.APIJSONFunctionParser;
import yunjiao.springboot.autoconfigure.apijson.ApijsonSqlProperties;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.Fastjson2Creator;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2Creator;
import javax.sql.DataSource;
import java.io.Serializable;
@@ -14,7 +14,7 @@ import java.io.Serializable;
*/
public class CustomFastjson2Creator extends Fastjson2Creator {
public CustomFastjson2Creator(DataSource dataSource, ApijsonSqlProperties sqlProperties) {
- super(dataSource, sqlProperties);
+ super(dataSource, sqlProperties.getConfig().getVersion());
}
@Override
diff --git a/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2FunctionParser.java b/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2FunctionParser.java
index a8271170e655d4eca46fecf2001e73aa5486c662..091fd3a2a6c6cb737694c6471b4f1db12caec11b 100644
--- a/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2FunctionParser.java
+++ b/examples/example-apijson-multipledatasource/src/main/java/yunjiao/springboot/example/apijson/fastjson2/CustomFastjson2FunctionParser.java
@@ -11,9 +11,9 @@ import apijson.orm.Visitor;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import yunjiao.springboot.autoconfigure.apijson.ApijsonUtils;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.Fastjson2FunctionParser;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.Fastjson2Parser;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.Fastjson2Verifier;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2FunctionParser;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2Parser;
+import yunjiao.springboot.extension.apijson.fastjson2.Fastjson2Verifier;
import java.io.Serializable;
import java.util.ArrayList;
diff --git a/examples/example-apijson-multipledatasource/src/test/java/yunjiao/springboot/example/apijson/MultipleDataSourceDemoTestIT.java b/examples/example-apijson-multipledatasource/src/test/java/yunjiao/springboot/example/apijson/MultipleDataSourceTestIT.java
similarity index 97%
rename from examples/example-apijson-multipledatasource/src/test/java/yunjiao/springboot/example/apijson/MultipleDataSourceDemoTestIT.java
rename to examples/example-apijson-multipledatasource/src/test/java/yunjiao/springboot/example/apijson/MultipleDataSourceTestIT.java
index 88f4831a7fa19cbd925d0696bf8dc3c9b5c22373..6c52a3380f53b9eacf0b07b3edeb72676dad410a 100644
--- a/examples/example-apijson-multipledatasource/src/test/java/yunjiao/springboot/example/apijson/MultipleDataSourceDemoTestIT.java
+++ b/examples/example-apijson-multipledatasource/src/test/java/yunjiao/springboot/example/apijson/MultipleDataSourceTestIT.java
@@ -16,7 +16,7 @@ import java.nio.charset.StandardCharsets;
*
* @author yangyunjiao
*/
-public class MultipleDataSourceDemoTestIT {
+public class MultipleDataSourceTestIT {
private final WebClient commonClient = WebClient.builder()
.baseUrl("http://localhost:8080/api-json/common")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
diff --git a/examples/example-captcha/pom.xml b/examples/example-captcha/pom.xml
index 3e883178a4222fd592a39a45d8140354921d0714..0b4d16522503c9c0d31e5b15a836fb85047eda35 100644
--- a/examples/example-captcha/pom.xml
+++ b/examples/example-captcha/pom.xml
@@ -28,7 +28,19 @@
org.springframework.boot
spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-undertow
+
+
org.springframework.boot
spring-boot-starter-webflux
@@ -36,5 +48,12 @@
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
\ No newline at end of file
diff --git a/examples/example-id/pom.xml b/examples/example-id/pom.xml
index bd84146e82ee83aef0de2ac1fae38976e58a83eb..befd7c2d08748f5fb04ac4b54fcb8e0fd21a4431 100644
--- a/examples/example-id/pom.xml
+++ b/examples/example-id/pom.xml
@@ -23,9 +23,27 @@
org.springframework.boot
spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
-
+
+ org.springframework.boot
+ spring-boot-starter-undertow
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
\ No newline at end of file
diff --git a/examples/example-querydsl-jpa/pom.xml b/examples/example-querydsl-jpa/pom.xml
index b67e779a32e27792b2f243d257202a9eca6b3ecf..6c5a302501c4c81c02e00c01b4be3e802ac0fb3c 100644
--- a/examples/example-querydsl-jpa/pom.xml
+++ b/examples/example-querydsl-jpa/pom.xml
@@ -23,6 +23,17 @@
org.springframework.boot
spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-undertow
@@ -40,6 +51,15 @@
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/examples/example-querydsl-sql/pom.xml b/examples/example-querydsl-sql/pom.xml
index 95c1070f1eaa95b19537555b7d23b1b548612aed..6b78f19034bd2132eff65424db62bada9862f53d 100644
--- a/examples/example-querydsl-sql/pom.xml
+++ b/examples/example-querydsl-sql/pom.xml
@@ -23,7 +23,19 @@
org.springframework.boot
spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-undertow
+
+
org.springframework.boot
spring-boot-starter-data-jdbc
@@ -80,5 +92,12 @@
-
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
\ No newline at end of file
diff --git a/examples/example-tika/pom.xml b/examples/example-tika/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3984eb2b21db05140a211f02b574e4e75fae36d6
--- /dev/null
+++ b/examples/example-tika/pom.xml
@@ -0,0 +1,62 @@
+
+
+
+ io.gitee.yunjiao-source.spring-boot
+ examples
+ ${revision}
+
+ 4.0.0
+
+ example-tika
+ jar
+ Example :: Tika
+ Tika 示例应用
+
+
+
+ io.gitee.yunjiao-source.spring-boot
+ starter-tika
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-undertow
+
+
+
+
+ org.apache.commons
+ commons-lang3
+ 3.18.0
+
+
+
+ org.springframework
+ spring-webflux
+ test
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
\ No newline at end of file
diff --git a/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaCommandLineRunner.java b/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaCommandLineRunner.java
new file mode 100644
index 0000000000000000000000000000000000000000..f0b999d029812b538507f9a116a4c3f2ceb0f714
--- /dev/null
+++ b/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaCommandLineRunner.java
@@ -0,0 +1,27 @@
+package yunjiao.springboot.example.tika;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.tika.Tika;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+import org.springframework.util.Assert;
+
+/**
+ * 示例
+ *
+ * @author yangyunjiao
+ */
+@Slf4j
+@Component
+public class TikaCommandLineRunner implements CommandLineRunner {
+ @Autowired
+ private Tika tika;
+
+ @Override
+ public void run(String... args) throws Exception {
+ Assert.notNull(tika, "Tika 配置失败");
+ }
+
+
+}
diff --git a/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaConfiguration.java b/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaConfiguration.java
new file mode 100644
index 0000000000000000000000000000000000000000..17df03a1ff0db52d747de23d9cf45c2a78b97798
--- /dev/null
+++ b/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaConfiguration.java
@@ -0,0 +1,17 @@
+package yunjiao.springboot.example.tika;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 配置
+ *
+ * @author yangyunjiao
+ */
+@Slf4j
+@Configuration
+public class TikaConfiguration {
+
+
+
+}
diff --git a/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaController.java b/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaController.java
new file mode 100644
index 0000000000000000000000000000000000000000..5bd5332c21138c83eadcf62be6a37a4e90f469f4
--- /dev/null
+++ b/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaController.java
@@ -0,0 +1,33 @@
+package yunjiao.springboot.example.tika;
+
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 控制器
+ *
+ * @author yangyunjiao
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("tika")
+public class TikaController {
+ private final TikaService tikaService;
+
+ @PostMapping("/extract-text")
+ public ResponseEntity extractText(@RequestParam("file") MultipartFile file) {
+ String extractedText = tikaService.extractText(file);
+ return ResponseEntity.ok(extractedText);
+ }
+
+ @PostMapping("/detect-mime-type")
+ public ResponseEntity detectMetadata(@RequestParam("file") MultipartFile file) {
+ String mimeType = tikaService.detectMimeType(file);
+ return ResponseEntity.ok(mimeType);
+ }
+}
diff --git a/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaExampleApplication.java b/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaExampleApplication.java
new file mode 100644
index 0000000000000000000000000000000000000000..ef70d2799d4c3d1847a2a85edb4fedfbfe004e4f
--- /dev/null
+++ b/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaExampleApplication.java
@@ -0,0 +1,16 @@
+package yunjiao.springboot.example.tika;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * 程序入口
+ *
+ * @author yangyunjiao
+ */
+@SpringBootApplication
+public class TikaExampleApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(TikaExampleApplication.class, args);
+ }
+}
diff --git a/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaService.java b/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaService.java
new file mode 100644
index 0000000000000000000000000000000000000000..d746f74115ce26f442d8f9fd7e6d74b63a80a8fd
--- /dev/null
+++ b/examples/example-tika/src/main/java/yunjiao/springboot/example/tika/TikaService.java
@@ -0,0 +1,36 @@
+package yunjiao.springboot.example.tika;
+
+import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
+import org.apache.tika.Tika;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * tika服务
+ *
+ * @author yangyunjiao
+ */
+@Service
+@RequiredArgsConstructor
+public class TikaService {
+ private final Tika tika;
+
+ /**
+ * 提取文件中的文本内容
+ */
+ @SneakyThrows
+ public String extractText(MultipartFile file) {
+ // parseToString 方法内部会自动关闭 InputStream
+ return tika.parseToString(file.getInputStream());
+ }
+
+
+ /**
+ * 检测文件的 MIME 类型(根据内容而非扩展名)
+ */
+ @SneakyThrows
+ public String detectMimeType(MultipartFile file){
+ return tika.detect(file.getInputStream());
+ }
+}
diff --git a/examples/example-tika/src/main/resources/application.yml b/examples/example-tika/src/main/resources/application.yml
new file mode 100644
index 0000000000000000000000000000000000000000..bdb14480faf7e9e95407fe6e4b5188c784883a3b
--- /dev/null
+++ b/examples/example-tika/src/main/resources/application.yml
@@ -0,0 +1,10 @@
+spring:
+ tika:
+ config-xml-file: classpath:tika/config.xml
+
+logging:
+ level:
+ root: info
+ org.springframework.boot.autoconfigure: info
+ yunjiao.springboot: debug
+
diff --git a/examples/example-tika/src/main/resources/tika/config.xml b/examples/example-tika/src/main/resources/tika/config.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d0e8c763321cadf3fd113459494cc2b75d318478
--- /dev/null
+++ b/examples/example-tika/src/main/resources/tika/config.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+ 64000
+
+
+
+
+ 64001
+
+
+
+
+ 64002
+
+
+
+
\ No newline at end of file
diff --git a/examples/example-tika/src/test/java/yunjiao/springboot/example/tika/TikaControllerTestIT.java b/examples/example-tika/src/test/java/yunjiao/springboot/example/tika/TikaControllerTestIT.java
new file mode 100644
index 0000000000000000000000000000000000000000..ac72c2d1eb9a65afdef0756035db0c722e8b5274
--- /dev/null
+++ b/examples/example-tika/src/test/java/yunjiao/springboot/example/tika/TikaControllerTestIT.java
@@ -0,0 +1,109 @@
+package yunjiao.springboot.example.tika;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.reactive.function.BodyInserters;
+import org.springframework.web.reactive.function.client.WebClient;
+
+/**
+ * 演示
+ *
+ * @author yangyunjiao
+ */
+public class TikaControllerTestIT {
+ private final WebClient commonClient = WebClient.builder()
+ .baseUrl("http://localhost:8080/tika")
+ .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
+ .build();
+
+ @Test
+ void testExtractTextWithText() {
+ String fileName = "text.txt";
+ String data = extractText(fileName);
+ System.out.println(fileName + "=" + data);
+ }
+
+ @Test
+ void testExtractTextWithImage() {
+ String fileName = "image.png";
+ String data = extractText(fileName);
+ System.out.println(fileName + "=" + data);
+ }
+
+ @Test
+ void testExtractTextWithPdf() {
+ String fileName = "pdf.pdf";
+ String data = extractText(fileName);
+ System.out.println(fileName + "=" + data);
+ }
+
+ @Test
+ void testExtractTextWithDoc() {
+ String fileName = "docx.docx";
+ String data = extractText(fileName);
+ System.out.println(fileName + "=" + data);
+ }
+
+ @Test
+ void testExtractTextWithXlsx() {
+ String fileName = "xlsx.xlsx";
+ String data = extractText(fileName);
+ System.out.println(fileName + "=" + data);
+ }
+
+ @Test
+ void detectMimeTypeText() {
+ String fileName = "text.txt";
+ String data = detectMimeType(fileName);
+ System.out.println(fileName + "=" + data);
+ }
+
+ @Test
+ void detectMimeTypePdf() {
+ String fileName = "pdf.pdf";
+ String data = detectMimeType(fileName);
+ System.out.println(fileName + "=" + data);
+ }
+
+
+ @Test
+ void detectMimeTypeImage() {
+ String fileName = "image.png";
+ String data = detectMimeType(fileName);
+ System.out.println(fileName + "=" + data);
+ }
+
+ private String detectMimeType(String fileName) {
+ MultiValueMap parts = createMultiValueMap(fileName);
+ return commonClient.post()
+ .uri("/detect-mime-type")
+ .contentType(MediaType.MULTIPART_FORM_DATA)
+ .body(BodyInserters.fromMultipartData(parts))
+ .retrieve()
+ .bodyToMono(String.class)
+ .block();
+ }
+
+ private String extractText(String fileName) {
+ MultiValueMap parts = createMultiValueMap(fileName);
+ return commonClient.post()
+ .uri("/extract-text")
+ .contentType(MediaType.MULTIPART_FORM_DATA)
+ .body(BodyInserters.fromMultipartData(parts))
+ .retrieve()
+ .bodyToMono(String.class)
+ .block();
+ }
+
+ private MultiValueMap createMultiValueMap(String fileName) {
+ ClassPathResource resource = new ClassPathResource(fileName);
+ MultiValueMap parts = new LinkedMultiValueMap<>();
+ parts.add("file", resource);
+ parts.add("fileName", fileName);
+ return parts;
+ }
+}
diff --git a/examples/example-tika/src/test/resources/docx.docx b/examples/example-tika/src/test/resources/docx.docx
new file mode 100644
index 0000000000000000000000000000000000000000..f7aaee54a5e95b7536e7a73dbc9611cad142e2d9
Binary files /dev/null and b/examples/example-tika/src/test/resources/docx.docx differ
diff --git a/examples/example-tika/src/test/resources/image.png b/examples/example-tika/src/test/resources/image.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0e7910d2083a8bb42a1407618f577993acf8500
Binary files /dev/null and b/examples/example-tika/src/test/resources/image.png differ
diff --git a/examples/example-tika/src/test/resources/pdf.pdf b/examples/example-tika/src/test/resources/pdf.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..29ded2c1a064745fdbdbcf56472ac5b113e47417
Binary files /dev/null and b/examples/example-tika/src/test/resources/pdf.pdf differ
diff --git a/examples/example-tika/src/test/resources/text.txt b/examples/example-tika/src/test/resources/text.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ce55fb04d15cc35c480123bef728d4add2c1d6d1
--- /dev/null
+++ b/examples/example-tika/src/test/resources/text.txt
@@ -0,0 +1 @@
+Hello, 中文
\ No newline at end of file
diff --git a/examples/example-tika/src/test/resources/xlsx.xlsx b/examples/example-tika/src/test/resources/xlsx.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..4a5e73c0d8d49816da97696672319cc0a4f2feb4
Binary files /dev/null and b/examples/example-tika/src/test/resources/xlsx.xlsx differ
diff --git a/examples/pom.xml b/examples/pom.xml
index 0bcb83de96e48801ae4a8db8a119702fd117be10..fb7edfd512fc9a96aeffc3ace2c4cda43375fabc 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -24,6 +24,7 @@
example-apijson-gson
example-apijson-multipledatasource
example-captcha
+ example-tika
@@ -125,11 +126,6 @@
org.codehaus.mojo
flatten-maven-plugin
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
diff --git a/extensions/extension-apijson/pom.xml b/extensions/extension-apijson/pom.xml
index 943fda77e56675e2aeff27fda65fc4bbc798dc1b..11a9ebfeefe00079d659230c54eb342e07e0b1c4 100644
--- a/extensions/extension-apijson/pom.xml
+++ b/extensions/extension-apijson/pom.xml
@@ -26,18 +26,24 @@
- cn.hutool
- hutool-core
+ org.springframework
+ spring-web
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+
+
com.github.APIJSON
apijson-fastjson2
- provided
+ true
com.github.APIJSON
apijson-gson
- provided
+ true
\ No newline at end of file
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonFunctionParserConfigurer.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/ApijsonFunctionParserConfigurer.java
similarity index 91%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonFunctionParserConfigurer.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/ApijsonFunctionParserConfigurer.java
index c42e8eabf7fc785a271dc4210d1ed99c92c14cab..9b996fd48c5f4ec417049fe5d072f254d2293c1b 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonFunctionParserConfigurer.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/ApijsonFunctionParserConfigurer.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.autoconfigure.apijson;
+package yunjiao.springboot.extension.apijson;
import apijson.orm.script.ScriptExecutor;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlConfigConfigurer.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/ApijsonSqlConfigConfigurer.java
similarity index 93%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlConfigConfigurer.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/ApijsonSqlConfigConfigurer.java
index c9d273289f25eac51d971df18678e14a55ef83a0..66df748314ad21ce90b8187d7a98a8e71f2bc5db 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonSqlConfigConfigurer.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/ApijsonSqlConfigConfigurer.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.autoconfigure.apijson;
+package yunjiao.springboot.extension.apijson;
import java.util.List;
import java.util.Map;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonVerifierConfigurer.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/ApijsonVerifierConfigurer.java
similarity index 96%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonVerifierConfigurer.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/ApijsonVerifierConfigurer.java
index 0ae797c864293fa74be989c400f7919f23156a0e..9e3f6d9896df5f0e35fe97290deda424dd623564 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/ApijsonVerifierConfigurer.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/ApijsonVerifierConfigurer.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.autoconfigure.apijson;
+package yunjiao.springboot.extension.apijson;
import apijson.RequestMethod;
import apijson.orm.Entry;
diff --git a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/_APIJSON.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/_APIJSON.java
similarity index 61%
rename from extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/_APIJSON.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/_APIJSON.java
index ec490a4fc1b8bed1dc219515c2f3d2e70dee5766..da9c5d1c66bd4c2afb1629dd451701d2d75c71ed 100644
--- a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/_APIJSON.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/_APIJSON.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.extension.apjson;
+package yunjiao.springboot.extension.apijson;
/**
* _APIJSON
diff --git a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/annotation/ApijsonRest.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/annotation/ApijsonRest.java
similarity index 86%
rename from extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/annotation/ApijsonRest.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/annotation/ApijsonRest.java
index 067d032256ebabac7ea2bd74482726510b2d0f52..4cb3660f672a240eaa4143652ca655d066440658 100644
--- a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/annotation/ApijsonRest.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/annotation/ApijsonRest.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.extension.apjson.annotation;
+package yunjiao.springboot.extension.apijson.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2Creator.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2Creator.java
similarity index 78%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2Creator.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2Creator.java
index 05b06b5661c773a8057ea36e78061b9358c80e9a..95d216ace3b51521e89fc1c16aaa9448dcc59258 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2Creator.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2Creator.java
@@ -1,7 +1,6 @@
-package yunjiao.springboot.autoconfigure.apijson.fastjson2;
+package yunjiao.springboot.extension.apijson.fastjson2;
import apijson.fastjson2.*;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonSqlProperties;
import lombok.RequiredArgsConstructor;
import javax.sql.DataSource;
@@ -20,9 +19,9 @@ public class Fastjson2Creator extends APIJSONCreator {
private final DataSource dataSource;
/**
- * 配置属性
+ * 数据库版本
*/
- private final ApijsonSqlProperties sqlProperties;
+ private final String dbVersion;
@Override
public APIJSONParser createParser() {
@@ -41,7 +40,7 @@ public class Fastjson2Creator extends APIJSONCreator {
@Override
public APIJSONSQLConfig createSQLConfig() {
- return new Fastjson2SqlConfig(sqlProperties);
+ return new Fastjson2SqlConfig(dbVersion);
}
@Override
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2EXtRestController.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2EXtRestController.java
similarity index 98%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2EXtRestController.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2EXtRestController.java
index 9d66cc003eaaccf42d6e744a164f6b8f2bccb905..9b121aa659a3a619976c64d7271154c7f906e4cc 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2EXtRestController.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2EXtRestController.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.autoconfigure.apijson.fastjson2;
+package yunjiao.springboot.extension.apijson.fastjson2;
import apijson.Log;
import apijson.StringUtil;
@@ -9,10 +9,6 @@ import apijson.orm.exception.ConditionErrorException;
import apijson.orm.exception.ConflictException;
import apijson.orm.exception.NotExistException;
import com.alibaba.fastjson2.JSONObject;
-import yunjiao.springboot.extension.apjson.annotation.ApijsonRest;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.model.Privacy;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.model.User;
-import yunjiao.springboot.autoconfigure.apijson.fastjson2.model.Verify;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -20,6 +16,10 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import yunjiao.springboot.extension.apijson.fastjson2.model.Privacy;
+import yunjiao.springboot.extension.apijson.fastjson2.model.User;
+import yunjiao.springboot.extension.apijson.fastjson2.model.Verify;
+import yunjiao.springboot.extension.apijson.annotation.ApijsonRest;
import java.io.Serializable;
import java.rmi.ServerException;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2FunctionParser.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2FunctionParser.java
similarity index 86%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2FunctionParser.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2FunctionParser.java
index 680d912cadb2a9e3ff71f6ec0f703bd2775fcd14..62a1fb02c9fb180a1b0840e9adb10f745fe9abc1 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2FunctionParser.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2FunctionParser.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.autoconfigure.apijson.fastjson2;
+package yunjiao.springboot.extension.apijson.fastjson2;
import apijson.fastjson2.APIJSONFunctionParser;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2ObjectParser.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2ObjectParser.java
similarity index 96%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2ObjectParser.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2ObjectParser.java
index ce84f46c6a521834c74f5fa6d583c4137e66feed..f9d1ef6b8e74c94764fb2b34e07ab12d02b38d37 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2ObjectParser.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2ObjectParser.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.autoconfigure.apijson.fastjson2;
+package yunjiao.springboot.extension.apijson.fastjson2;
import apijson.RequestMethod;
import apijson.fastjson2.APIJSONObjectParser;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2Parser.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2Parser.java
similarity index 95%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2Parser.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2Parser.java
index 6d7905a411f41c1a632a5602684593f2408dc762..7a8cc96aa50a692c0c255e499a88f72e1f891c37 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2Parser.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2Parser.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.autoconfigure.apijson.fastjson2;
+package yunjiao.springboot.extension.apijson.fastjson2;
import apijson.RequestMethod;
import apijson.fastjson2.APIJSONObjectParser;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2RestController.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2RestController.java
similarity index 76%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2RestController.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2RestController.java
index eab62df41ef05868ad013fdfe371eb1ba199074a..967a1745c0d0487efcc0b005694d4f4804b9764f 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2RestController.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2RestController.java
@@ -1,14 +1,13 @@
-package yunjiao.springboot.autoconfigure.apijson.fastjson2;
+package yunjiao.springboot.extension.apijson.fastjson2;
import apijson.RequestMethod;
import apijson.fastjson2.APIJSONController;
import apijson.fastjson2.APIJSONParser;
-import yunjiao.springboot.extension.apjson.annotation.ApijsonRest;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonProperties;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
+import yunjiao.springboot.extension.apijson.annotation.ApijsonRest;
import java.io.Serializable;
import java.util.Map;
@@ -24,14 +23,18 @@ import java.util.Map;
@RestController
@RequestMapping("/common")
public class Fastjson2RestController extends APIJSONController {
- private final ApijsonProperties properties;
+ private final boolean needVerifyLogin;
+
+ private final boolean needVerifyRole;
+
+ private final boolean needVerifyContent;
@Override
public APIJSONParser newParser(HttpSession session, RequestMethod method) {
return super.newParser(session, method)
- .setNeedVerifyLogin(properties.isNeedVerifyLogin())
- .setNeedVerifyRole(properties.isNeedVerifyRole())
- .setNeedVerifyContent(properties.isNeedVerifyContent());
+ .setNeedVerifyLogin(needVerifyLogin)
+ .setNeedVerifyRole(needVerifyRole)
+ .setNeedVerifyContent(needVerifyContent);
}
@PostMapping(value = "{method}")
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2SimpleCallback.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2SimpleCallback.java
similarity index 90%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2SimpleCallback.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2SimpleCallback.java
index e04683c9d86e997884d498afd7729f1281ef91ca..50ee00904f733cbd18b8e50c5d96865ad5053329 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2SimpleCallback.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2SimpleCallback.java
@@ -1,12 +1,12 @@
-package yunjiao.springboot.autoconfigure.apijson.fastjson2;
+package yunjiao.springboot.extension.apijson.fastjson2;
import apijson.RequestMethod;
import apijson.fastjson2.APIJSONApplication;
import apijson.orm.AbstractSQLConfig;
import apijson.orm.SQLConfig;
-import yunjiao.springboot.extension.apjson.orm.IdKeyStrategy;
-import yunjiao.springboot.extension.apjson.orm.NewIdStrategy;
import lombok.RequiredArgsConstructor;
+import yunjiao.springboot.extension.apijson.orm.IdKeyStrategy;
+import yunjiao.springboot.extension.apijson.orm.NewIdStrategy;
import java.io.Serializable;
import java.util.List;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2SqlConfig.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2SqlConfig.java
similarity index 68%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2SqlConfig.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2SqlConfig.java
index 64cf5de9df0a0fb12d8048d6ab98a6d0cfa3a22b..2fbc635f02b6fbe8fae6a0c28a41bc8bd38748a2 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2SqlConfig.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2SqlConfig.java
@@ -1,7 +1,6 @@
-package yunjiao.springboot.autoconfigure.apijson.fastjson2;
+package yunjiao.springboot.extension.apijson.fastjson2;
import apijson.fastjson2.APIJSONSQLConfig;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonSqlProperties;
import lombok.RequiredArgsConstructor;
import java.io.Serializable;
@@ -18,11 +17,11 @@ public class Fastjson2SqlConfig extends APIJSONSQLConfig {
*/
public static final String TAG = Fastjson2SqlConfig.class.getSimpleName();
- private final ApijsonSqlProperties properties;
+ private final String dbVersion;
@Override
public String gainDBVersion() {
- return properties.getConfig().getVersion();
+ return dbVersion;
}
}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2SqlExecutor.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2SqlExecutor.java
similarity index 89%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2SqlExecutor.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2SqlExecutor.java
index 7cda3f2a7ebbf357645ff67e74d40d288541622a..7a06995b93ed65d6a98d3a270f6dd22cec5937a3 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2SqlExecutor.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2SqlExecutor.java
@@ -1,11 +1,11 @@
-package yunjiao.springboot.autoconfigure.apijson.fastjson2;
+package yunjiao.springboot.extension.apijson.fastjson2;
import apijson.fastjson2.APIJSONSQLExecutor;
import apijson.orm.SQLConfig;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
-import yunjiao.springboot.extension.apjson.orm.SqlConnectProvider;
import lombok.RequiredArgsConstructor;
+import yunjiao.springboot.extension.apijson.orm.SqlConnectProvider;
import javax.sql.DataSource;
import java.io.Serializable;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2Verifier.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2Verifier.java
similarity index 80%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2Verifier.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2Verifier.java
index abfd7012f9c994bcab3e10b23d2feaa9b56bc81b..53083b330b43666d98b7d860c58ea1d29e28ff8c 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/Fastjson2Verifier.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/Fastjson2Verifier.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.autoconfigure.apijson.fastjson2;
+package yunjiao.springboot.extension.apijson.fastjson2;
import apijson.fastjson2.APIJSONVerifier;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/model/Privacy.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/model/Privacy.java
similarity index 90%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/model/Privacy.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/model/Privacy.java
index f034b40d0f3dc417030dc150dbeae1abd151e1f9..a25fda57edad58b7f908e2bd73548c0dcbe00d4b 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/model/Privacy.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/model/Privacy.java
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.*/
-package yunjiao.springboot.autoconfigure.apijson.fastjson2.model;
+package yunjiao.springboot.extension.apijson.fastjson2.model;
import apijson.MethodAccess;
import apijson.framework.BaseModel;
@@ -67,25 +67,48 @@ public class Privacy extends BaseModel {
*/
private Double balance;
+ /**
+ * 构造器
+ */
public Privacy() {
super();
}
+ /**
+ * 构造器
+ * @param id id
+ */
public Privacy(long id) {
this();
setId(id);
}
+ /**
+ * 构造器
+ * @param phone 手机号
+ * @param password 密码
+ */
public Privacy(String phone, String password) {
this();
setPhone(phone);
setPassword(password);
}
+ /**
+ * 获取手机号
+ *
+ * @return 手机号
+ */
public String getPhone() {
return phone;
}
+ /**
+ * 设置手机号
+ *
+ * @param phone 手机号
+ * @return 实例
+ */
public Privacy setPhone(String phone) {
this.phone = phone;
return this;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/model/User.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/model/User.java
similarity index 98%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/model/User.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/model/User.java
index 225bc5c6c13a0500c473e085441ebdc52bc7f0e3..115adb3164d57d5e179e00bd8947a938d7b8d8ad 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/model/User.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/model/User.java
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.*/
-package yunjiao.springboot.autoconfigure.apijson.fastjson2.model;
+package yunjiao.springboot.extension.apijson.fastjson2.model;
import apijson.MethodAccess;
import apijson.framework.BaseModel;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/model/Verify.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/model/Verify.java
similarity index 77%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/model/Verify.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/model/Verify.java
index 0f01e478782e66c7e5b92d237f837601fccf08fb..440df2261d09261f753e6d78f375bcea68f7b612 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/fastjson2/model/Verify.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/fastjson2/model/Verify.java
@@ -12,10 +12,13 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.*/
-package yunjiao.springboot.autoconfigure.apijson.fastjson2.model;
+package yunjiao.springboot.extension.apijson.fastjson2.model;
import apijson.MethodAccess;
import apijson.framework.BaseModel;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
import static apijson.orm.AbstractVerifier.*;
@@ -33,6 +36,9 @@ import static apijson.orm.AbstractVerifier.*;
PUT = {ADMIN},
DELETE = {ADMIN}
)
+@Getter
+@Setter
+@Accessors(chain = true)
public class Verify extends BaseModel {
/**
@@ -75,12 +81,17 @@ public class Verify extends BaseModel {
*/
private Integer type;
+ /**
+ * 构造器
+ */
public Verify() {
super();
}
/**
* type和phone为联合主键,必传
+ * @param type 类型
+ * @param phone 手机
*/
public Verify(int type, String phone) {
this();
@@ -88,32 +99,4 @@ public class Verify extends BaseModel {
setPhone(phone);
}
-
- public String getVerify() {
- return verify;
- }
-
- public Verify setVerify(String verify) {
- this.verify = verify;
- return this;
- }
-
- public String getPhone() {
- return phone;
- }
-
- public Verify setPhone(String phone) {
- this.phone = phone;
- return this;
- }
-
- public Integer getType() {
- return type;
- }
-
- public Verify setType(Integer type) {
- this.type = type;
- return this;
- }
-
}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonCreator.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonCreator.java
similarity index 79%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonCreator.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonCreator.java
index ad86e858d468a7cbf7ceb9ac2b5de3a71b92a15d..862b267169470bda6b70d8432d49c7b413e1a701 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonCreator.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonCreator.java
@@ -1,7 +1,6 @@
-package yunjiao.springboot.autoconfigure.apijson.gson;
+package yunjiao.springboot.extension.apijson.gson;
import apijson.gson.*;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonSqlProperties;
import lombok.RequiredArgsConstructor;
import javax.sql.DataSource;
@@ -16,7 +15,10 @@ import java.io.Serializable;
public class GsonCreator extends APIJSONCreator {
private final DataSource dataSource;
- private final ApijsonSqlProperties sqlProperties;
+ /**
+ * 数据库版本
+ */
+ private final String dbVersion;
@Override
public APIJSONParser createParser() {
@@ -35,7 +37,7 @@ public class GsonCreator extends APIJSONCreator {
@Override
public APIJSONSQLConfig createSQLConfig() {
- return new GsonSqlConfig(sqlProperties);
+ return new GsonSqlConfig(dbVersion);
}
@Override
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonEXtRestController.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonEXtRestController.java
similarity index 94%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonEXtRestController.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonEXtRestController.java
index 2e2feee3006220ff2f59954fb42e497ae3e116b4..77c0fd43314807ba6f22c1855f22d2f415fb4ade 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonEXtRestController.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonEXtRestController.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.autoconfigure.apijson.gson;
+package yunjiao.springboot.extension.apijson.gson;
import apijson.Log;
import apijson.StringUtil;
@@ -10,11 +10,6 @@ import apijson.gson.JSONResponse;
import apijson.orm.exception.ConditionErrorException;
import apijson.orm.exception.ConflictException;
import apijson.orm.exception.NotExistException;
-import yunjiao.springboot.extension.apjson.annotation.ApijsonRest;
-import yunjiao.springboot.extension.apjson.orm.GsonMap;
-import yunjiao.springboot.autoconfigure.apijson.gson.model.Privacy;
-import yunjiao.springboot.autoconfigure.apijson.gson.model.User;
-import yunjiao.springboot.autoconfigure.apijson.gson.model.Verify;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -22,6 +17,11 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import yunjiao.springboot.extension.apijson.gson.model.Privacy;
+import yunjiao.springboot.extension.apijson.gson.model.User;
+import yunjiao.springboot.extension.apijson.gson.model.Verify;
+import yunjiao.springboot.extension.apijson.annotation.ApijsonRest;
+import yunjiao.springboot.extension.apijson.orm.GsonMap;
import java.io.Serializable;
import java.rmi.ServerException;
@@ -43,45 +43,101 @@ import static apijson.framework.APIJSONConstant.*;
@RequiredArgsConstructor
@RestController
@RequestMapping("ext")
-@SuppressWarnings({"all"})
public class GsonEXtRestController extends APIJSONController {
+ /**
+ * USER名
+ */
public static final String USER_;
+ /**
+ * PRIVACY名
+ */
public static final String PRIVACY_;
- public static final String VERIFY_; //加下划线后缀是为了避免 Verify 和 verify 都叫VERIFY,分不清
+ /**
+ * 加下划线后缀是为了避免 Verify 和 verify 都叫VERIFY,分不清
+ */
+ public static final String VERIFY_;
+ /**
+ * 当前用户ID
+ */
public static final String CURRENT_USER_ID = "currentUserId";
+ /**
+ * 名称
+ */
public static final String NAME = "name";
+ /**
+ * 手机
+ */
public static final String PHONE = "phone";
+ /**
+ * 密码
+ */
public static final String PASSWORD = "password";
+ /**
+ * 密码
+ */
public static final String _PASSWORD = "_password";
+ /**
+ * 支付密码
+ */
public static final String _PAY_PASSWORD = "_payPassword";
+ /**
+ * 旧密码
+ */
public static final String OLD_PASSWORD = "oldPassword";
+ /**
+ * VERIFY名
+ */
public static final String VERIFY = "verify";
+ /**
+ * 类型
+ */
public static final String TYPE = "type";
+ /**
+ * 值
+ */
public static final String VALUE = "value";
+ /**
+ * 登录
+ */
public static final String LOGIN = "login";
+ /**
+ * 名称
+ */
public static final String AS_DB_ACCOUNT = "asDBAccount";
+ /**
+ * 记住
+ */
public static final String REMEMBER = "remember";
+ /**
+ * 默认
+ */
public static final String DEFAULTS = "defaults";
- public static final int LOGIN_TYPE_PASSWORD = 0;//密码登录
+ /**
+ * 密码登录
+ */
+ public static final int LOGIN_TYPE_PASSWORD = 0;//
- public static final int LOGIN_TYPE_VERIFY = 1;//验证码登录
+ /**
+ * 验证码登录
+ */
+ public static final int LOGIN_TYPE_VERIFY = 1;//
static {
USER_ = User.class.getSimpleName();
@@ -89,6 +145,9 @@ public class GsonEXtRestController extends APIJSONController {
VERIFY_ = Verify.class.getSimpleName();
}
+ /**
+ *
+ */
private static final String REGISTER = "register";
/**重新加载配置
@@ -566,10 +625,24 @@ public class GsonEXtRestController extends APIJSONController {
}
+ /**
+ * 响应结果包装
+ *
+ * @param requestObject 必须值
+ * @param key 必须值
+ * @return 实例
+ */
public static Map newIllegalArgumentResult(Map requestObject, String key) {
return newIllegalArgumentResult(requestObject, key, null);
}
+ /**
+ * 响应结果包装
+ * @param requestObject 必须值
+ * @param key 必须值
+ * @param msg 必须值
+ * @return 实例
+ */
public static Map newIllegalArgumentResult(Map requestObject, String key, String msg) {
return new GsonParser().extendErrorResult(requestObject, new IllegalArgumentException(key + ":value 中value不合法!" + StringUtil.get(msg)));
}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonFunctionParser.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonFunctionParser.java
similarity index 87%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonFunctionParser.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonFunctionParser.java
index 69a74a26b6122738d91d161112246a969f904b3b..00cda9d4ecf2ce4c26d796a2c2cc597435714681 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonFunctionParser.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonFunctionParser.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.autoconfigure.apijson.gson;
+package yunjiao.springboot.extension.apijson.gson;
import apijson.gson.APIJSONFunctionParser;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonObjectParser.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonObjectParser.java
similarity index 96%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonObjectParser.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonObjectParser.java
index 5cc77011e0c65dd080a0f4ea6680c77de4e38d7d..eedea2d8b8e4a053a46b10fbb997974715b5fdef 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonObjectParser.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonObjectParser.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.autoconfigure.apijson.gson;
+package yunjiao.springboot.extension.apijson.gson;
import apijson.RequestMethod;
import apijson.gson.APIJSONObjectParser;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonParser.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonParser.java
similarity index 95%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonParser.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonParser.java
index cac03cbe7df8827950eb3f71608e5d4ffdfa4adf..52075c382408f3236e12b5ee81f6a4c1b7913f61 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonParser.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonParser.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.autoconfigure.apijson.gson;
+package yunjiao.springboot.extension.apijson.gson;
import apijson.RequestMethod;
import apijson.gson.APIJSONObjectParser;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonRestController.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonRestController.java
similarity index 76%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonRestController.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonRestController.java
index 08c1e248bc336022970081c90228c8816598b5b5..6fd8502993bc7abb4e733afbf2d96d7eb44d164b 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonRestController.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonRestController.java
@@ -1,14 +1,13 @@
-package yunjiao.springboot.autoconfigure.apijson.gson;
+package yunjiao.springboot.extension.apijson.gson;
import apijson.RequestMethod;
import apijson.gson.APIJSONController;
import apijson.gson.APIJSONParser;
-import yunjiao.springboot.extension.apjson.annotation.ApijsonRest;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonProperties;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
+import yunjiao.springboot.extension.apijson.annotation.ApijsonRest;
import java.io.Serializable;
import java.util.Map;
@@ -24,14 +23,18 @@ import java.util.Map;
@RestController
@RequestMapping("common")
public class GsonRestController extends APIJSONController {
- private final ApijsonProperties properties;
+ private final boolean needVerifyLogin;
+
+ private final boolean needVerifyRole;
+
+ private final boolean needVerifyContent;
@Override
public APIJSONParser newParser(HttpSession session, RequestMethod method) {
return super.newParser(session, method)
- .setNeedVerifyLogin(properties.isNeedVerifyLogin())
- .setNeedVerifyRole(properties.isNeedVerifyRole())
- .setNeedVerifyContent(properties.isNeedVerifyContent());
+ .setNeedVerifyLogin(needVerifyLogin)
+ .setNeedVerifyRole(needVerifyRole)
+ .setNeedVerifyContent(needVerifyContent);
}
@PostMapping(value = "{method}")
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonSimpleCallback.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonSimpleCallback.java
similarity index 89%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonSimpleCallback.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonSimpleCallback.java
index 9fd4f6899e61dee4ebc97bb964d0cb712fa2e25d..47af08d2518083274e3d0d8e889c42f4b1baded0 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonSimpleCallback.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonSimpleCallback.java
@@ -1,13 +1,13 @@
-package yunjiao.springboot.autoconfigure.apijson.gson;
+package yunjiao.springboot.extension.apijson.gson;
import apijson.RequestMethod;
import apijson.fastjson2.APIJSONApplication;
import apijson.gson.APIJSONSQLConfig;
import apijson.orm.AbstractSQLConfig;
import apijson.orm.SQLConfig;
-import yunjiao.springboot.extension.apjson.orm.IdKeyStrategy;
-import yunjiao.springboot.extension.apjson.orm.NewIdStrategy;
import lombok.RequiredArgsConstructor;
+import yunjiao.springboot.extension.apijson.orm.IdKeyStrategy;
+import yunjiao.springboot.extension.apijson.orm.NewIdStrategy;
import java.io.Serializable;
import java.util.List;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonSqlConfig.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonSqlConfig.java
similarity index 67%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonSqlConfig.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonSqlConfig.java
index cdbd6c696bff93b2233f8aad9059f0a699dbc5bb..08807f807210d1ad22f93189b9c3089aa9dc1627 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonSqlConfig.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonSqlConfig.java
@@ -1,7 +1,6 @@
-package yunjiao.springboot.autoconfigure.apijson.gson;
+package yunjiao.springboot.extension.apijson.gson;
import apijson.gson.APIJSONSQLConfig;
-import yunjiao.springboot.autoconfigure.apijson.ApijsonSqlProperties;
import lombok.RequiredArgsConstructor;
import java.io.Serializable;
@@ -18,10 +17,10 @@ public class GsonSqlConfig extends APIJSONSQLConfig {
*/
public static final String TAG = GsonSqlConfig.class.getSimpleName();
- private final ApijsonSqlProperties properties;
+ private final String dbVersion;
@Override
public String gainDBVersion() {
- return properties.getConfig().getVersion();
+ return dbVersion;
}
}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonSqlExecutor.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonSqlExecutor.java
similarity index 89%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonSqlExecutor.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonSqlExecutor.java
index f0dd05bdbdeb8089817a1345908050c160827e8a..6918728d78298134ea7b1d60131c34c571ddc55d 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonSqlExecutor.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonSqlExecutor.java
@@ -1,9 +1,9 @@
-package yunjiao.springboot.autoconfigure.apijson.gson;
+package yunjiao.springboot.extension.apijson.gson;
import apijson.gson.APIJSONSQLExecutor;
import apijson.orm.SQLConfig;
-import yunjiao.springboot.extension.apjson.orm.SqlConnectProvider;
import lombok.RequiredArgsConstructor;
+import yunjiao.springboot.extension.apijson.orm.SqlConnectProvider;
import javax.sql.DataSource;
import java.io.Serializable;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonVerifier.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonVerifier.java
similarity index 81%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonVerifier.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonVerifier.java
index aeb276d6f3a60c4be67233b7f027c6f43e4731ab..445043fa5c35009b669e4b51fd174bf8a6c45212 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/GsonVerifier.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/GsonVerifier.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.autoconfigure.apijson.gson;
+package yunjiao.springboot.extension.apijson.gson;
import apijson.gson.APIJSONVerifier;
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/model/Privacy.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/model/Privacy.java
similarity index 85%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/model/Privacy.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/model/Privacy.java
index ffed20c5e5ba73020253982be32e857d360f3c4e..cab7f65740d82d89971b6d4a157f22ba9101a828 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/model/Privacy.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/model/Privacy.java
@@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.*/
-package yunjiao.springboot.autoconfigure.apijson.gson.model;
+package yunjiao.springboot.extension.apijson.gson.model;
import apijson.MethodAccess;
import apijson.framework.BaseModel;
@@ -77,26 +77,46 @@ public class Privacy extends BaseModel {
*/
private Double balance;
+ /**
+ * 构造器
+ */
public Privacy() {
super();
}
+ /**
+ * 构造器
+ * @param id id
+ */
public Privacy(Long id) {
this();
setId(id);
}
+ /**
+ * 构造器
+ * @param password 密码
+ */
public Privacy(String password) {
this.password = password;
}
+ /**
+ * 构造器
+ * @param phone 手机号
+ * @param password 密码
+ */
public Privacy(String phone, String password) {
this();
setPhone(phone);
setPassword(password);
}
-
+ /**
+ * 示例
+ *
+ * @param args 参数
+ */
public static void main(String[] args) {
Privacy privacy = new Privacy("uer", "pwd");
String json = new Gson().toJson(privacy);
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/model/User.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/model/User.java
similarity index 61%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/model/User.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/model/User.java
index 3251e7c9e50b201f3877b0c237824ccd0dc1b621..c1d499de8b1d4e48b404cb8eb59d81472f187ae2 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/model/User.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/model/User.java
@@ -12,11 +12,14 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.*/
-package yunjiao.springboot.autoconfigure.apijson.gson.model;
+package yunjiao.springboot.extension.apijson.gson.model;
import apijson.MethodAccess;
import apijson.framework.BaseModel;
import apijson.orm.Visitor;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
import java.util.List;
@@ -32,11 +35,23 @@ import static apijson.orm.AbstractVerifier.UNKNOWN;
POST = {UNKNOWN, ADMIN},
DELETE = {ADMIN}
)
+@Getter
+@Setter
+@Accessors(chain = true)
public class User extends BaseModel implements Visitor {
+ /**
+ * 性别0
+ */
public static final int SEX_MAIL = 0;
+ /**
+ * 性别1
+ */
public static final int SEX_FEMALE = 1;
+ /**
+ * 性别2
+ */
public static final int SEX_UNKNOWN = 2;
/**
@@ -76,63 +91,14 @@ public class User extends BaseModel implements Visitor {
super();
}
+ /**
+ * 构造器
+ * @param id id
+ */
public User(long id) {
this();
setId(id);
}
- public Integer getSex() {
- return sex;
- }
-
- public User setSex(Integer sex) {
- this.sex = sex;
- return this;
- }
-
- public String getHead() {
- return head;
- }
-
- public User setHead(String head) {
- this.head = head;
- return this;
- }
-
- public String getName() {
- return name;
- }
-
- public User setName(String name) {
- this.name = name;
- return this;
- }
-
- public List getPictureList() {
- return pictureList;
- }
-
- public User setPictureList(List pictureList) {
- this.pictureList = pictureList;
- return this;
- }
-
- public String getTag() {
- return tag;
- }
-
- public User setTag(String tag) {
- this.tag = tag;
- return this;
- }
-
- public List getContactIdList() {
- return contactIdList;
- }
-
- public User setContactIdList(List contactIdList) {
- this.contactIdList = contactIdList;
- return this;
- }
}
diff --git a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/model/Verify.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/model/Verify.java
similarity index 64%
rename from autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/model/Verify.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/model/Verify.java
index 0f7f8e2b252bc1cef6c2d96123e0219506bb52ce..cbe0c57037c2218a3eb729a6ccb498f33914dc0f 100644
--- a/autoconfigure/src/main/java/yunjiao/springboot/autoconfigure/apijson/gson/model/Verify.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/gson/model/Verify.java
@@ -12,10 +12,13 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.*/
-package yunjiao.springboot.autoconfigure.apijson.gson.model;
+package yunjiao.springboot.extension.apijson.gson.model;
import apijson.MethodAccess;
import apijson.framework.BaseModel;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
import static apijson.orm.AbstractVerifier.*;
@@ -33,17 +36,35 @@ import static apijson.orm.AbstractVerifier.*;
PUT = {ADMIN},
DELETE = {ADMIN}
)
+@Setter
+@Getter
+@Accessors(chain = true)
public class Verify extends BaseModel {
- public static final int TYPE_LOGIN = 0; //登录
+ /**
+ * 登录
+ */
+ public static final int TYPE_LOGIN = 0;
- public static final int TYPE_REGISTER = 1; //注册
+ /**
+ *注册
+ */
+ public static final int TYPE_REGISTER = 1;
- public static final int TYPE_PASSWORD = 2; //登录密码
+ /**
+ *登录密码
+ */
+ public static final int TYPE_PASSWORD = 2;
- public static final int TYPE_PAY_PASSWORD = 3; //支付密码
+ /**
+ *支付密码
+ */
+ public static final int TYPE_PAY_PASSWORD = 3;
- public static final int TYPE_RELOAD = 4; //重载配置
+ /**
+ *重载配置
+ */
+ public static final int TYPE_RELOAD = 4;
/**
* 手机
@@ -60,47 +81,22 @@ public class Verify extends BaseModel {
*/
private Integer type;
+ /**
+ * 构造器
+ */
public Verify() {
super();
}
/**
* type和phone为联合主键,必传
+ *
+ * @param type 类型
+ * @param phone 手机
*/
public Verify(int type, String phone) {
this();
setType(type);
setPhone(phone);
}
-
-
- public String getVerify() {
- return verify;
- }
-
- public Verify setVerify(String verify) {
- this.verify = verify;
- return this;
- }
-
- public String getPhone() {
- return phone;
- }
-
- public Verify setPhone(String phone) {
- this.phone = phone;
- return this;
- }
-
- public Integer getType() {
- return type;
- }
-
- public Verify setType(Integer type) {
- this.type = type;
- return this;
- }
-
-
-
}
diff --git a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/GsonMap.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/GsonMap.java
similarity index 97%
rename from extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/GsonMap.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/GsonMap.java
index c12b02fc949a03f6b1e4fc9cb996dd82d277f2cb..176e2344f5e38744d72b63925aaba8a67c1617ce 100644
--- a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/GsonMap.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/GsonMap.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.extension.apjson.orm;
+package yunjiao.springboot.extension.apijson.orm;
import java.util.LinkedHashMap;
import java.util.Map;
diff --git a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/IdKeyApijsonStrategy.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/IdKeyApijsonStrategy.java
similarity index 85%
rename from extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/IdKeyApijsonStrategy.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/IdKeyApijsonStrategy.java
index ab1bd44f9e55d57877f4348a467f6d317da5a0b8..c8071281dbdf7f0bf296bc1b04482c841d692776 100644
--- a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/IdKeyApijsonStrategy.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/IdKeyApijsonStrategy.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.extension.apjson.orm;
+package yunjiao.springboot.extension.apijson.orm;
import apijson.JSONMap;
diff --git a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/IdKeyStrategy.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/IdKeyStrategy.java
similarity index 90%
rename from extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/IdKeyStrategy.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/IdKeyStrategy.java
index 79def433ad20904143d0ca2fce6aacf76659e507..8750a9df38a638d3100b7050872cd8f69af0654f 100644
--- a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/IdKeyStrategy.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/IdKeyStrategy.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.extension.apjson.orm;
+package yunjiao.springboot.extension.apijson.orm;
/**
* 主键名称策略
diff --git a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdDatabaseStrategy.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdDatabaseStrategy.java
similarity index 88%
rename from extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdDatabaseStrategy.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdDatabaseStrategy.java
index 985025a6bdfc9338daa56711b6f85c88f5cfd824..cd404a64d88d0a3d48dbceef8674e8161768ef26 100644
--- a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdDatabaseStrategy.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdDatabaseStrategy.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.extension.apjson.orm;
+package yunjiao.springboot.extension.apijson.orm;
import apijson.RequestMethod;
diff --git a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdExceptionStrategy.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdExceptionStrategy.java
similarity index 89%
rename from extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdExceptionStrategy.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdExceptionStrategy.java
index 4ce4df262ed6cf7b50d75c6a3b9bc397f925d004..6575865b1ff93184fcfac4b9aa25db5e0b38a344 100644
--- a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdExceptionStrategy.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdExceptionStrategy.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.extension.apjson.orm;
+package yunjiao.springboot.extension.apijson.orm;
import apijson.RequestMethod;
diff --git a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdSnowflakeStrategy.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdSnowflakeStrategy.java
similarity index 91%
rename from extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdSnowflakeStrategy.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdSnowflakeStrategy.java
index 5b011b9211d7e7f86a8a3cf880fa2bb82280c16b..46abb343361d18495d79d2aa45c5d90cfb75fb7d 100644
--- a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdSnowflakeStrategy.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdSnowflakeStrategy.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.extension.apjson.orm;
+package yunjiao.springboot.extension.apijson.orm;
import apijson.RequestMethod;
import cn.hutool.core.lang.Snowflake;
diff --git a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdStrategy.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdStrategy.java
similarity index 92%
rename from extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdStrategy.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdStrategy.java
index 4624c3a4681b967b354224288d90e1bc952ff211..ddf353ae60da17fa28ec76d65bbe3f1f7ac55922 100644
--- a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdStrategy.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdStrategy.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.extension.apjson.orm;
+package yunjiao.springboot.extension.apijson.orm;
import apijson.RequestMethod;
diff --git a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdTimestampStrategy.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdTimestampStrategy.java
similarity index 92%
rename from extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdTimestampStrategy.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdTimestampStrategy.java
index 56dda6c9cb2c0082edf6d17a7e3615daeb376e8f..85f0466a4d5e8a884c5083a02bfe7dcc1b68a244 100644
--- a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdTimestampStrategy.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdTimestampStrategy.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.extension.apjson.orm;
+package yunjiao.springboot.extension.apijson.orm;
import apijson.RequestMethod;
import yunjiao.springboot.extension.common.generator.TimestampIdGenerator;
diff --git a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdUuidStrategy.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdUuidStrategy.java
similarity index 89%
rename from extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdUuidStrategy.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdUuidStrategy.java
index 745278932ce50a1822870e9c7ea911ee9010937d..d5c93f428fa839a90bda2f1ef31d67264f5b29da 100644
--- a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/NewIdUuidStrategy.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/NewIdUuidStrategy.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.extension.apjson.orm;
+package yunjiao.springboot.extension.apijson.orm;
import apijson.RequestMethod;
import cn.hutool.core.util.IdUtil;
diff --git a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/SqlConnectProvider.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/SqlConnectProvider.java
similarity index 93%
rename from extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/SqlConnectProvider.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/SqlConnectProvider.java
index 301abbeaa7947920c904c6930958ade2a980cd05..3c7d02a8299f71210683beba3da1c545c89b18ef 100644
--- a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/orm/SqlConnectProvider.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/orm/SqlConnectProvider.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.extension.apjson.orm;
+package yunjiao.springboot.extension.apijson.orm;
import apijson.NotNull;
import org.slf4j.Logger;
@@ -55,11 +55,11 @@ public interface SqlConnectProvider {
Connection newCon = null;
try {
String dataSourceType = parseKey(key);
- DataSourceContextHolder.setDataSourceType(dataSourceType);
+ DataSourceContextHolder.setDataSourceName(dataSourceType);
DataSource dataSource = getDataSource();
newCon = dataSource.getConnection();
}finally {
- DataSourceContextHolder.clearDataSourceType();
+ DataSourceContextHolder.clearDataSourceName();
}
if (log.isDebugEnabled()) {
log.debug("Successfully obtained a connection from data source: {}->{}", key, newCon);
diff --git a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/util/ApijsonConsts.java b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/util/ApijsonConsts.java
similarity index 93%
rename from extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/util/ApijsonConsts.java
rename to extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/util/ApijsonConsts.java
index 0057b60bf93c1616b6c1f4d6ca55a4b30297c53d..d939f24be252a9db052dd82348eaaf4d666fc025 100644
--- a/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apjson/util/ApijsonConsts.java
+++ b/extensions/extension-apijson/src/main/java/yunjiao/springboot/extension/apijson/util/ApijsonConsts.java
@@ -1,4 +1,4 @@
-package yunjiao.springboot.extension.apjson.util;
+package yunjiao.springboot.extension.apijson.util;
import apijson.orm.SQLConfig;
diff --git a/extensions/extension-captcha/src/main/java/yunjiao/springboot/extension/captcha/anji/BlockPuzzleCaptchaService.java b/extensions/extension-captcha/src/main/java/yunjiao/springboot/extension/captcha/anji/BlockPuzzleCaptchaService.java
index dcd776ba3e1b77abfe7e883a3afecceb13b9d6c0..df30ca579904898bf445983be4dd2daa1bf083f9 100644
--- a/extensions/extension-captcha/src/main/java/yunjiao/springboot/extension/captcha/anji/BlockPuzzleCaptchaService.java
+++ b/extensions/extension-captcha/src/main/java/yunjiao/springboot/extension/captcha/anji/BlockPuzzleCaptchaService.java
@@ -4,6 +4,8 @@ import com.anji.captcha.model.common.CaptchaTypeEnum;
import com.anji.captcha.model.vo.CaptchaVO;
import com.anji.captcha.service.CaptchaCacheService;
import com.anji.captcha.service.CaptchaService;
+import com.google.gson.JsonSyntaxException;
+import lombok.extern.slf4j.Slf4j;
import yunjiao.springboot.extension.common.captcha.CaptchaCategory;
import yunjiao.springboot.extension.common.captcha.CaptchaData;
import yunjiao.springboot.extension.common.captcha.Point;
@@ -16,6 +18,7 @@ import java.util.Base64;
*
* @author yangyunjiao
*/
+@Slf4j
public class BlockPuzzleCaptchaService extends BaseCaptchaService {
/**
* 拼图坐标允许误差偏移量
@@ -37,11 +40,17 @@ public class BlockPuzzleCaptchaService extends BaseCaptchaService {
@Override
public boolean verify(String originalCode, String userCode) {
- Point original = GsonUtils.fromJson(originalCode, Point.class);
- Point user = GsonUtils.fromJson(userCode, Point.class);
+ try {
+ Point original = GsonUtils.fromJson(originalCode, Point.class);
+ Point user = GsonUtils.fromJson(userCode, Point.class);
- return between(user.x(), original.x() - slipOffset, original.x() + slipOffset)
- && between(user.y(), original.y() - slipOffset, original.y() + slipOffset);
+ return between(user.x(), original.x() - slipOffset, original.x() + slipOffset)
+ && between(user.y(), original.y() - slipOffset, original.y() + slipOffset);
+ } catch (JsonSyntaxException e) {
+ log.error("验证码格式异常", e);
+ }
+
+ return false;
}
@Override
diff --git a/extensions/extension-captcha/src/main/java/yunjiao/springboot/extension/captcha/anji/ClickWorkCaptchaService.java b/extensions/extension-captcha/src/main/java/yunjiao/springboot/extension/captcha/anji/ClickWorkCaptchaService.java
index d44da78a28e4f50f446f11844a03397415d189a0..f7e76cc40e9d02cd52dc951bf7b7791eb8e8afa5 100644
--- a/extensions/extension-captcha/src/main/java/yunjiao/springboot/extension/captcha/anji/ClickWorkCaptchaService.java
+++ b/extensions/extension-captcha/src/main/java/yunjiao/springboot/extension/captcha/anji/ClickWorkCaptchaService.java
@@ -4,6 +4,8 @@ import com.anji.captcha.model.common.CaptchaTypeEnum;
import com.anji.captcha.model.vo.CaptchaVO;
import com.anji.captcha.service.CaptchaCacheService;
import com.anji.captcha.service.CaptchaService;
+import com.google.gson.JsonSyntaxException;
+import lombok.extern.slf4j.Slf4j;
import yunjiao.springboot.extension.common.captcha.CaptchaCategory;
import yunjiao.springboot.extension.common.captcha.CaptchaData;
import yunjiao.springboot.extension.common.captcha.Point;
@@ -17,6 +19,7 @@ import java.util.List;
*
* @author yangyunjiao
*/
+@Slf4j
public class ClickWorkCaptchaService extends BaseCaptchaService {
/**
* 拼图坐标允许误差偏移量
@@ -38,22 +41,30 @@ public class ClickWorkCaptchaService extends BaseCaptchaService {
@Override
public boolean verify(String originalCode, String userCode) {
- List originalList = GsonUtils.toList(originalCode, Point.class);
- List userList = GsonUtils.toList(userCode, Point.class);
- if (originalList.size() != userList.size()) {
- return false;
- }
+ try {
+ List originalList = GsonUtils.toList(originalCode, Point.class);
+ List userList = GsonUtils.toList(userCode, Point.class);
- for (int i = 0; i < originalList.size(); i++) {
- Point original = originalList.get(i);
- Point user = userList.get(i);
- boolean passed = between(user.x(), original.x() - slipOffset, original.x() + slipOffset)
- && between(user.y(), original.y() - slipOffset, original.y() + slipOffset);
- if (!passed) {
+ if (originalList.size() != userList.size()) {
return false;
}
+
+ boolean passed = true;
+ for (int i = 0; i < originalList.size(); i++) {
+ Point original = originalList.get(i);
+ Point user = userList.get(i);
+ passed = between(user.x(), original.x() - slipOffset, original.x() + slipOffset)
+ && between(user.y(), original.y() - slipOffset, original.y() + slipOffset);
+ if (!passed) {
+ return false;
+ }
+ }
+ return true;
+ } catch (JsonSyntaxException e) {
+ log.error("验证码格式异常", e);
}
- return true;
+
+ return false;
}
@Override
diff --git a/extensions/extension-captcha/src/main/java/yunjiao/springboot/extension/captcha/cache/GuavaCaptchaCache.java b/extensions/extension-captcha/src/main/java/yunjiao/springboot/extension/captcha/cache/GuavaCaptchaCache.java
index 9036e72a7096022c560cdf65478fa1e7862b7b85..f780eda6a6ce50340b39c5bf235e23181f3c9a09 100644
--- a/extensions/extension-captcha/src/main/java/yunjiao/springboot/extension/captcha/cache/GuavaCaptchaCache.java
+++ b/extensions/extension-captcha/src/main/java/yunjiao/springboot/extension/captcha/cache/GuavaCaptchaCache.java
@@ -20,12 +20,21 @@ import java.util.concurrent.TimeUnit;
*/
@Slf4j
public class GuavaCaptchaCache implements CaptchaCache {
+ /**
+ * 缓存
+ */
private final LoadingCache> cache;
- public GuavaCaptchaCache(Duration expireMillis, long size) {
+ /**
+ * 构造器
+ *
+ * @param expired 缓存过期时间
+ * @param size 缓存大小
+ */
+ public GuavaCaptchaCache(Duration expired, long size) {
CacheBuilder
+
+
+ com.google.code.findbugs
+ jsr305
+ compile
+
\ No newline at end of file
diff --git a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/CommonConsts.java b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/CommonConsts.java
index cf5b9eba273b34073140bdc02af2d794f78050ff..9e69eef5ed5868987470e3f67bffa1eeb0823b8c 100644
--- a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/CommonConsts.java
+++ b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/CommonConsts.java
@@ -9,10 +9,10 @@ public final class CommonConsts {
/**
* 系统环境变量名称:雪花算法workId
*/
- public static final String ENV_SNOWFLAKE_WORKER_ID = "SNOWFLAKE_WORKER_ID";
+ public static final String ENV_SNOWFLAKE_WORKER_ID = "yunjiao.springboot.extension.id.snowflakeWorkId";
/**
* 系统环境变量名称:雪花算法datacenterId
*/
- public static final String ENV_SNOWFLAKE_DATACENTER_ID = "SNOWFLAKE_DATACENTER_ID";
+ public static final String ENV_SNOWFLAKE_DATACENTER_ID = "yunjiao.springboot.extension.id.snowflakeDatacenterId";
}
diff --git a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/captcha/CaptchaCategory.java b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/captcha/CaptchaCategory.java
index ae903f0dc37bfdfda6b3f13acce49de8cc032c99..c93db89d9c0bb91458724c8cd00b16898acca49c 100644
--- a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/captcha/CaptchaCategory.java
+++ b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/captcha/CaptchaCategory.java
@@ -1,6 +1,5 @@
package yunjiao.springboot.extension.common.captcha;
-import yunjiao.springboot.extension.common.util.EnumCache;
import lombok.Getter;
import lombok.ToString;
@@ -12,12 +11,39 @@ import lombok.ToString;
@Getter
@ToString
public enum CaptchaCategory {
+ /**
+ * 线段干扰验证码
+ */
line("png", "线段干扰验证码"),
+
+ /**
+ * 圆圈干扰验证码
+ */
circle("png", "圆圈干扰验证码"),
+
+ /**
+ * 扭曲干扰验证码
+ */
shear("png", "扭曲干扰验证码"),
+
+ /**
+ * GIF验证码
+ */
gif("gif", "GIF验证码"),
+
+ /**
+ * 滑块拼图验证码
+ */
blockPuzzle("png", "滑块拼图验证码"),
+
+ /**
+ * 文字点选验证码
+ */
clickWord("png", "文字点选验证码"),
+
+ /**
+ * 旋转拼图验证码
+ */
rotatePuzzle("png", "旋转拼图验证码");
/**
@@ -34,8 +60,4 @@ public enum CaptchaCategory {
this.ext = ext;
this.description = description;
}
-
- static {
- EnumCache.registerByName(CaptchaCategory.class, CaptchaCategory.values());
- }
}
diff --git a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/ColorType.java b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/ColorTypeEnum.java
similarity index 93%
rename from extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/ColorType.java
rename to extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/ColorTypeEnum.java
index 5d868d504e086f47e162f89fa5252802e07f8bd8..13412f83b45e275e044bb03e75adb9ec948916c1 100644
--- a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/ColorType.java
+++ b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/ColorTypeEnum.java
@@ -10,7 +10,7 @@ import java.awt.*;
* @author yangyunjiao
*/
@Getter
-public enum ColorType {
+public enum ColorTypeEnum {
/**
* 白色
*/
@@ -79,7 +79,7 @@ public enum ColorType {
private final Color mapping;
- ColorType(Color mapping) {
+ ColorTypeEnum(Color mapping) {
this.mapping = mapping;
}
}
diff --git a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/FontNameEnum.java b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/FontNameEnum.java
new file mode 100644
index 0000000000000000000000000000000000000000..172a2066bbd1fc3293dc0c56c3d2b3913025d1aa
--- /dev/null
+++ b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/FontNameEnum.java
@@ -0,0 +1,127 @@
+package yunjiao.springboot.extension.common.model;
+
+import lombok.Getter;
+import yunjiao.springboot.extension.common.util.FontCache;
+
+import java.awt.*;
+
+/**
+ * 字体名称
+ *
+ * @author yangyunjiao
+ */
+@Getter
+public enum FontNameEnum {
+
+ // 阿里巴巴普惠体 3.0 (下载地址:...)
+ /**
+ * 常规体 (字重:55)
+ * 最标准、最常用的字重。笔画清晰,可读性极高,是长时间阅读正文的首选,也被广泛用于用户界面(UI)的默认文本。
+ */
+ AlibabaPuHuiTi355Regular("阿里巴巴普惠体 3.0 55 Regular"),
+
+ /**
+ * 细体 / 纤体 (字重:35)
+ * 笔画最细,显得非常清秀、轻盈、现代。适用于大字号标题、时尚设计等需要精致感的场景,小字号下可能不易阅读。
+ */
+ AlibabaPuHuiTi335Thin("阿里巴巴普惠体 3.0 35 Thin"),
+
+ /**
+ * 轻体 (字重:45)
+ * 比Thin稍粗一点,但仍然保持轻盈的感觉。阅读起来比Thin更舒适,适合副标题、正文等。
+ */
+ AlibabaPuHuiTi345Light("阿里巴巴普惠体 3.0 45 Light"),
+
+ /**
+ * 常规体(L3版本) (字重:55)
+ * 重与Regular完全相同(都是55)。后缀的 L3 很可能表示这是一个专门为西文(拉丁字母、数字、符号)优化的版本,或者是一个仅包含西文字符的子集字体,
+ * 以确保在西文环境下显示效果更佳。中文部分可能保持不变或未包含。
+ */
+ AlibabaPuHuiTi355RegularL3("阿里巴巴普惠体 3.0 55 Regular L3"),
+
+ /**
+ * 中等 (字重:65)
+ * 比Regular更粗一点,更有力量感。常用于需要稍加强调的小标题、按钮文字、数据标注等,在不使用粗体的情况下提供层次感。
+ */
+ AlibabaPuHuiTi365Medium("阿里巴巴普惠体 3.0 65 Medium"),
+
+ /**
+ * 半粗体 (字重:75)
+ * 已经具有明显的粗壮感。非常适合用于标题、强调性段落,视觉效果突出。
+ */
+ AlibabaPuHuiTi375SemiBold("阿里巴巴普惠体 3.0 75 SemiBold"),
+
+ /**
+ * 粗体 (字重:85)
+ * 标准的粗体,强调效果强烈。常用于重点标题、需要用户特别注意的提示信息等。
+ */
+ AlibabaPuHuiTi385Bold("阿里巴巴普惠体 3.0 85 Bold"),
+
+ /**
+ * 特粗体 / 超粗体 (字重:95)
+ * 非常粗壮,视觉冲击力极强。通常用于超大字号的主标题、海报、广告牌等,能够有效吸引眼球。
+ */
+ AlibabaPuHuiTi395ExtraBold("阿里巴巴普惠体 3.0 95 ExtraBold"),
+
+ /**
+ * 重体 / 黑体 Heavy (字重:105)
+ * 笔画极粗,几乎填满了所有空间。是字体家族中最粗的成员,用于需要最强视觉重量的场合,使用时要非常谨慎,以免显得臃肿。
+ */
+ AlibabaPuHuiTi3105Heavy("阿里巴巴普惠体 3.0 105 Heavy"),
+
+ /**
+ * 黑体 (字重:115)
+ */
+ AlibabaPuHuiTi3115Black("阿里巴巴普惠体 3.0 115 Black"),
+
+ /**
+ * 思源黑体 (下载地址:...)
+ */
+ SourceHanSansVF("Source Han Sans VF"),
+
+ /**
+ * 思源宋体 (下载地址:...)
+ */
+ SourceHanSerifVF("Source Han Serif VF"),
+
+ /**
+ * 通用字体:宋体
+ */
+ SimSun("宋体"),
+
+ /**
+ * 通用字体:新宋体
+ */
+ NSimSun("新宋体"),
+
+ /**
+ * 默认系统字体
+ */
+ Default(null);
+
+
+ private final String name;
+
+ FontNameEnum(String name) {
+ this.name = name;
+ }
+
+ /**
+ * 获取字体
+ * @param style 字体样式 (Font.PLAIN, Font.BOLD, Font.ITALIC)
+ * @param size 字体大小
+ * @return 请求的字体
+ */
+ public Font getFont(int style, float size) {
+ return FontCache.getInstance().getFont(getName(), style, size);
+ }
+
+ /**
+ * 获取字体 (默认样式和大小)
+ *
+ * @return 请求的字体
+ */
+ public Font getFont() {
+ return FontCache.getInstance().getFont(getName());
+ }
+}
diff --git a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/FontStyle.java b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/FontStyleEnum.java
similarity index 86%
rename from extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/FontStyle.java
rename to extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/FontStyleEnum.java
index 45cf7ba00810189ba71887158ea9fa6034cb15d5..249fb2e897fc332dd0e52424eb8e59ee19136d4a 100644
--- a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/FontStyle.java
+++ b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/FontStyleEnum.java
@@ -10,7 +10,7 @@ import java.awt.*;
* @author yangyunjiao
*/
@Getter
-public enum FontStyle {
+public enum FontStyleEnum {
/**
* 正常体
*/
@@ -28,7 +28,7 @@ public enum FontStyle {
private final int mapping;
- FontStyle(int mapping) {
+ FontStyleEnum(int mapping) {
this.mapping = mapping;
}
}
diff --git a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/TransparencyType.java b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/TransparencyTypeEnum.java
similarity index 93%
rename from extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/TransparencyType.java
rename to extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/TransparencyTypeEnum.java
index ea369292973cbdc7dd39bc17f46ab87ee379ce32..28c83187ddecc70ff0ef146fa17f12dddcf3b4ba 100644
--- a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/TransparencyType.java
+++ b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/model/TransparencyTypeEnum.java
@@ -10,7 +10,7 @@ import java.awt.*;
* @author yangyunjiao
*/
@Getter
-public enum TransparencyType {
+public enum TransparencyTypeEnum {
/**
* {@link AlphaComposite#Clear}
*/
@@ -73,7 +73,7 @@ public enum TransparencyType {
private final AlphaComposite mapping;
- TransparencyType(AlphaComposite mapping) {
+ TransparencyTypeEnum(AlphaComposite mapping) {
this.mapping = mapping;
}
}
diff --git a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/spring/jdbc/DataSourceContextHolder.java b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/spring/jdbc/DataSourceContextHolder.java
index 54826e6738108c94726ead5685bbc7006a5d8e2e..9ccba3ad2dadeb0a42d97e910a0043ab498a6a16 100644
--- a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/spring/jdbc/DataSourceContextHolder.java
+++ b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/spring/jdbc/DataSourceContextHolder.java
@@ -1,5 +1,6 @@
package yunjiao.springboot.extension.common.spring.jdbc;
+import org.springframework.lang.Nullable;
import org.springframework.util.StringUtils;
/**
@@ -8,24 +9,41 @@ import org.springframework.util.StringUtils;
* @author yangyunjiao
*/
public class DataSourceContextHolder {
+ /**
+ * 默认是数据源名称
+ */
public static final String DEFAULT = "default";
+ /**
+ * 数据源名称上下文
+ */
private static final ThreadLocal contextHolder = new ThreadLocal<>();
- public static void setDataSourceType(String dsType) {
- if (!StringUtils.hasText(dsType)) {
+ /**
+ * 设置上下文数据源名称,如果是空,设置默认数据源名称
+ * @param dsName 数据源名称
+ */
+ public static void setDataSourceName(@Nullable String dsName) {
+ if (!StringUtils.hasText(dsName)) {
contextHolder.set(DEFAULT);
} else {
- contextHolder.set(dsType);
+ contextHolder.set(dsName);
}
}
- public static String getDataSourceType() {
+ /**
+ * 获取上下文数据源名称
+ * @return 名称
+ */
+ public static String getDataSourceName() {
return contextHolder.get();
}
- public static void clearDataSourceType() {
+ /**
+ * 清理上下文数据源名称
+ */
+ public static void clearDataSourceName() {
contextHolder.remove();
}
}
diff --git a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/spring/jdbc/MultipleDataSource.java b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/spring/jdbc/MultipleDataSource.java
index 88bf7eb6591175c8c63baa54d4062a4dfff739d1..722ac80d5af99d40e758238c75fc365f2c1d80ee 100644
--- a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/spring/jdbc/MultipleDataSource.java
+++ b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/spring/jdbc/MultipleDataSource.java
@@ -10,6 +10,6 @@ import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
public class MultipleDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
- return DataSourceContextHolder.getDataSourceType();
+ return DataSourceContextHolder.getDataSourceName();
}
}
diff --git a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/util/EnumCache.java b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/util/EnumCache.java
index 5fba8248313b7528823a4efbe6e76c54626f7caf..a3274af6abbda780f8c217c0506c66891a7e373a 100644
--- a/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/util/EnumCache.java
+++ b/extensions/extension-common/src/main/java/yunjiao/springboot/extension/common/util/EnumCache.java
@@ -1,202 +1,147 @@
package yunjiao.springboot.extension.common.util;
-import java.util.Map;
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
/**
- * 枚举缓存
+ * 枚举缓存, 单例模式
*
* @author yangyunjiao
*/
-public class EnumCache {
-
- /**
- * 以枚举任意值构建的缓存结构
- **/
- static final Map>, Map