From e00a969bfb582a9e3be87c4cf470e4836998cab3 Mon Sep 17 00:00:00 2001 From: caoyuan Date: Wed, 29 Nov 2023 11:43:30 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix:System.out.print=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=20=20isPrintScannerInfoEnable()=20=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/jboot/apidoc/ApiJsonGenerator.java | 12 ++++++---- .../java/io/jboot/app/ApplicationUtil.java | 14 +++++++++--- .../io/jboot/app/JbootResourceLoader.java | 6 ++++- .../io/jboot/app/JbootSimpleApplication.java | 22 ++++++++++++++----- .../components/gateway/GatewayInvocation.java | 6 ++++- src/main/java/io/jboot/db/SqlDebugger.java | 10 +++++++-- .../prometheus/PrometheusReporter.java | 6 ++++- .../java/io/jboot/test/MockMvcResult.java | 10 +++++++-- .../io/jboot/test/web/MockServletContext.java | 14 +++++++++--- 9 files changed, 78 insertions(+), 22 deletions(-) diff --git a/src/main/java/io/jboot/apidoc/ApiJsonGenerator.java b/src/main/java/io/jboot/apidoc/ApiJsonGenerator.java index a2ba83ae..60a087f8 100644 --- a/src/main/java/io/jboot/apidoc/ApiJsonGenerator.java +++ b/src/main/java/io/jboot/apidoc/ApiJsonGenerator.java @@ -15,6 +15,8 @@ */ package io.jboot.apidoc; +import static io.jboot.utils.ClassScanner.isPrintScannerInfoEnable; + import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.parser.Feature; import com.jfinal.kit.PathKit; @@ -101,8 +103,9 @@ public class ApiJsonGenerator { String jsonContent = JSONObject.toJSONString(root, true); FileUtil.writeString(file, jsonContent); - - System.out.println("Gen Remarks Json File ----->" + FileUtil.getCanonicalPath(file)); + if (isPrintScannerInfoEnable()) { + System.out.println("Gen Remarks Json File ----->" + FileUtil.getCanonicalPath(file)); + } } @@ -211,8 +214,9 @@ public class ApiJsonGenerator { String jsonContent = JSONObject.toJSONString(root, true); FileUtil.writeString(file, jsonContent); - - System.out.println("Gen Remarks Json File ----->" + FileUtil.getCanonicalPath(file)); + if (isPrintScannerInfoEnable()) { + System.out.println("Gen Remarks Json File ----->" + FileUtil.getCanonicalPath(file)); + } } diff --git a/src/main/java/io/jboot/app/ApplicationUtil.java b/src/main/java/io/jboot/app/ApplicationUtil.java index f4c1d5a6..139e59d2 100644 --- a/src/main/java/io/jboot/app/ApplicationUtil.java +++ b/src/main/java/io/jboot/app/ApplicationUtil.java @@ -15,6 +15,8 @@ */ package io.jboot.app; +import static io.jboot.utils.ClassScanner.isPrintScannerInfoEnable; + import io.jboot.app.config.JbootConfigManager; import java.io.File; @@ -39,7 +41,9 @@ public class ApplicationUtil { } static void printApplicationInfo(JbootApplicationConfig appConfig) { - System.out.println(appConfig.toString()); + if (isPrintScannerInfoEnable()) { + System.out.println(appConfig.toString()); + } } private static Boolean runInFatjar; @@ -86,14 +90,18 @@ public class ApplicationUtil { static void printClassPath() { try { if (runInFatjar()) { - System.out.println("JbootApplication is running in fatjar."); + if (isPrintScannerInfoEnable()) { + System.out.println("JbootApplication is running in fatjar."); + } } else { String path = ApplicationUtil.class.getResource("/").getPath(); // 例如: /D:/JAVA/workSpace_idea/... if (path.indexOf(":") == 2) { path = path.substring(1); } - System.out.println("JbootApplication classpath: " + path); + if (isPrintScannerInfoEnable()) { + System.out.println("JbootApplication classpath: " + path); + } } } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/io/jboot/app/JbootResourceLoader.java b/src/main/java/io/jboot/app/JbootResourceLoader.java index cf415699..a4c71e8e 100644 --- a/src/main/java/io/jboot/app/JbootResourceLoader.java +++ b/src/main/java/io/jboot/app/JbootResourceLoader.java @@ -15,6 +15,8 @@ */ package io.jboot.app; +import static io.jboot.utils.ClassScanner.isPrintScannerInfoEnable; + import io.jboot.app.config.JbootConfigManager; import io.jboot.utils.FileScanner; import io.jboot.utils.StrUtil; @@ -76,7 +78,9 @@ public class JbootResourceLoader { public void stop() { scanners.forEach(FileScanner::stop); - System.out.println("JbootResourceLoader has stopped."); + if (isPrintScannerInfoEnable()) { + System.out.println("JbootResourceLoader has stopped."); + } } private void findResourcesPath(File root, List resourcesDirs) { diff --git a/src/main/java/io/jboot/app/JbootSimpleApplication.java b/src/main/java/io/jboot/app/JbootSimpleApplication.java index f5bacdd8..a9c48507 100644 --- a/src/main/java/io/jboot/app/JbootSimpleApplication.java +++ b/src/main/java/io/jboot/app/JbootSimpleApplication.java @@ -15,6 +15,8 @@ */ package io.jboot.app; +import static io.jboot.utils.ClassScanner.isPrintScannerInfoEnable; + import com.jfinal.config.Interceptors; import com.jfinal.config.Plugins; import com.jfinal.core.JFinal; @@ -129,7 +131,9 @@ public class JbootSimpleApplication { @Override public void run() { String seconds = new DecimalFormat("#.#").format((System.currentTimeMillis() - startTimeMillis) / 1000F); - System.out.println("JbootApplication has started in " + seconds + " seconds. Welcome To The Jboot World (^_^)\n\n"); + if (isPrintScannerInfoEnable()) { + System.out.println("JbootApplication has started in " + seconds + " seconds. Welcome To The Jboot World (^_^)\n\n"); + } initShutdownHook(); startAwait(); @@ -138,13 +142,19 @@ public class JbootSimpleApplication { private void initShutdownHook() { Runtime.getRuntime().addShutdownHook(new Thread(() -> { - System.out.println("\nJbootApplication shutdown, please wait ...... "); + if (isPrintScannerInfoEnable()) { + System.out.println("\nJbootApplication shutdown, please wait ...... "); + } try { coreConfig.onStop(); } catch (Exception e) { - System.out.println("JbootApplication shutdown exception: " + e.toString()); + if (isPrintScannerInfoEnable()) { + System.out.println("JbootApplication shutdown exception: " + e.toString()); + } + } + if (isPrintScannerInfoEnable()) { + System.out.println("JbootApplication has exited, all services stopped."); } - System.out.println("JbootApplication has exited, all services stopped."); try { LOCK.lock(); STOP.signal(); @@ -160,7 +170,9 @@ public class JbootSimpleApplication { LOCK.lock(); STOP.await(); } catch (InterruptedException e) { - System.out.println("JbootApplication has stopped, interrupted by other thread!"); + if (isPrintScannerInfoEnable()) { + System.out.println("JbootApplication has stopped, interrupted by other thread!"); + } } finally { LOCK.unlock(); } diff --git a/src/main/java/io/jboot/components/gateway/GatewayInvocation.java b/src/main/java/io/jboot/components/gateway/GatewayInvocation.java index b87abd83..6a6c1dba 100644 --- a/src/main/java/io/jboot/components/gateway/GatewayInvocation.java +++ b/src/main/java/io/jboot/components/gateway/GatewayInvocation.java @@ -15,6 +15,8 @@ */ package io.jboot.components.gateway; +import static io.jboot.utils.ClassScanner.isPrintScannerInfoEnable; + import com.jfinal.kit.Ret; import io.jboot.Jboot; import io.jboot.utils.StrUtil; @@ -72,7 +74,9 @@ public class GatewayInvocation { } if (devMode) { - System.out.println("Jboot Gateway >>> " + proxyUrl); + if (isPrintScannerInfoEnable()) { + System.out.println("Jboot Gateway >>> " + proxyUrl); + } } //启用 Sentinel 限流 diff --git a/src/main/java/io/jboot/db/SqlDebugger.java b/src/main/java/io/jboot/db/SqlDebugger.java index cc5287ce..2199be4b 100644 --- a/src/main/java/io/jboot/db/SqlDebugger.java +++ b/src/main/java/io/jboot/db/SqlDebugger.java @@ -15,6 +15,8 @@ */ package io.jboot.db; +import static io.jboot.utils.ClassScanner.isPrintScannerInfoEnable; + import com.jfinal.log.Log; import com.jfinal.plugin.activerecord.Config; import io.jboot.Jboot; @@ -109,9 +111,13 @@ public class SqlDebugger { @Override public void print(String sql, Long tookTimeMillis) { if (tookTimeMillis != null) { - System.out.println("Jboot exec sql took " + tookTimeMillis + " ms >>> " + sql); + if (isPrintScannerInfoEnable()) { + System.out.println("Jboot exec sql took " + tookTimeMillis + " ms >>> " + sql); + } } else { - System.out.println("Jboot exec sql >>> " + sql); + if (isPrintScannerInfoEnable()) { + System.out.println("Jboot exec sql >>> " + sql); + } } } }; diff --git a/src/main/java/io/jboot/support/metric/reporter/prometheus/PrometheusReporter.java b/src/main/java/io/jboot/support/metric/reporter/prometheus/PrometheusReporter.java index 623b6353..ee82d446 100644 --- a/src/main/java/io/jboot/support/metric/reporter/prometheus/PrometheusReporter.java +++ b/src/main/java/io/jboot/support/metric/reporter/prometheus/PrometheusReporter.java @@ -15,6 +15,8 @@ */ package io.jboot.support.metric.reporter.prometheus; +import static io.jboot.utils.ClassScanner.isPrintScannerInfoEnable; + import com.codahale.metrics.MetricRegistry; import io.jboot.Jboot; import io.jboot.exception.JbootIllegalConfigException; @@ -37,7 +39,9 @@ public class PrometheusReporter implements JbootMetricReporter { try { httpServer = new HTTPServer(config.getHost(), config.getPort()); String printMsg = "Prometheus Reporter Server started -> http://" + config.getHost() + ":" + config.getPort(); - System.out.println(printMsg); + if (isPrintScannerInfoEnable()) { + System.out.println(printMsg); + } } catch (IOException e) { throw new JbootIllegalConfigException("Prometheus config is error, please check your jboot.properties. ", e); } diff --git a/src/main/java/io/jboot/test/MockMvcResult.java b/src/main/java/io/jboot/test/MockMvcResult.java index e7a1d51a..d2663563 100644 --- a/src/main/java/io/jboot/test/MockMvcResult.java +++ b/src/main/java/io/jboot/test/MockMvcResult.java @@ -15,6 +15,8 @@ */ package io.jboot.test; +import static io.jboot.utils.ClassScanner.isPrintScannerInfoEnable; + import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import io.jboot.test.web.MockHttpServletResponse; @@ -84,12 +86,16 @@ public class MockMvcResult { } public MockMvcResult printResult() { - System.out.println(this); + if (isPrintScannerInfoEnable()) { + System.out.println(this); + } return this; } public MockMvcResult printContent() { - System.out.println(getContent()); + if (isPrintScannerInfoEnable()) { + System.out.println(getContent()); + } return this; } diff --git a/src/main/java/io/jboot/test/web/MockServletContext.java b/src/main/java/io/jboot/test/web/MockServletContext.java index 32f62425..197b43c5 100644 --- a/src/main/java/io/jboot/test/web/MockServletContext.java +++ b/src/main/java/io/jboot/test/web/MockServletContext.java @@ -15,6 +15,8 @@ */ package io.jboot.test.web; +import static io.jboot.utils.ClassScanner.isPrintScannerInfoEnable; + import com.jfinal.kit.PathKit; import io.jboot.components.http.HttpMimeTypes; import io.jboot.test.MockExceptions; @@ -128,18 +130,24 @@ public class MockServletContext implements ServletContext { @Override public void log(String msg) { - System.out.println(msg); + if (isPrintScannerInfoEnable()) { + System.out.println(msg); + } } @Override public void log(Exception exception, String msg) { - System.out.println(msg); + if (isPrintScannerInfoEnable()) { + System.out.println(msg); + } exception.printStackTrace(); } @Override public void log(String message, Throwable throwable) { - System.out.println(message); + if (isPrintScannerInfoEnable()) { + System.out.println(message); + } throwable.printStackTrace(); } -- Gitee From dcb72468fe32b2f4a3c5d72480aa05f21db4a27f Mon Sep 17 00:00:00 2001 From: caoyuan Date: Fri, 1 Dec 2023 11:18:58 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:oracle=20=E6=8B=BC=E5=86=99=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/jboot/codegen/CodeGenHelpler.java | 2 +- src/main/java/io/jboot/db/ArpManager.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/jboot/codegen/CodeGenHelpler.java b/src/main/java/io/jboot/codegen/CodeGenHelpler.java index 16afe3fa..4e6c2f4f 100644 --- a/src/main/java/io/jboot/codegen/CodeGenHelpler.java +++ b/src/main/java/io/jboot/codegen/CodeGenHelpler.java @@ -103,7 +103,7 @@ public class CodeGenHelpler { metaBuilder.setDialect(new InformixDialect()); break; default: - throw new JbootIllegalConfigException("Only support datasource type: mysql、orcale、sqlserver、sqlite、ansisql、postgresql and infomix" + + throw new JbootIllegalConfigException("Only support datasource type: mysql、oracle、sqlserver、sqlite、ansisql、postgresql and infomix" + ", please check your jboot.properties. "); } diff --git a/src/main/java/io/jboot/db/ArpManager.java b/src/main/java/io/jboot/db/ArpManager.java index 4d445817..65051d04 100644 --- a/src/main/java/io/jboot/db/ArpManager.java +++ b/src/main/java/io/jboot/db/ArpManager.java @@ -257,7 +257,7 @@ public class ArpManager { activeRecordPlugin.setDialect(new JbootInformixDialect()); break; default: - throw new JbootIllegalConfigException("only support datasource type: mysql、orcale、sqlserver、sqlite、ansisql、postgresql and clickhouse, please check your jboot.properties. "); + throw new JbootIllegalConfigException("only support datasource type: mysql、oracle、sqlserver、sqlite、ansisql、postgresql and clickhouse, please check your jboot.properties. "); } } -- Gitee From 07306af6588bd9c632c1b4e156f0924322784896 Mon Sep 17 00:00:00 2001 From: caoyuan Date: Fri, 1 Dec 2023 17:32:47 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:JbootCaredisCache=20=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=8F=82=E6=95=B0isUseFirstLevelOnly=20=E4=B8=BAtrue=E4=B8=8D?= =?UTF-8?q?=E4=BD=BF=E7=94=A8redis=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cache/caredis/JbootCaredisCacheImpl.java | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/main/java/io/jboot/components/cache/caredis/JbootCaredisCacheImpl.java b/src/main/java/io/jboot/components/cache/caredis/JbootCaredisCacheImpl.java index 3f2e41c9..20feca66 100644 --- a/src/main/java/io/jboot/components/cache/caredis/JbootCaredisCacheImpl.java +++ b/src/main/java/io/jboot/components/cache/caredis/JbootCaredisCacheImpl.java @@ -57,22 +57,24 @@ public class JbootCaredisCacheImpl extends JbootCacheBase { public JbootCaredisCacheImpl(JbootCacheConfig config) { super(config); this.caffeineCacheImpl = new CaffeineCacheImpl(config); - this.redisCacheImpl = new JbootRedisCacheImpl(config); + this.clientId = StrUtil.uuid(); this.serializer = Jboot.getSerializer(); - //在某些场景下,多个应用使用同一个 redis 实例,此时可以通过配置 cacheSyncMqChannel 来解决缓存冲突的问题 - if (StrUtil.isNotBlank(config.getCacheSyncMqChannel())){ - this.channel = config.getCacheSyncMqChannel(); - } - - this.redis = redisCacheImpl.getRedis(); - this.redis.subscribe(new BinaryJedisPubSub() { - @Override - public void onMessage(byte[] channel, byte[] message) { - JbootCaredisCacheImpl.this.onMessage((String) serializer.deserialize(channel), serializer.deserialize(message)); + if(!config.isUseFirstLevelOnly()) { + //在某些场景下,多个应用使用同一个 redis 实例,此时可以通过配置 cacheSyncMqChannel 来解决缓存冲突的问题 + if (StrUtil.isNotBlank(config.getCacheSyncMqChannel())) { + this.channel = config.getCacheSyncMqChannel(); } - }, serializer.serialize(channel)); + this.redisCacheImpl = new JbootRedisCacheImpl(config); + this.redis = redisCacheImpl.getRedis(); + this.redis.subscribe(new BinaryJedisPubSub() { + @Override + public void onMessage(byte[] channel, byte[] message) { + JbootCaredisCacheImpl.this.onMessage((String) serializer.deserialize(channel), serializer.deserialize(message)); + } + }, serializer.serialize(channel)); + } } @@ -241,8 +243,11 @@ public class JbootCaredisCacheImpl extends JbootCacheBase { private void publishMessage(int action, String cacheName, Object key) { clearKeysCache(cacheName); - JbootCaredisMessage message = new JbootCaredisMessage(clientId, action, cacheName, key); - redis.publish(serializer.serialize(channel), serializer.serialize(message)); + if(!config.isUseFirstLevelOnly()){ + JbootCaredisMessage message = new JbootCaredisMessage(clientId, action, cacheName, key); + redis.publish(serializer.serialize(channel), serializer.serialize(message)); + } + } private void clearKeysCache(String cacheName) { -- Gitee