renderFile(String fileName, byte[] fileBytes) {
return renderFile(fileName, new ByteArrayInputStream(fileBytes));
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/base/controller/GlobalErrorView.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/base/controller/GlobalErrorView.java
index f03b003bdd8b1589ba9e235685d4c2e02f319d7f..e5b5e82ca328245ca6225de10eb6156c1ad2171c 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/base/controller/GlobalErrorView.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/base/controller/GlobalErrorView.java
@@ -28,7 +28,7 @@ import java.util.Map;
* 错误页面的默认跳转(例如请求404的时候,默认走这个视图解析器)
*
* @author fengshuonan
- * @date 2017-05-21 11:34
+ * @since 2017-05-21 11:34
*/
public class GlobalErrorView implements View {
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/base/warpper/BaseControllerWrapper.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/base/warpper/BaseControllerWrapper.java
index 828bd16e99b10070e55d3ba147652ad6bd7c480c..da86877544d9952703467cbf13939238f96730c6 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/base/warpper/BaseControllerWrapper.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/base/warpper/BaseControllerWrapper.java
@@ -15,7 +15,7 @@
*/
package cn.stylefeng.roses.core.base.warpper;
-import cn.stylefeng.roses.kernel.model.page.PageResult;
+import cn.stylefeng.roses.core.page.PageResult;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
@@ -25,7 +25,7 @@ import java.util.Map;
* 控制器查询结果的包装类基类
*
* @author fengshuonan
- * @date 2017年2月13日 下午10:49:36
+ * @since 2017年2月13日 下午10:49:36
*/
public abstract class BaseControllerWrapper {
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/AopAutoConfiguration.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/AopAutoConfiguration.java
index c34daa6e733266fba05fd3049b9a29e69a4ca8d7..08160f43aceeee87c962cb24b2e40e4b3523e140 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/AopAutoConfiguration.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/AopAutoConfiguration.java
@@ -16,6 +16,9 @@
package cn.stylefeng.roses.core.config;
import cn.stylefeng.roses.core.exception.DefaultExceptionHandler;
+import cn.stylefeng.roses.core.exception.DevelopExceptionHandler;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@@ -24,7 +27,7 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy;
* 保留类,如果控制器需要些aop在这里写
*
* @author fengshuonan
- * @date 2016年11月12日 下午4:48:10
+ * @since 2016年11月12日 下午4:48:10
*/
@Configuration
@EnableAspectJAutoProxy(proxyTargetClass = true)
@@ -34,8 +37,27 @@ public class AopAutoConfiguration {
* 默认的异常拦截器
*/
@Bean
- public DefaultExceptionHandler defaultControllerExceptionHandler() {
+ @ConditionalOnProperty(value = "spring.profiles.active", havingValue = "produce")
+ public DefaultExceptionHandler produceExceptionHandler() {
return new DefaultExceptionHandler();
}
+ @Bean
+ @ConditionalOnProperty(value = "spring.profiles.active", havingValue = "test")
+ public DevelopExceptionHandler testExceptionHandler() {
+ return new DevelopExceptionHandler();
+ }
+
+ @Bean
+ @ConditionalOnProperty(value = "spring.profiles.active", havingValue = "dev")
+ public DevelopExceptionHandler devExceptionHandler() {
+ return new DevelopExceptionHandler();
+ }
+
+ @Bean
+ @ConditionalOnProperty(value = "spring.profiles.active", havingValue = "local")
+ public DevelopExceptionHandler localExceptionHandler() {
+ return new DevelopExceptionHandler();
+ }
+
}
\ No newline at end of file
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/DbInitializerAutoConfiguration.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/DbInitializerAutoConfiguration.java
index b65c17b443bc19be8a6885d0980aa713207f66eb..84aeb9313007e544e6f68a93b9070932f39ee263 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/DbInitializerAutoConfiguration.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/DbInitializerAutoConfiguration.java
@@ -23,7 +23,7 @@ import org.springframework.context.annotation.Configuration;
* 数据库初始化默认配置
*
* @author fengshuonan
- * @Date 2018/7/30 下午12:22
+ * @since 2018/7/30 下午12:22
*/
@Configuration
public class DbInitializerAutoConfiguration {
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/FastjsonAutoConfiguration.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/FastjsonAutoConfiguration.java
index b00f2de8b0e2af1976012d693092771c27a70fe8..d66e0e6d92757eb4759d33c005c7e7ef56355647 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/FastjsonAutoConfiguration.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/FastjsonAutoConfiguration.java
@@ -35,7 +35,7 @@ import java.util.List;
* fastjson配置类
*
* @author fengshuonan
- * @date 2017-05-23 22:56
+ * @since 2017-05-23 22:56
*/
@Configuration("defaultFastjsonConfig")
@ConditionalOnClass(com.alibaba.fastjson.JSON.class)
@@ -61,11 +61,14 @@ public class FastjsonAutoConfiguration {
SerializerFeature.PrettyFormat,
SerializerFeature.WriteMapNullValue,
SerializerFeature.DisableCircularReferenceDetect,
- SerializerFeature.BrowserCompatible
+ SerializerFeature.WriteNullListAsEmpty,
+ SerializerFeature.WriteNullNumberAsZero,
+ SerializerFeature.WriteNullBooleanAsFalse,
+ SerializerFeature.WriteNullStringAsEmpty
+// SerializerFeature.BrowserCompatible
);
fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
fastJsonConfig.setCharset(Charset.forName("utf-8"));
- initOtherValueFilters(fastJsonConfig);
return fastJsonConfig;
}
@@ -99,23 +102,4 @@ public class FastjsonAutoConfiguration {
return mediaTypes;
}
- /**
- * 初始化value过滤器
- *
- * 默认的valueFilter是把空的字段转化为空串
- */
- protected void initOtherValueFilters(FastJsonConfig fastJsonConfig) {
-
- //为空的值转化为空串
- ValueFilter nullValueFilter = (object, name, value) -> {
- if (null == value) {
- return "";
- } else {
- return value;
- }
- };
-
- fastJsonConfig.setSerializeFilters(nullValueFilter);
- }
-
}
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/MybatisDataSourceAutoConfiguration.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/MybatisDataSourceAutoConfiguration.java
index cdb8b5d5df0b4ce2385d55fab4906c8e4d2c11d0..579a761082ab38e7dc57286ce15b22bcc98da4d6 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/MybatisDataSourceAutoConfiguration.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/MybatisDataSourceAutoConfiguration.java
@@ -17,6 +17,7 @@ package cn.stylefeng.roses.core.config;
import cn.stylefeng.roses.core.config.properties.DruidProperties;
import com.alibaba.druid.pool.DruidDataSource;
+import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
@@ -26,9 +27,10 @@ import org.springframework.context.annotation.Configuration;
* MybatisPlus配置
*
* @author stylefeng
- * @Date 2017/5/20 21:58
+ * @since 2017/5/20 21:58
*/
@Configuration
+@MapperScan(basePackages = {"**.modular.mapper"})
@ConditionalOnProperty(prefix = "spring.datasource", name = "url")
public class MybatisDataSourceAutoConfiguration {
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/MybatisPluginAutoConfiguration.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/MybatisPluginAutoConfiguration.java
index 9c7e5e5ecadfa4521046b8e8e17534c4afaf3da8..1c902dd6e4a29e8cf48110108d408be6634fcb60 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/MybatisPluginAutoConfiguration.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/MybatisPluginAutoConfiguration.java
@@ -30,7 +30,7 @@ import org.springframework.context.annotation.Configuration;
* MybatisPlus配置
*
* @author stylefeng
- * @Date 2017/5/20 21:58
+ * @since 2017/5/20 21:58
*/
@Configuration
@ConditionalOnProperty(prefix = "spring.datasource", name = "url")
@@ -69,6 +69,14 @@ public class MybatisPluginAutoConfiguration {
return new OptimisticLockerInterceptor();
}
+// /**
+// * 逻辑删除mybatis插件
+// */
+// @Bean
+// public ISqlInjector sqlInjector() {
+// return new LogicSqlInjector();
+// }
+
/**
* 数据库id选择器
*/
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/PropertiesAutoConfiguration.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/PropertiesAutoConfiguration.java
index 036c2993a180df219e86da44d2dceffbea7856e0..45a5e6747af29168701d93bcb4c7cb507b263357 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/PropertiesAutoConfiguration.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/PropertiesAutoConfiguration.java
@@ -25,7 +25,7 @@ import org.springframework.context.annotation.PropertySource;
* 默认的配置
*
* @author fengshuonan
- * @date 2018-01-07 12:33
+ * @since 2018-01-07 12:33
*/
@Configuration
@PropertySource("classpath:/default-config.properties")
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/RedisAutoConfiguration.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/RedisAutoConfiguration.java
index c72e127a4c814d9161440be3b46ab91bca14b63b..f2bbaa99d630507feba0625536cf02ecfa5b44e5 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/RedisAutoConfiguration.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/RedisAutoConfiguration.java
@@ -28,7 +28,7 @@ import org.springframework.data.redis.serializer.StringRedisSerializer;
* redis配置
*
* @author fengshuonan
- * @date 2017-05-20 23:11
+ * @since 2017-05-20 23:11
*/
@Configuration
@ConditionalOnClass(RedisTemplate.class)
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/UtilAutoConfiguration.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/UtilAutoConfiguration.java
index b7e9756f2b9ea4955448ce4698792e596a06fba8..86f7c482d0df37912bbbff0be8acacea45715345 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/UtilAutoConfiguration.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/UtilAutoConfiguration.java
@@ -23,7 +23,7 @@ import org.springframework.context.annotation.Configuration;
* 默认的工具类
*
* @author fengshuonan
- * @date 2018-01-07 12:33
+ * @since 2018-01-07 12:33
*/
@Configuration
public class UtilAutoConfiguration {
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/WebAutoConfiguration.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/WebAutoConfiguration.java
index 063a553cca81a7f4afd95a5cbe57defb16d5fbad..60f003282386e82df275f8259da522d0ea173d34 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/WebAutoConfiguration.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/WebAutoConfiguration.java
@@ -39,7 +39,7 @@ import java.util.Date;
* 默认web配置
*
* @author fengshuonan
- * @Date 2018/7/24 下午3:27
+ * @since 2018/7/24 下午3:27
*/
@Configuration
@ConditionalOnBean(ServletContext.class)
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/cache/FastJson2JsonRedisSerializer.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/cache/FastJson2JsonRedisSerializer.java
index 6c60fda8c80ed39a0e9a7a5dba0f8e5896510bd3..28907d65d0119d8a4f9123888499299dbe38f0cc 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/cache/FastJson2JsonRedisSerializer.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/cache/FastJson2JsonRedisSerializer.java
@@ -26,7 +26,7 @@ import java.nio.charset.Charset;
* fastjson redis序列化器
*
* @author fengshuonan
- * @Date 2017/11/7 上午9:20
+ * @since 2017/11/7 上午9:20
*/
public class FastJson2JsonRedisSerializer implements RedisSerializer {
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/properties/AppNameProperties.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/properties/AppNameProperties.java
index 071ce536c3382d060de8a7340d95f109b4f8a2a3..bc6c1b4bc0b845e5829f6fd2f6347506c937eb81 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/properties/AppNameProperties.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/properties/AppNameProperties.java
@@ -21,7 +21,7 @@ import lombok.Data;
* 应用名称属性spring.application.name
*
* @author fengshuonan
- * @Date 2018/5/8 下午2:24
+ * @since 2018/5/8 下午2:24
*/
@Data
public class AppNameProperties {
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/properties/DruidProperties.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/properties/DruidProperties.java
index 45708aada26cdc6277d3a31155c03e913ad6bdad..874168f75047cf6884efe2a9178c22c0780f21b9 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/properties/DruidProperties.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/properties/DruidProperties.java
@@ -26,7 +26,7 @@ import java.util.Properties;
* 说明:类中属性包含默认值的不要在这里修改,应该在"application.yml"中配置
*
* @author fengshuonan
- * @date 2017-05-21 11:18
+ * @since 2017-05-21 11:18
*/
@Data
public class DruidProperties {
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/redisson/RedissonAutoConfiguration.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/redisson/RedissonAutoConfiguration.java
new file mode 100644
index 0000000000000000000000000000000000000000..dc1d72e6f1be2505d224be4dee4aeab1ae30cd1c
--- /dev/null
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/redisson/RedissonAutoConfiguration.java
@@ -0,0 +1,89 @@
+package cn.stylefeng.roses.core.config.redisson;
+
+import cn.stylefeng.roses.core.util.redisson.DistributedLocker;
+import cn.stylefeng.roses.core.util.redisson.RedissLockUtil;
+import cn.stylefeng.roses.core.util.redisson.RedissonDistributedLocker;
+import org.redisson.Redisson;
+import org.redisson.api.RedissonClient;
+import org.redisson.config.Config;
+import org.redisson.config.SentinelServersConfig;
+import org.redisson.config.SingleServerConfig;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+
+/**
+ * Redisson+springboot 自动配置类
+ */
+@Configuration
+@ConditionalOnClass(Config.class)
+@EnableConfigurationProperties(RedissonProperties.class)
+@ConditionalOnProperty(value = "redisson.enabled", havingValue = "true")
+public class RedissonAutoConfiguration {
+
+ @Autowired
+ private RedissonProperties redssionProperties;
+
+ /**
+ * 哨兵模式自动装配
+ *
+ * @return
+ */
+ @Bean
+ @ConditionalOnProperty(name = "redisson.master-name")
+ RedissonClient redissonSentinel() {
+ Config config = new Config();
+ SentinelServersConfig serverConfig = config.useSentinelServers().addSentinelAddress(redssionProperties.getSentinelAddresses())
+ .setMasterName(redssionProperties.getMasterName())
+ .setTimeout(redssionProperties.getTimeout())
+ .setMasterConnectionPoolSize(redssionProperties.getMasterConnectionPoolSize())
+ .setSlaveConnectionPoolSize(redssionProperties.getSlaveConnectionPoolSize());
+
+ if (redssionProperties.getPassword() != null && !"".equals(redssionProperties.getPassword())) {
+ serverConfig.setPassword(redssionProperties.getPassword());
+ }
+ return Redisson.create(config);
+ }
+
+ /**
+ * 单机模式自动装配
+ *
+ * @return
+ */
+ @Bean
+ @ConditionalOnProperty(name = "redisson.address")
+ RedissonClient redissonSingle() {
+ Config config = new Config();
+ SingleServerConfig serverConfig = config.useSingleServer()
+ .setAddress(redssionProperties.getAddress())
+ .setTimeout(redssionProperties.getTimeout())
+ .setConnectionPoolSize(redssionProperties.getConnectionPoolSize())
+ .setConnectionMinimumIdleSize(redssionProperties.getConnectionMinimumIdleSize());
+
+ if (redssionProperties.getPassword() != null && !"".equals(redssionProperties.getPassword())) {
+ serverConfig.setPassword(redssionProperties.getPassword());
+ }
+
+ return Redisson.create(config);
+
+ }
+
+ /**
+ * 装配locker类,并将实例注入到RedissLockUtil中
+ *
+ * @return
+ */
+ @Bean
+ DistributedLocker distributedLocker(RedissonClient redissonClient) {
+ RedissonDistributedLocker locker = new RedissonDistributedLocker();
+ locker.setRedissonClient(redissonClient);
+ RedissLockUtil.setLocker(locker);
+ return locker;
+ }
+
+}
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/config/redisson/RedissonProperties.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/redisson/RedissonProperties.java
new file mode 100644
index 0000000000000000000000000000000000000000..b09e3694578a37e00c7acf9f8174b57ddd40f33e
--- /dev/null
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/config/redisson/RedissonProperties.java
@@ -0,0 +1,100 @@
+package cn.stylefeng.roses.core.config.redisson;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * redisson属性装配类
+ */
+@ConfigurationProperties(prefix = "redisson")
+public class RedissonProperties {
+
+ private int timeout = 3000;
+
+ private String address;
+
+ private String password;
+
+ private int connectionPoolSize = 64;
+
+ private int connectionMinimumIdleSize = 10;
+
+ private int slaveConnectionPoolSize = 250;
+
+ private int masterConnectionPoolSize = 250;
+
+ private String[] sentinelAddresses;
+
+ private String masterName;
+
+ public int getTimeout() {
+ return timeout;
+ }
+
+ public void setTimeout(int timeout) {
+ this.timeout = timeout;
+ }
+
+ public int getSlaveConnectionPoolSize() {
+ return slaveConnectionPoolSize;
+ }
+
+ public void setSlaveConnectionPoolSize(int slaveConnectionPoolSize) {
+ this.slaveConnectionPoolSize = slaveConnectionPoolSize;
+ }
+
+ public int getMasterConnectionPoolSize() {
+ return masterConnectionPoolSize;
+ }
+
+ public void setMasterConnectionPoolSize(int masterConnectionPoolSize) {
+ this.masterConnectionPoolSize = masterConnectionPoolSize;
+ }
+
+ public String[] getSentinelAddresses() {
+ return sentinelAddresses;
+ }
+
+ public void setSentinelAddresses(String sentinelAddresses) {
+ this.sentinelAddresses = sentinelAddresses.split(",");
+ }
+
+ public String getMasterName() {
+ return masterName;
+ }
+
+ public void setMasterName(String masterName) {
+ this.masterName = masterName;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+ public int getConnectionPoolSize() {
+ return connectionPoolSize;
+ }
+
+ public void setConnectionPoolSize(int connectionPoolSize) {
+ this.connectionPoolSize = connectionPoolSize;
+ }
+
+ public int getConnectionMinimumIdleSize() {
+ return connectionMinimumIdleSize;
+ }
+
+ public void setConnectionMinimumIdleSize(int connectionMinimumIdleSize) {
+ this.connectionMinimumIdleSize = connectionMinimumIdleSize;
+ }
+}
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/context/RequestDataHolder.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/context/RequestDataHolder.java
index 76586ec7ce19b2c3d447ecb641c0cb412d290f94..25c1dd1f1442eddf23d7e7f1890f231562d22f8b 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/context/RequestDataHolder.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/context/RequestDataHolder.java
@@ -22,7 +22,7 @@ import cn.stylefeng.roses.core.reqres.request.RequestData;
* 请求数据的临时容器
*
* @author fengshuonan
- * @date 2018-05-04 11:33
+ * @since 2018-05-04 11:33
*/
public class RequestDataHolder {
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/context/RequestNoContext.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/context/RequestNoContext.java
index abf2082e9a8c827e6ea5aba348bed3e9c4242528..3231c66106cbf50bcfe7b6debe3983cbe04070f8 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/context/RequestNoContext.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/context/RequestNoContext.java
@@ -27,7 +27,7 @@ import javax.servlet.http.HttpServletRequest;
* 获取当前请求的请求号,没有请求号则生成空串
*
* @author fengshuonan
- * @date 2018-05-09-下午6:25
+ * @since 2018-05-09-下午6:25
*/
@Slf4j
public class RequestNoContext {
@@ -55,6 +55,10 @@ public class RequestNoContext {
*/
public static String getRequestNoByRequestParam(Object[] params) {
+ String requestNo = getRequestNoByHttpHeader();
+ if (!ToolUtil.isEmpty(requestNo)) {
+ return requestNo;
+ }
if (params == null || params.length <= 0) {
return "";
} else {
diff --git a/kernel-core/src/main/java/cn/stylefeng/roses/core/converter/RequestDataMessageConvert.java b/kernel-core/src/main/java/cn/stylefeng/roses/core/converter/RequestDataMessageConvert.java
index b856fb6c84f5c3544aaaef7cbb4de23105e694ee..5ff75e9388582d7a720818ee083dbfa27d11643e 100644
--- a/kernel-core/src/main/java/cn/stylefeng/roses/core/converter/RequestDataMessageConvert.java
+++ b/kernel-core/src/main/java/cn/stylefeng/roses/core/converter/RequestDataMessageConvert.java
@@ -40,7 +40,7 @@ import java.util.Set;
* 请求数据统一转化为RequestData
*
* @author fengshuonan
- * @Date 2018/2/21 20:57
+ * @since 2018/2/21 20:57
*/
@Slf4j
public class RequestDataMessageConvert extends AbstractGenericHttpMessageConverter