diff --git a/README.md b/README.md
index de24e896d7248697ea2a76668a532f19570a0132..5bbf6152588742b35e207eb5a0e9934df9083e7e 100644
--- a/README.md
+++ b/README.md
@@ -2,88 +2,53 @@
## 项目列表
-- apijson-spring-boot-autoconfigure:配置项目
-- apijson-spring-boot-dependencies:依赖项目
-- apijson-spring-boot-examples:示例父项目
-- apijson-spring-boot-example-common: 格式(不影响代码运行的变动)
-- apijson-spring-boot-example-gson:使用gson的应用
-- apijson-spring-boot-example-seed:默认应用,使用fastjson2
-- apijson-spring-boot-starter:APIJSON Spring Boot 启动器
+| 项目 | 说明 |
+|-----------------------------------|-------------------------|
+| apijson-spring-boot-autoconfigure | 自动配置 |
+| apijson-spring-boot-dependencies | 项目依赖 |
+| apijson-spring-boot-examples | 示例项目 |
+| apijson-spring-boot-starter | APIJSON Spring Boot 启动器 |
## 使用 Gradle
+
```gradle
dependencies {
compile "io.gitee.yunjiao-source:apijson-spring-boot-starter:$version"
}
```
+
## 使用 Maven
+
```xml
+
io.gitee.yunjiao-source
apijson-spring-boot-starter
${version}
```
+
详细信息参考`apijson-spring-boot-examples`项目
## 所有的配置属性
-```yaml
-spring:
- apijson:
- rest-prefix: api-json
- application: fastjson2
- new-id-strategy: timestamp
- need-verify-login: true
- need-verify-role: true
- need-verify-content: true
- enable-on-startup: false
- shutdown-when-server-error: true
- log-debug: false
- sql:
- config:
- enable-column-config: false
- default-database: MYSQL
- default-schema: sys
- default-catalog:
- default-namespace:
- version: 5.7.22
- executor:
- enable-output-null-column: false
- key-raw-list: '@RAW@LIST'
- key-vice-item: '@VICE@ITEM'
- parser:
- function:
- parse-arg-value: false
- enable-remote-function: true
- enable-script-function: true
- request:
- print-request-string-log: false
- print-big-log: false
- print-request-endtime-log: false
- return-stack-trace: true
- start-from1: false
- verifier:
- enable-verify-column: true
- enable-apijson-router: false
- update-must-have-id-condition: true
- enable-verify-role: true
- enable-verify-content: true
-```
+
+参考[application-all.yaml](./apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/resources/application-all.yml)
+
## 支持的接口
-| 接口url | 方法 | 说明 |
-|----------------------|-----|-------------------------------------------------|
-| common/{method} | POST | 支持GET,HEAD,GETS,HEADS,POST,PUT,DELETE,CRUD等 |
+| 接口url | 方法 | 说明 |
+|-----------------------|------|--------------------------------------------------|
+| common/{method} | POST | 支持GET,HEAD,GETS,HEADS,POST,PUT,DELETE,CRUD等 |
| common/{method}/{tag} | POST | 增删改查统一接口,这个一个接口可替代 7 个万能通用接口,牺牲一些路由解析性能来提升一点开发效率 |
-| ext/reload | POST | 重新加载配置 |
-| ext/post/verify | POST | 生成验证码 |
-| ext/gets/verify | POST | 获取验证码 |
-| ext/heads/verify | POST | 校验验证码 |
-| ext/login | POST | 用户登录 |
-| ext/logout | POST | 退出登录,清空session |
-| ext/register | POST | 注册 |
-| ext/put/password | POST | 设置密码 |
+| ext/reload | POST | 重新加载配置 |
+| ext/post/verify | POST | 生成验证码 |
+| ext/gets/verify | POST | 获取验证码 |
+| ext/heads/verify | POST | 校验验证码 |
+| ext/login | POST | 用户登录 |
+| ext/logout | POST | 退出登录,清空session |
+| ext/register | POST | 注册 |
+| ext/put/password | POST | 设置密码 |
请求示例
@@ -97,6 +62,7 @@ curl --location --request POST 'http://localhost:8080/api-json/common/get' \
}'
```
-* 接口添加了统一的前缀,默认是`api-json`,配置属性`spring.apijson.rest-prefix`
+* 默认是开启的,可以关闭这些接口,配置属性 `spring.apijson.rest-api.enable=false`
+* 接口添加了统一的前缀,默认是`api-json`,配置属性`spring.apijson.rest-api.prefix=YOURE-PREFIX`
* 在`config/api`目录下有`apifox`及`postman`工具文件,导入json文件
diff --git a/apijson-spring-boot-autoconfigure/pom.xml b/apijson-spring-boot-autoconfigure/pom.xml
index 3f2d1952cbff67aa93ccae048c61aa1e201cc7d3..1c2ec46d3a2f01a7f6c35d0e4947c071d652c1ea 100644
--- a/apijson-spring-boot-autoconfigure/pom.xml
+++ b/apijson-spring-boot-autoconfigure/pom.xml
@@ -30,19 +30,23 @@
org.springframework
spring-webmvc
+ true
cn.hutool
hutool-core
+ true
jakarta.annotation
jakarta.annotation-api
+ true
jakarta.servlet
jakarta.servlet-api
+ true
diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/annotation/ApijsonRest.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/annotation/ApijsonRest.java
index 124cfce1c6fae651e28dc315d8315d25420d7837..d3be8b29da30a83f2f9176138f5ccaeb77a579b3 100644
--- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/annotation/ApijsonRest.java
+++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/annotation/ApijsonRest.java
@@ -3,6 +3,7 @@ package io.yunjiao.apijson.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
+import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@@ -11,7 +12,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME;
*
* @author yangyunjiao
*/
-@Target({TYPE})
+@Target({TYPE, METHOD})
@Retention(RUNTIME)
public @interface ApijsonRest {
}
diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonAutoConfiguration.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonAutoConfiguration.java
index 9b94458f6d6f40b7f225365fa941af2551e231bd..2f8d6d279fc41af6a1d04b8d66071b329d5c5c74 100644
--- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonAutoConfiguration.java
+++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonAutoConfiguration.java
@@ -72,7 +72,7 @@ public class ApijsonAutoConfiguration {
return new WebMvcConfigurer() {
@Override
public void configurePathMatch(@Nonnull PathMatchConfigurer configurer) {
- configurer.addPathPrefix(apijsonProperties.getRestPrefix(),
+ configurer.addPathPrefix(apijsonProperties.getRestApi().getPrefix(),
c -> c.isAnnotationPresent(ApijsonRest.class));
}
};
diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonProperties.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonProperties.java
index f2d7e0a1282e985fc784b6d7fc84bd7bbebb7cb1..03c323e8696e97f6b8936469c49d0f5bfd8263b8 100644
--- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonProperties.java
+++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonProperties.java
@@ -3,6 +3,7 @@ package io.yunjiao.apijson.spring.boot.autoconfigure;
import io.yunjiao.apijson.util.ApijsonConsts;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
/**
* APIJSON 配置属性
@@ -12,7 +13,8 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
@Data
@ConfigurationProperties(prefix = ApijsonConsts.PROPERTY_PREFIX_APIJSON)
public class ApijsonProperties {
- private String restPrefix = "api-json";
+ @NestedConfigurationProperty
+ private RestApi restApi = new RestApi();
/**
* 请求需要校验,默认true,开发时应该设置成false
@@ -79,7 +81,7 @@ public class ApijsonProperties {
database,
/**
- * uuid组件
+ * uuid字符串
*/
uuid,
@@ -98,4 +100,21 @@ public class ApijsonProperties {
*/
custom
}
+
+ /**
+ * APIJSON接口配置
+ */
+ @Data
+ public static class RestApi {
+ /**
+ * 开启接口,默认true
+ */
+ private boolean enable = true;
+
+ /**
+ * 接口前缀,默认api-json
+ */
+ private String prefix = "api-json";
+ }
+
}
diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonSqlProperties.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonSqlProperties.java
index 94af1b3fe0fee79e2534a493cb5c3a04464e5038..68608f401152e1386831fadd35fac3e1b97416af 100644
--- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonSqlProperties.java
+++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/ApijsonSqlProperties.java
@@ -38,7 +38,7 @@ public class ApijsonSqlProperties {
private boolean enableColumnConfig = false;
/**
- * 默认的类型, 默认MYSQL
+ * 默认的数据库类型, 默认MYSQL
*/
private String defaultDatabase = ApijsonConsts.SQL_CONFIG_DEFAULT_DATABASE;
diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfiguration.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfiguration.java
index 5eed9cce8fb779b0fcf893d5e3c21427489ebb82..c8028966ee1c02a4dc62e64a5bd642f454212a2e 100644
--- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfiguration.java
+++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfiguration.java
@@ -6,12 +6,14 @@ import io.yunjiao.apijson.fastjson2.*;
import io.yunjiao.apijson.orm.IdKeyStrategy;
import io.yunjiao.apijson.orm.NewIdStrategy;
import io.yunjiao.apijson.spring.boot.autoconfigure.condition.ApllicationCondition;
+import io.yunjiao.apijson.util.ApijsonConsts;
import io.yunjiao.apijson.util.ApijsonUtils;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
@@ -90,34 +92,6 @@ public class Fastjson2ApplicationAutoConfiguration {
return bean;
}
- /**
- * rest api 接口
- *
- * @return {@link Fastjson2RestController}实例
- */
- @Bean
- Fastjson2RestController fastjson2RestController() {
- Fastjson2RestController bean = new Fastjson2RestController(properties);
- if (log.isDebugEnabled()) {
- log.debug("Configure Bean [Fastjson2 Rest Controller]");
- }
- return bean;
- }
-
- /**
- * rest api 扩展接口
- *
- * @return {@link Fastjson2EXtRestController}实例
- */
- @Bean
- Fastjson2EXtRestController fastjson2ExtRestController() {
- Fastjson2EXtRestController bean = new Fastjson2EXtRestController();
- if (log.isDebugEnabled()) {
- log.debug("Configure Bean [Fastjson2 Rest Ext Controller]");
- }
- return bean;
- }
-
void forceInitClass() {
ApijsonUtils.forceInit(APIJSONApplication.class);
@@ -130,6 +104,47 @@ public class Fastjson2ApplicationAutoConfiguration {
ApijsonUtils.forceInit(APIJSONVerifier.class);
}
+ /**
+ * rest api 自动配置
+ */
+ @RequiredArgsConstructor
+ @AutoConfiguration
+ @ConditionalOnProperty(name = {ApijsonConsts.PROPERTY_PREFIX_APIJSON_RESTAPI_ENABLE},
+ havingValue = "true",
+ matchIfMissing = true)
+ static
+ class Fastjson2RestApiAutoConfiguration {
+ private final ApijsonProperties properties;
+
+ /**
+ * rest api 接口
+ *
+ * @return {@link Fastjson2RestController}实例
+ */
+ @Bean
+ Fastjson2RestController fastjson2RestController() {
+ Fastjson2RestController bean = new Fastjson2RestController(properties);
+ if (log.isDebugEnabled()) {
+ log.debug("Configure Bean [Fastjson2 Rest Controller]");
+ }
+ return bean;
+ }
+
+ /**
+ * rest api 扩展接口
+ *
+ * @return {@link Fastjson2EXtRestController}实例
+ */
+ @Bean
+ Fastjson2EXtRestController fastjson2ExtRestController() {
+ Fastjson2EXtRestController bean = new Fastjson2EXtRestController();
+ if (log.isDebugEnabled()) {
+ log.debug("Configure Bean [Fastjson2 Rest Ext Controller]");
+ }
+ return bean;
+ }
+ }
+
/**
* 初始化
*/
@@ -151,7 +166,7 @@ public class Fastjson2ApplicationAutoConfiguration {
Log.DEBUG = properties.isLogDebug();
APIJSONApplication.init(properties.isShutdownWhenServerError(), fastjson2Creator);
if (properties.isEnableOnStartup()) {
- Fastjson2Verifier.init(false, fastjson2Creator);
+ Fastjson2Verifier.init(properties.isShutdownWhenServerError(), fastjson2Creator);
}
}
}
diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfiguration.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfiguration.java
index 6945452a3ee8c101ee7f202e8b10ec99191569cb..364bf388c675cb25574e549a21a1a93b462420f3 100644
--- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfiguration.java
+++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/spring/boot/autoconfigure/GsonApplicationAutoConfiguration.java
@@ -5,12 +5,14 @@ import io.yunjiao.apijson.gson.*;
import io.yunjiao.apijson.orm.IdKeyStrategy;
import io.yunjiao.apijson.orm.NewIdStrategy;
import io.yunjiao.apijson.spring.boot.autoconfigure.condition.ApllicationCondition;
+import io.yunjiao.apijson.util.ApijsonConsts;
import io.yunjiao.apijson.util.ApijsonUtils;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
@@ -63,24 +65,6 @@ public class GsonApplicationAutoConfiguration {
return bean;
}
- @Bean
- GsonRestController gsonRestController() {
- GsonRestController bean = new GsonRestController(properties);
- if (log.isDebugEnabled()) {
- log.debug("Configure Bean [Gson Rest Controller]");
- }
- return bean;
- }
-
- @Bean
- GsonEXtRestController gsonEXtRestController() {
- GsonEXtRestController bean = new GsonEXtRestController();
- if (log.isDebugEnabled()) {
- log.debug("Configure Bean [Gson Ext Rest Controller]");
- }
- return bean;
- }
-
void forceInitClass() {
ApijsonUtils.forceInit(APIJSONApplication.class);
ApijsonUtils.forceInit(APIJSONController.class);
@@ -92,6 +76,37 @@ public class GsonApplicationAutoConfiguration {
ApijsonUtils.forceInit(APIJSONVerifier.class);
}
+ /**
+ * rest api 自动配置
+ */
+ @RequiredArgsConstructor
+ @AutoConfiguration
+ @ConditionalOnProperty(name = {ApijsonConsts.PROPERTY_PREFIX_APIJSON_RESTAPI_ENABLE},
+ havingValue = "true",
+ matchIfMissing = true)
+ static
+ class GsonRestApiAutoConfiguration {
+ private final ApijsonProperties properties;
+
+ @Bean
+ GsonRestController gsonRestController() {
+ GsonRestController bean = new GsonRestController(properties);
+ if (log.isDebugEnabled()) {
+ log.debug("Configure Bean [Gson Rest Controller]");
+ }
+ return bean;
+ }
+
+ @Bean
+ GsonEXtRestController gsonEXtRestController() {
+ GsonEXtRestController bean = new GsonEXtRestController();
+ if (log.isDebugEnabled()) {
+ log.debug("Configure Bean [Gson Ext Rest Controller]");
+ }
+ return bean;
+ }
+ }
+
/**
* 初始化
*/
diff --git a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/util/ApijsonConsts.java b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/util/ApijsonConsts.java
index dd8b59d1d6427b155687f38c900c51a5b29ece8e..5b6ccea21a56df5491b04da9f5e1f02250bdb8f1 100644
--- a/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/util/ApijsonConsts.java
+++ b/apijson-spring-boot-autoconfigure/src/main/java/io/yunjiao/apijson/util/ApijsonConsts.java
@@ -30,6 +30,16 @@ public final class ApijsonConsts {
*/
public static final String PROPERTY_PREFIX_APIJSON = PROPERTY_PREFIX_SPRING + ".apijson";
+ /**
+ * rest api 属性
+ */
+ public static final String PROPERTY_PREFIX_APIJSON_RESTAPI = PROPERTY_PREFIX_APIJSON + ".rest-api";
+
+ /**
+ * rest api 开启属性
+ */
+ public static final String PROPERTY_PREFIX_APIJSON_RESTAPI_ENABLE = PROPERTY_PREFIX_APIJSON_RESTAPI + PROPERTY_ENABLED;
+
/**
* sql 属性
*/
diff --git a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfigurationIT.java b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfigurationIT.java
index c62273643ec87e28b7805f41ae01ce0ce8174acc..e7bf7a3276c2d853ebe9f6dca602c0b1b70f2b77 100644
--- a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfigurationIT.java
+++ b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/Fastjson2ApplicationAutoConfigurationIT.java
@@ -1,7 +1,6 @@
package io.yunjiao.apijson.spring.boot.autoconfigure;
import io.yunjiao.apijson.fastjson2.Fastjson2Creator;
-import io.yunjiao.apijson.fastjson2.Fastjson2RestController;
import io.yunjiao.apijson.fastjson2.Fastjson2SimpleCallback;
import io.yunjiao.apijson.util.ApijsonConsts;
import org.junit.jupiter.api.BeforeEach;
@@ -27,7 +26,6 @@ public class Fastjson2ApplicationAutoConfigurationIT {
@Test
public void testNewIdSnowflakeStrategy() {
-
applicationContextRunner
.withPropertyValues(ApijsonConsts.PROPERTY_PREFIX_APIJSON_APPLICATION + "=" + ApijsonProperties.Application.fastjson2,
ApijsonConsts.PROPERTY_PREFIX_APIJSON_NEWIDSTRATEGY + "=" + ApijsonProperties.NewIdStrategy.timestamp,
@@ -39,7 +37,6 @@ public class Fastjson2ApplicationAutoConfigurationIT {
.run(context -> {
assertThat(context).hasSingleBean(Fastjson2Creator.class);
assertThat(context).hasSingleBean(Fastjson2SimpleCallback.class);
- assertThat(context).hasSingleBean(Fastjson2RestController.class);
});
}
diff --git a/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/RestApiAutoConfigurationTest.java b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/RestApiAutoConfigurationTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..55effbe2c7ef12a588442ba598d258b2141af8ad
--- /dev/null
+++ b/apijson-spring-boot-autoconfigure/src/test/java/io/yunjiao/apijson/spring/boot/autoconfigure/RestApiAutoConfigurationTest.java
@@ -0,0 +1,72 @@
+package io.yunjiao.apijson.spring.boot.autoconfigure;
+
+import io.yunjiao.apijson.fastjson2.Fastjson2EXtRestController;
+import io.yunjiao.apijson.fastjson2.Fastjson2RestController;
+import io.yunjiao.apijson.gson.GsonEXtRestController;
+import io.yunjiao.apijson.gson.GsonRestController;
+import io.yunjiao.apijson.util.ApijsonConsts;
+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 static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * rest api 接口单元测试用例
+ *
+ * @author yangyunjiao
+ */
+public class RestApiAutoConfigurationTest {
+ private ApplicationContextRunner applicationContextRunner;
+
+ @BeforeEach
+ public void setUp() {
+ applicationContextRunner = new ApplicationContextRunner()
+ .withConfiguration(AutoConfigurations.of(ApijsonAutoConfiguration.class));
+ }
+
+ @Test
+ public void fastjson2RestApiEnabled() {
+ applicationContextRunner
+ .withPropertyValues(ApijsonConsts.PROPERTY_PREFIX_APIJSON_RESTAPI_ENABLE + "=true")
+ .withUserConfiguration(Fastjson2ApplicationAutoConfiguration.Fastjson2RestApiAutoConfiguration.class)
+ .run(context -> {
+ assertThat(context).hasSingleBean(Fastjson2RestController.class);
+ assertThat(context).hasSingleBean(Fastjson2EXtRestController.class);
+ });
+ }
+
+ @Test
+ public void fastjson2RestApiDisabled() {
+ applicationContextRunner
+ .withPropertyValues(ApijsonConsts.PROPERTY_PREFIX_APIJSON_RESTAPI_ENABLE + "=false")
+ .withUserConfiguration(Fastjson2ApplicationAutoConfiguration.Fastjson2RestApiAutoConfiguration.class)
+ .run(context -> {
+ assertThat(context).doesNotHaveBean(Fastjson2RestController.class);
+ assertThat(context).doesNotHaveBean(Fastjson2EXtRestController.class);
+ });
+ }
+
+ @Test
+ public void GsonRestApiEnabled() {
+ applicationContextRunner
+ .withPropertyValues(ApijsonConsts.PROPERTY_PREFIX_APIJSON_RESTAPI_ENABLE + "=true")
+ .withUserConfiguration(GsonApplicationAutoConfiguration.GsonRestApiAutoConfiguration.class)
+ .run(context -> {
+ assertThat(context).hasSingleBean(GsonRestController.class);
+ assertThat(context).hasSingleBean(GsonEXtRestController.class);
+ });
+ }
+
+ @Test
+ public void GsonRestApiDisabled() {
+ applicationContextRunner
+ .withPropertyValues(ApijsonConsts.PROPERTY_PREFIX_APIJSON_RESTAPI_ENABLE + "=false")
+ .withUserConfiguration(GsonApplicationAutoConfiguration.GsonRestApiAutoConfiguration.class)
+ .run(context -> {
+ assertThat(context).doesNotHaveBean(GsonRestController.class);
+ assertThat(context).doesNotHaveBean(GsonEXtRestController.class);
+ });
+ }
+}
diff --git a/apijson-spring-boot-dependencies/pom.xml b/apijson-spring-boot-dependencies/pom.xml
index 213384bc3d6e5c760d3c449df62aa73ad1eb1748..74509748905ba60728389f9c08cfc9484d4a3726 100644
--- a/apijson-spring-boot-dependencies/pom.xml
+++ b/apijson-spring-boot-dependencies/pom.xml
@@ -24,6 +24,7 @@
7.2.2
1.0.0
1.0.2
+ 1.2.25
17
${java.version}
@@ -75,12 +76,17 @@
${apijson-gson.version}
+
+ com.alibaba
+ druid-spring-boot-starter
+ ${druid-spring-boot-starter.version}
+
+
io.gitee.yunjiao-source
apijson-spring-boot-autoconfigure
${revision}
-
io.gitee.yunjiao-source
apijson-spring-boot-starter
diff --git a/apijson-spring-boot-examples/README.md b/apijson-spring-boot-examples/README.md
index a650e6b8d1be71f6a8a7280e351661507bff06b1..c00ce7f2a653704df15a4dba646f2b43bd443239 100644
--- a/apijson-spring-boot-examples/README.md
+++ b/apijson-spring-boot-examples/README.md
@@ -2,6 +2,15 @@
示例项目
+## 项目列表
+
+| 项目 | 说明 |
+|----------------------------------------|-----------------------------|
+| apijson-spring-boot-example-common | 自动配置 |
+| apijson-spring-boot-example-gson | 项目依赖 |
+| apijson-spring-boot-example-seed | 示例项目 |
+| apijson-spring-boot-example-datasource | 支持数据源:jdbc, druid, HikariCP |
+
## apijson-spring-boot-example-seed
优先选择此项目测试,步骤如下:
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-common/pom.xml b/apijson-spring-boot-examples/apijson-spring-boot-example-common/pom.xml
index 67f313a9e8f41cc4ff475deca8f6c656fa2f2135..7fe6a70eb93286fc68c0133a91e1ff03f201996c 100644
--- a/apijson-spring-boot-examples/apijson-spring-boot-example-common/pom.xml
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-common/pom.xml
@@ -20,12 +20,5 @@
apijson-spring-boot-starter
${revision}
-
-
-
- org.springframework
- spring-jdbc
-
-
\ No newline at end of file
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleAutoConfiguration.java b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleAutoConfiguration.java
index 974bd493a8945eba69a1fcc210f601c7ad834026..6823850d35613295ae6cfc2e917318707dee8bf0 100644
--- a/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleAutoConfiguration.java
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/config/ExampleAutoConfiguration.java
@@ -6,12 +6,9 @@ import jakarta.annotation.PostConstruct;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import javax.sql.DataSource;
-
/**
* 通用配置
*
@@ -25,18 +22,6 @@ public class ExampleAutoConfiguration {
log.info("Example Auto Configuration");
}
- @Bean
- public DataSource dataSource() {
- log.debug("Configure Bean [DataSource]");
- DriverManagerDataSource dataSource = new DriverManagerDataSource();
- dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
- dataSource.setUrl("jdbc:mysql://localhost:3306/apijson_ut?userSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8"); // 内存模式
- dataSource.setUsername("root");
- dataSource.setPassword("root");
- return dataSource;
- }
-
-
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/fastjson2/CustomFastjson2Creator.java b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/fastjson2/CustomFastjson2Creator.java
similarity index 100%
rename from apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/fastjson2/CustomFastjson2Creator.java
rename to apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/fastjson2/CustomFastjson2Creator.java
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/fastjson2/CustomFastjson2FunctionParser.java b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/fastjson2/CustomFastjson2FunctionParser.java
similarity index 100%
rename from apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/fastjson2/CustomFastjson2FunctionParser.java
rename to apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/fastjson2/CustomFastjson2FunctionParser.java
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/gson/CustomGsonCreator.java b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/gson/CustomGsonCreator.java
similarity index 100%
rename from apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/gson/CustomGsonCreator.java
rename to apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/gson/CustomGsonCreator.java
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/gson/CustomGsonFunctionParser.java b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/gson/CustomGsonFunctionParser.java
similarity index 100%
rename from apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/gson/CustomGsonFunctionParser.java
rename to apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/java/io/yunjiao/apijson/example/gson/CustomGsonFunctionParser.java
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/resources/application-all.yml b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/resources/application-all.yml
index 61b85db884e3fcb910d8ffa1b80b962679e6623c..8f615ba919552fc3f1f101770d1c1f90589ed04a 100644
--- a/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/resources/application-all.yml
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-common/src/main/resources/application-all.yml
@@ -1,40 +1,42 @@
spring:
apijson:
- rest-prefix: api-json
- application: fastjson2
- new-id-strategy: timestamp
- need-verify-login: true
- need-verify-role: true
- need-verify-content: true
- enable-on-startup: false
- shutdown-when-server-error: true
- log-debug: false
+ rest-api:
+ enable: true # 是否初始化Rest接口,默认true。框架已提供APIJSON统一接口实现
+ prefix: api-json # Rest接口前缀,默认api-json。访问接口如:http://localhost:8080/api-json/common/get
+ application: fastjson2 # 集成apijson-fastjson2包
+ new-id-strategy: timestamp # 主键生成策略,默认timestamp。支持:database(数据库自增),uuid(uuid字符串), timestamp(当前时间毫秒数),snowflake(雪花算法),custom(用户自定义)
+ need-verify-login: true # 每次访问Rest接口时是否需要校验登录
+ need-verify-role: true # 每次访问Rest接口时是否需要校验角色权限
+ need-verify-content: true # 每次访问Rest接口时开启校验请求传参内容
+ enable-on-startup: false # 在启动时初始化,如:APIJSONVerifier(校验器)初始化
+ shutdown-when-server-error: true # 启动遇到异常时停止
+ log-debug: false # 日志
sql:
config:
- enable-column-config: false
- default-database: MYSQL
- default-schema: sys
+ enable-column-config: false # 支持 !key 反选字段 和 字段名映射, 默认false
+ default-database: MYSQL # 默认的数据库类型, 默认MYSQL。支持多种数据库,请参考SQLConfig类定义,注意名称全大写
+ default-schema: sys # 默认数据库名/模式,默认sys。 设置含有APIJSON系统表的数据库
default-catalog:
default-namespace:
- version: 5.7.22
+ version: 5.7.22 # 数据库版本, 默认'5.7.22'
executor:
- enable-output-null-column: false
+ enable-output-null-column: false # 是否返回 值为null的字段, 默认false
key-raw-list: '@RAW@LIST'
key-vice-item: '@VICE@ITEM'
parser:
function:
- parse-arg-value: false
- enable-remote-function: true
- enable-script-function: true
+ parse-arg-value: false # 是否解析参数 key 的对应的值
+ enable-remote-function: true # 开启支持远程函数
+ enable-script-function: true # 开启支持远程函数中的 JavaScript 脚本形式
request:
- print-request-string-log: false
- print-big-log: false
- print-request-endtime-log: false
- return-stack-trace: true
- start-from1: false
+ print-request-string-log: false # 是否打印关键的接口请求内容
+ print-big-log: false # 打印大数据量日志的标识
+ print-request-endtime-log: false # 是否打印关键的接口请求结束时间
+ return-stack-trace: true # 控制返回 trace:stack 字段
+ start-from1: false # 分页页码是否从 1 开始,默认为从 0 开始
verifier:
enable-verify-column: true
enable-apijson-router: false
- update-must-have-id-condition: true
- enable-verify-role: true
- enable-verify-content: true
+ update-must-have-id-condition: true # 为 PUT, DELETE 强制要求必须有 id/id{}/id{}@ 条件
+ enable-verify-role: true # 开启校验请求角色权限
+ enable-verify-content: true # 开启校验请求传参内容
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/README.md b/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..7bbd4b377696ec35c2e486f12f9c205958767184
--- /dev/null
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/README.md
@@ -0,0 +1,103 @@
+# apijson-spring-boot-datasource
+
+数据源示例项目,
+
+## 使用 DriverManagerDataSource
+
+标准 JDBC 数据源的一个简单实现类,它用于开发简单的应用和程序测试,并且不支持连接池,每次连接数据库都是创建新的连接对象。
+
+* 注意:生产环境中,建议不要使用这个方式
+
+在`pom`文件中添加依赖
+
+```xml
+
+ org.springframework
+ spring-jdbc
+
+```
+
+在自动配置类中添加
+
+```java
+ @Bean
+ public DataSource DriverManagerDataSource() {
+ log.debug("Configure Bean [Driver Manager DataSource]");
+ DriverManagerDataSource dataSource = new DriverManagerDataSource();
+ dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
+ dataSource.setUrl("jdbc:mysql://localhost:3306/apijson_ut?userSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8"); // 内存模式
+ dataSource.setUsername("root");
+ dataSource.setPassword("root");
+ return dataSource;
+ }
+```
+
+启动应用服务,控制台如下提示说明配置成功
+
+```text
+Configure Bean [Driver Manager DataSource]
+```
+
+## 使用 hikari
+
+在`pom`文件中添加依赖
+
+```xml
+
+ org.springframework.boot
+ spring-boot-starter-data-jdbc
+
+```
+
+在`application.yml`中添加配置
+
+```yaml
+spring:
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/apijson_ut?userSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8
+ username: root
+ password: root
+```
+启动应用服务,控制台如下提示说明配置成功
+
+```text
+INFO 22560 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
+```
+
+## 使用 druid
+
+在`pom`文件中添加依赖
+
+```xml
+
+ com.alibaba
+ druid-spring-boot-starter
+
+
+
+ org.springframework
+ spring-jdbc
+
+
+```
+
+在`application.yml`中添加配置
+
+```yaml
+spring:
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/apijson_ut?userSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8
+ username: root
+ password: root
+ type: com.alibaba.druid.pool.DruidDataSource
+```
+启动应用服务,控制台如下提示说明配置成功
+
+```text
+INFO 19108 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
+```
+
+
+
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/pom.xml b/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7409b21aa50804b7e7b48f53dc7a7646c9911794
--- /dev/null
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/pom.xml
@@ -0,0 +1,68 @@
+
+
+
+ io.gitee.yunjiao-source
+ apijson-spring-boot-examples
+ ${revision}
+
+ 4.0.0
+
+ apijson-spring-boot-example-datasource
+ jar
+ APIJSON Spring Boot :: Examples :: DataSource
+ 支持数据源:jdbc, druid, Hikari
+
+
+
+ io.gitee.yunjiao-source
+ apijson-spring-boot-example-common
+ ${revision}
+
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jdbc
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring-boot.version}
+
+
+
+ repackage
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/ApijsonExampleGsonApplication.java b/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/src/main/java/io/yunjiao/apijson/example/ExampleDataSourceApplication.java
similarity index 70%
rename from apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/ApijsonExampleGsonApplication.java
rename to apijson-spring-boot-examples/apijson-spring-boot-example-datasource/src/main/java/io/yunjiao/apijson/example/ExampleDataSourceApplication.java
index bf7d00d897816096e4c2d2ad15475bf9845f9103..e23e8d96ee6d8d78a928d671046a7daefb6ba1e3 100644
--- a/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/ApijsonExampleGsonApplication.java
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/src/main/java/io/yunjiao/apijson/example/ExampleDataSourceApplication.java
@@ -9,8 +9,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
* @author yangyunjiao
*/
@SpringBootApplication
-public class ApijsonExampleGsonApplication {
+public class ExampleDataSourceApplication {
public static void main(String[] args) {
- SpringApplication.run(ApijsonExampleGsonApplication.class, args);
+ SpringApplication.run(ExampleDataSourceApplication.class, args);
}
}
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/src/main/java/io/yunjiao/apijson/example/ExampleDataSourceAutoConfiguration.java b/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/src/main/java/io/yunjiao/apijson/example/ExampleDataSourceAutoConfiguration.java
new file mode 100644
index 0000000000000000000000000000000000000000..289a87c5c61af143e9462f54e3e1d31cf8486d97
--- /dev/null
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/src/main/java/io/yunjiao/apijson/example/ExampleDataSourceAutoConfiguration.java
@@ -0,0 +1,48 @@
+package io.yunjiao.apijson.example;
+
+import io.yunjiao.apijson.example.fastjson2.CustomFastjson2Creator;
+import io.yunjiao.apijson.fastjson2.Fastjson2Creator;
+import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonSqlProperties;
+import io.yunjiao.apijson.spring.boot.autoconfigure.condition.ApllicationCondition;
+import jakarta.annotation.PostConstruct;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+
+import javax.sql.DataSource;
+
+/**
+ * 通用配置
+ *
+ * @author yangyunjiao
+ */
+@Slf4j
+@Conditional(ApllicationCondition.OnFastjson2.class)
+@Configuration
+public class ExampleDataSourceAutoConfiguration {
+ @PostConstruct
+ public void postConstruct() {
+ log.info("Example DataSource Auto Configuration");
+ }
+
+// @Bean
+// public DataSource DriverManagerDataSource() {
+// log.debug("Configure Bean [Driver Manager DataSource]");
+// DriverManagerDataSource dataSource = new DriverManagerDataSource();
+// dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
+// dataSource.setUrl("jdbc:mysql://localhost:3306/apijson_ut?userSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8"); // 内存模式
+// dataSource.setUsername("root");
+// dataSource.setPassword("root");
+// return dataSource;
+// }
+
+ @Bean
+ public Fastjson2Creator customFastjson2Creator(DataSource dataSource,
+ ApijsonSqlProperties sqlProperties) {
+ log.debug("Configure Bean [Custom Fastjson2 Creator]");
+ return new CustomFastjson2Creator(dataSource, sqlProperties);
+ }
+
+
+}
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/src/main/resources/application.yml b/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/src/main/resources/application.yml
new file mode 100644
index 0000000000000000000000000000000000000000..61f41883c9a676cecf27b5493c6843a62a556663
--- /dev/null
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-datasource/src/main/resources/application.yml
@@ -0,0 +1,28 @@
+spring:
+ apijson:
+ application: fastjson2
+ new-id-strategy: timestamp
+ need-verify-login: false
+ need-verify-role: false
+ log-debug: true
+ sql:
+ config:
+ default-database: MYSQL
+ default-schema: apijson
+ version: 8.0.11
+
+
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/apijson?userSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8
+ username: root
+ password: root
+# type: com.alibaba.druid.pool.DruidDataSource
+
+
+logging:
+ level:
+ root: info
+ org.springframework: info
+ io.yunjiao: debug
+
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-gson/pom.xml b/apijson-spring-boot-examples/apijson-spring-boot-example-gson/pom.xml
index e8d3fde64cb95c38b9e3ae009c007b86d8da677b..df56ba039e6eeb50c32169454e21d4e866d3af25 100644
--- a/apijson-spring-boot-examples/apijson-spring-boot-example-gson/pom.xml
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-gson/pom.xml
@@ -22,8 +22,8 @@
- com.github.APIJSON
- apijson-gson
+ org.springframework
+ spring-jdbc
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/ApijsonExampleSeedApplication.java b/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/ExampleGsonApplication.java
similarity index 70%
rename from apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/ApijsonExampleSeedApplication.java
rename to apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/ExampleGsonApplication.java
index 6d84adfb7933549a5d49f5acbb4f27a748af3eb1..41dc9168b687095c2015257fb0edade75a09323a 100644
--- a/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/ApijsonExampleSeedApplication.java
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/ExampleGsonApplication.java
@@ -9,8 +9,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
* @author yangyunjiao
*/
@SpringBootApplication
-public class ApijsonExampleSeedApplication {
+public class ExampleGsonApplication {
public static void main(String[] args) {
- SpringApplication.run(ApijsonExampleSeedApplication.class, args);
+ SpringApplication.run(ExampleGsonApplication.class, args);
}
}
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/gson/ExampleGsonAutoConfiguration.java b/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/ExampleGsonAutoConfiguration.java
similarity index 49%
rename from apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/gson/ExampleGsonAutoConfiguration.java
rename to apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/ExampleGsonAutoConfiguration.java
index 191e8aeebea7ab5c32bbc6b3367aa0115ead9f96..978d317b3831c4068dc4c1380dac613eab3e74a8 100644
--- a/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/gson/ExampleGsonAutoConfiguration.java
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/java/io/yunjiao/apijson/example/ExampleGsonAutoConfiguration.java
@@ -1,5 +1,7 @@
-package io.yunjiao.apijson.example.gson;
+package io.yunjiao.apijson.example;
+import io.yunjiao.apijson.example.gson.CustomGsonCreator;
+import io.yunjiao.apijson.gson.GsonCreator;
import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonSqlProperties;
import io.yunjiao.apijson.spring.boot.autoconfigure.condition.ApllicationCondition;
import jakarta.annotation.PostConstruct;
@@ -7,6 +9,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
@@ -25,8 +28,19 @@ public class ExampleGsonAutoConfiguration {
}
@Bean
- public CustomGsonCreator customGsonCreator(DataSource dataSource,
- ApijsonSqlProperties sqlProperties) {
+ public DataSource DriverManagerDataSource() {
+ log.debug("Configure Bean [Driver Manager DataSource]");
+ DriverManagerDataSource dataSource = new DriverManagerDataSource();
+ dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
+ dataSource.setUrl("jdbc:mysql://localhost:3306/apijson?userSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8"); // 内存模式
+ dataSource.setUsername("root");
+ dataSource.setPassword("root");
+ return dataSource;
+ }
+
+ @Bean
+ public GsonCreator customGsonCreator(DataSource dataSource,
+ ApijsonSqlProperties sqlProperties) {
log.debug("Configure Bean [Custom Gson Creator]");
return new CustomGsonCreator(dataSource, sqlProperties);
}
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/resources/application.yml b/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/resources/application.yml
index 0758f849c2d317c335995d42ad8416822bd704e6..47f1fa76541944a8066b71f2ba6661fda5831877 100644
--- a/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/resources/application.yml
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-gson/src/main/resources/application.yml
@@ -12,8 +12,6 @@ spring:
default-schema: apijson
version: 8.0.11
-
-
logging:
level:
root: info
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-seed/pom.xml b/apijson-spring-boot-examples/apijson-spring-boot-example-seed/pom.xml
index 4a2c115e8816a278cd5377ad716f870584006ba2..dbdeb542a42394c709bf0f9fd506acde81b77aca 100644
--- a/apijson-spring-boot-examples/apijson-spring-boot-example-seed/pom.xml
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-seed/pom.xml
@@ -22,8 +22,8 @@
- com.github.APIJSON
- apijson-fastjson2
+ org.springframework.boot
+ spring-boot-starter-data-jdbc
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/ExampleSeedApplication.java b/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/ExampleSeedApplication.java
new file mode 100644
index 0000000000000000000000000000000000000000..4e47de5607d0e09b60b67701413e03bdaf5084a5
--- /dev/null
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/ExampleSeedApplication.java
@@ -0,0 +1,16 @@
+package io.yunjiao.apijson.example;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+/**
+ * 程序入口
+ *
+ * @author yangyunjiao
+ */
+@SpringBootApplication
+public class ExampleSeedApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(ExampleSeedApplication.class, args);
+ }
+}
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/fastjson2/ExampleFastjson2AutoConfiguration.java b/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/ExampleSeedAutoConfiguration.java
similarity index 69%
rename from apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/fastjson2/ExampleFastjson2AutoConfiguration.java
rename to apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/ExampleSeedAutoConfiguration.java
index 1e85138361585ce0d438cdd9e038836523470ab7..5ededb9a02be0c8f0872665137159d664f726c73 100644
--- a/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/fastjson2/ExampleFastjson2AutoConfiguration.java
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/java/io/yunjiao/apijson/example/ExampleSeedAutoConfiguration.java
@@ -1,5 +1,7 @@
-package io.yunjiao.apijson.example.fastjson2;
+package io.yunjiao.apijson.example;
+import io.yunjiao.apijson.example.fastjson2.CustomFastjson2Creator;
+import io.yunjiao.apijson.fastjson2.Fastjson2Creator;
import io.yunjiao.apijson.spring.boot.autoconfigure.ApijsonSqlProperties;
import io.yunjiao.apijson.spring.boot.autoconfigure.condition.ApllicationCondition;
import jakarta.annotation.PostConstruct;
@@ -18,15 +20,15 @@ import javax.sql.DataSource;
@Slf4j
@Conditional(ApllicationCondition.OnFastjson2.class)
@Configuration
-public class ExampleFastjson2AutoConfiguration {
+public class ExampleSeedAutoConfiguration {
@PostConstruct
public void postConstruct() {
log.info("Example Fastjson2 Auto Configuration");
}
@Bean
- public CustomFastjson2Creator customFastjson2Creator(DataSource dataSource,
- ApijsonSqlProperties sqlProperties) {
+ public Fastjson2Creator customFastjson2Creator(DataSource dataSource,
+ ApijsonSqlProperties sqlProperties) {
log.debug("Configure Bean [Custom Fastjson2 Creator]");
return new CustomFastjson2Creator(dataSource, sqlProperties);
}
diff --git a/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/resources/application.yml b/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/resources/application.yml
index ff2bf5976a9f8f8553714a0f6158983f7ff5c04e..c9e88164d95efa96f7b41db035529a455415df1e 100644
--- a/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/resources/application.yml
+++ b/apijson-spring-boot-examples/apijson-spring-boot-example-seed/src/main/resources/application.yml
@@ -11,6 +11,11 @@ spring:
default-schema: apijson
version: 8.0.11
+ datasource:
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/apijson_ut?userSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8
+ username: root
+ password: root
logging:
level:
diff --git a/apijson-spring-boot-examples/pom.xml b/apijson-spring-boot-examples/pom.xml
index 7b744bbcc9b2ff383045e4db3e4648c2ad0283aa..63c52b5826a6109e98c30cba78043f919ef2a765 100644
--- a/apijson-spring-boot-examples/pom.xml
+++ b/apijson-spring-boot-examples/pom.xml
@@ -19,6 +19,7 @@
apijson-spring-boot-example-common
apijson-spring-boot-example-seed
apijson-spring-boot-example-gson
+ apijson-spring-boot-example-datasource
diff --git a/apijson-spring-boot-starter/pom.xml b/apijson-spring-boot-starter/pom.xml
index c37df548f686766ee9ba852d84541a0ad2c6944d..d73eef6ff43ecd4a149eb21cf42c990e1aba136d 100644
--- a/apijson-spring-boot-starter/pom.xml
+++ b/apijson-spring-boot-starter/pom.xml
@@ -31,5 +31,35 @@
com.github.APIJSON
apijson-framework
+
+
+ jakarta.annotation
+ jakarta.annotation-api
+
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+
+
+
+ cn.hutool
+ hutool-core
+
+
+
+ org.springframework
+ spring-webmvc
+
+
+
+ com.github.APIJSON
+ apijson-fastjson2
+
+
+
+ com.github.APIJSON
+ apijson-gson
+
\ No newline at end of file