Ver código fonte

【更新】服务启动类及配置优化处理

linfutong 3 anos atrás
pai
commit
3ad6aa7572

+ 1 - 3
zd-auth/src/main/java/com/zd/auth/ZdAuthApplication.java

@@ -18,8 +18,6 @@ import org.springframework.context.annotation.ComponentScan;
 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
 public class ZdAuthApplication {
     public static void main(String[] args) {
-        //SpringApplication.run(ZdAuthApplication.class, args);
-        //System.out.println("(♥◠‿◠)ノ゙  认证授权中心启动成功   ლ(´ڡ`ლ)゙");
-        ZdStartApplication.run(ApplicationConstants.AUTH_SERVICE, ZdAuthApplication.class, args);
+        ZdStartApplication.run(ApplicationConstants.AUTH_SERVICE, Boolean.TRUE, ZdAuthApplication.class, args);
     }
 }

+ 0 - 22
zd-auth/src/main/resources/bootstrap.yml

@@ -1,25 +1,3 @@
 # Tomcat
 server:
   port: ${service.port.auth}
-
-# Spring
-#spring:
-#  application:
-#    # 应用名称
-#    name: zd-auth
-#  profiles:
-#    # 环境配置
-#    active: dev
-#  cloud:
-#    nacos:
-#      discovery:
-#        # 服务注册地址
-#        server-addr: ${NACOS_HOST:127.0.0.1}:${NACOS_PORT:8848}
-#      config:
-#        # 配置中心地址
-#        server-addr: ${NACOS_HOST:127.0.0.1}:${NACOS_PORT:8848}
-#        # 配置文件格式
-#        file-extension: yml
-#        # 共享配置
-#        shared-configs:
-#          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

+ 1 - 1
zd-common/common-core/src/main/java/com/zd/common/core/launch/StartEventListener.java

@@ -25,6 +25,6 @@ public class StartEventListener {
         String appName = environment.getProperty("spring.application.name").toUpperCase();
         int localPort = event.getWebServer().getPort();
         String profile = StringUtils.arrayToCommaDelimitedString(environment.getActiveProfiles());
-        log.info("---[{}]---启动完成,当前使用的端口:[{}],环境变量:[{}]---", new Object[]{appName, localPort, profile});
+        log.info("============ [{}]---服务启动完成,当前使用的端口:[{}],环境变量:[{}] ============", new Object[]{appName, localPort, profile});
     }
 }

+ 27 - 17
zd-common/common-core/src/main/java/com/zd/common/core/launch/ZdStartApplication.java

@@ -1,19 +1,15 @@
 package com.zd.common.core.launch;
 
 import com.zd.common.core.launch.constant.LauncherConstant;
-import com.zd.common.core.launch.service.LauncherService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.annotation.PropertySource;
 import org.springframework.core.env.*;
 import org.springframework.util.Assert;
 import org.springframework.util.StringUtils;
 import java.util.*;
 import java.util.function.Function;
-import java.util.stream.Collectors;
 
 /**
  * <p>启动类</p>
@@ -26,12 +22,31 @@ public class ZdStartApplication {
     private static final Logger log = LoggerFactory.getLogger(ZdStartApplication.class);
 
     public ZdStartApplication() {}
-    public static ConfigurableApplicationContext run(String appName, Class<?> source, String... args) {
-        SpringApplicationBuilder builder = createSpringApplicationBuilder(appName, source, args);
+
+    /**
+     * 运行服务
+     *
+     * @param appName -- 应用名
+     * @param isShareDataSource 是否共用数据库,ture-是,fasle-否
+     * @param source
+     * @param args
+     * @return
+     */
+    public static ConfigurableApplicationContext run(String appName, Boolean isShareDataSource, Class<?> source, String... args) {
+        SpringApplicationBuilder builder = createSpringApplicationBuilder(appName, isShareDataSource, source, args);
         return builder.run(args);
     }
 
-    public static SpringApplicationBuilder createSpringApplicationBuilder(String appName, Class<?> source, String... args) {
+    /**
+     * 创建ApplicationBuilder
+     *
+     * @param appName -- 应用名
+     * @param isShareDataSource 是否共用数据库,ture-是,fasle-否
+     * @param source
+     * @param args
+     * @return
+     */
+    public static SpringApplicationBuilder createSpringApplicationBuilder(String appName, Boolean isShareDataSource, Class<?> source, String... args) {
         Assert.hasText(appName, "[appName]服务名不能为空");
         ConfigurableEnvironment environment = new StandardEnvironment();
         MutablePropertySources propertySources = environment.getPropertySources();
@@ -58,7 +73,7 @@ public class ZdStartApplication {
 
         String startJarPath = Objects.requireNonNull(ZdStartApplication.class.getResource("/")).getPath().split("!")[0];
         String activePros = joinFun.apply(activeProfileList.toArray());
-        System.out.printf("----启动中,读取到的环境变量:[%s],jar地址:[%s]----%n", activePros, startJarPath);
+        System.out.printf("============ 启动中,读取到的环境变量:[%s],jar地址:[%s]============ %n", activePros, startJarPath);
         Properties props = System.getProperties();
         props.setProperty("spring.application.name", appName);
         props.setProperty("spring.profiles.active", profile);
@@ -68,29 +83,24 @@ public class ZdStartApplication {
         props.setProperty("service.is-local", String.valueOf(isLocalDev()));
         props.setProperty("service.dev-mode", profile.equals("pro") ? "false" : "true");
         props.setProperty("spring.main.allow-bean-definition-overriding", "true");
+        //获取nacos服务地址
         String addr =  LauncherConstant.nacosAddr(profile);
         props.setProperty("spring.cloud.nacos.discovery.server-addr", addr);
         props.setProperty("spring.cloud.nacos.config.server-addr", addr);
-       /* props.setProperty("spring.cloud.nacos.discovery.server-addr", "127.0.0.1:8848");
-        props.setProperty("spring.cloud.nacos.config.server-addr", "127.0.0.1:8848");*/
-
+        //获取nacos命名空间
         String nameSpace =  LauncherConstant.nacosNameSpace(profile);
         if (nameSpace != null && !"".equals(nameSpace)) {
             props.setProperty("spring.cloud.nacos.discovery.namespace", nameSpace);
             props.setProperty("spring.cloud.nacos.config.namespace", nameSpace);
         }
 
-        String prefixName = LauncherConstant.DATA_IS_SINGLE?LauncherConstant.NACOS_CONFIG_NAME:appName;
+        String prefixName = (isShareDataSource == null || isShareDataSource)?LauncherConstant.NACOS_CONFIG_NAME:appName;
         props.setProperty("spring.cloud.nacos.config.prefix", prefixName);
         props.setProperty("spring.cloud.nacos.config.file-extension", "yml");
         props.setProperty("spring.cloud.nacos.config.shared-configs", "application.yml");
         //props.setProperty("spring.cloud.nacos.config.extension-configs[0].data-id", "application.yml");
 
-        log.info("------ nacos配置信息  addr:[{}]---namespace:[{}],prefixName:[{}]---", new Object[]{addr, nameSpace, prefixName});
-        List<LauncherService> launcherList = new ArrayList<>();
-        ServiceLoader.load(LauncherService.class).forEach(launcherList::add);
-        (launcherList.stream().sorted(Comparator.comparing(LauncherService::getOrder)).collect(Collectors.toList()))
-                .forEach((launcherService) -> launcherService.launcher(builder, appName, profile));
+        log.info("============ nacos配置信息 addr:[{}], namespace:[{}],prefixName:[{}] ===========", new Object[]{addr, nameSpace, prefixName});
         return builder;
     }
 

+ 13 - 10
zd-common/common-core/src/main/java/com/zd/common/core/launch/constant/LauncherConstant.java

@@ -10,20 +10,23 @@ package com.zd.common.core.launch.constant;
  */
 public interface LauncherConstant {
 
-	Boolean DATA_IS_SINGLE = Boolean.FALSE;
-
-	String NACOS_CONFIG_NAME = "zd";
+	/**
+	 * 数据库统一配置文件名
+	 */
+	String NACOS_CONFIG_NAME = "zd-server";
 
+	/**
+	 * Nacos各环境服务地址
+	 */
 	String NACOS_DEV_ADDR = "127.0.0.1:8848";
+	String NACOS_TEST_ADDR = "127.0.0.1:8848";
+	String NACOS_PRO_ADDR = "192.168.1.88:8848";
 
-	String NACOS_TEST_ADDR = "192.168.1.24:8848";
-
-	String NACOS_PRO_ADDR = "192.0.0.1:8848";
-
+	/**
+	 * Nacos各环境命名空间
+	 */
 	String NACOS_DEV_NAMESPACE = "";
-
-	String NACOS_TEST_NAMESPACE = "430fc5e0-37a1-4b8f-9121-a191ce50b7f4";
-
+	String NACOS_TEST_NAMESPACE = "668645db-56eb-4f96-aa27-35fe8aff386d";
 	String NACOS_PRO_NAMESPACE = "";
 
 	/**

+ 0 - 24
zd-common/common-core/src/main/java/com/zd/common/core/launch/service/LauncherService.java

@@ -1,24 +0,0 @@
-package com.zd.common.core.launch.service;
-
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.core.Ordered;
-
-/**
- * 启动配置读取类
- *
- * @author linft
- * @version 1.0
- * @date 10/17/2022
- */
-public interface LauncherService extends Ordered, Comparable<LauncherService> {
-
-    void launcher(SpringApplicationBuilder builder, String appName, String profile);
-
-    default int compareTo(LauncherService o) {
-        return Integer.compare(this.getOrder(), o.getOrder());
-    }
-
-    default int getOrder() {
-        return -2147483648;
-    }
-}

+ 0 - 35
zd-common/common-core/src/main/java/com/zd/common/core/launch/service/LauncherServiceImpl.java

@@ -1,35 +0,0 @@
-package com.zd.common.core.launch.service;
-
-
-import com.zd.common.core.launch.constant.LauncherConstant;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import java.util.Properties;
-
-/**
- * 启动配置实现
- *
- * @author linft
- * @version 1.0
- * @date 10/17/2022
- */
-public class LauncherServiceImpl implements LauncherService {
-
-    @Override
-    public void launcher(SpringApplicationBuilder builder, String appName, String profile) {
-        Properties props = System.getProperties();
-
-        props.setProperty("spring.cloud.nacos.discovery.server-addr", LauncherConstant.nacosAddr(profile));
-        props.setProperty("spring.cloud.nacos.discovery.namespace", LauncherConstant.nacosNameSpace(profile));
-        props.setProperty("spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile));
-        props.setProperty("spring.cloud.nacos.config.namespace",LauncherConstant.nacosNameSpace(profile));
-
-        /*try {
-            String hostName = InetAddress.getLocalHost().getHostName();
-            if ("LAPTOP-70VVJB1B".equals(hostName)) {
-                props.setProperty("spring.cloud.nacos.discovery.namespace", "fc4be65b-b38f-433c-86f8-a2e7ccb062c9");
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }*/
-    }
-}

+ 1 - 2
zd-gateway/src/main/java/com/zd/gateway/ZdGatewayApplication.java

@@ -4,7 +4,6 @@ import com.zd.common.core.launch.ZdStartApplication;
 import com.zd.model.constant.ApplicationConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.context.ConfigurableApplicationContext;
@@ -23,7 +22,7 @@ public class ZdGatewayApplication {
 
     public static void main(String[] args) {
         //ConfigurableApplicationContext run = SpringApplication.run(ZdGatewayApplication.class, args);
-        ConfigurableApplicationContext run = ZdStartApplication.run(ApplicationConstants.GATEWAY_SERVICE, ZdGatewayApplication.class, args);
+        ConfigurableApplicationContext run = ZdStartApplication.run(ApplicationConstants.GATEWAY_SERVICE, null, ZdGatewayApplication.class, args);
         System.out.println("(♥◠‿◠)ノ゙  网关启动成功   ლ(´ڡ`ლ)゙");
 
         Environment env = run.getEnvironment();

+ 0 - 18
zd-gateway/src/main/resources/bootstrap.yml

@@ -4,27 +4,9 @@ server:
 
 # Spring
 spring:
-#  application:
-#    # 应用名称
-#    name: zd-gateway
-#  profiles:
-#    # 环境配置
-#    active: dev
   main:
     allow-bean-definition-overriding: true
   cloud:
-#    nacos:
-#      discovery:
-#        # 服务注册地址
-#        server-addr: ${NACOS_HOST:127.0.0.1}:${NACOS_PORT:8848}
-#      config:
-#        # 配置中心地址
-#        server-addr: ${NACOS_HOST:127.0.0.1}:${NACOS_PORT:8848}
-#        # 配置文件格式
-#        file-extension: yml
-#        # 共享配置
-#        shared-configs:
-#          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
     sentinel:
       # 取消控制台懒加载
       eager: true

+ 1 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/AlgorithmApplication.java

@@ -6,6 +6,7 @@ import com.zd.alg.forward.properties.FireProperties;
 import com.zd.common.core.constant.Constants;
 import com.zd.common.security.annotation.EnableCustomConfig;
 import com.zd.common.security.annotation.EnableRyFeignClients;
+import com.zd.model.constant.ApplicationConstants;
 import lombok.extern.slf4j.Slf4j;
 import org.mybatis.spring.annotation.MapperScan;
 import org.mybatis.spring.annotation.MapperScans;

+ 3 - 2
zd-modules/zd-base/src/main/java/com/zd/base/BaseApplicaion.java

@@ -3,6 +3,8 @@ package com.zd.base;
 
 import com.zd.common.core.annotation.EnableCustomConfig;
 import com.zd.common.core.annotation.EnableRyFeignClients;
+import com.zd.common.core.launch.ZdStartApplication;
+import com.zd.model.constant.ApplicationConstants;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -17,7 +19,6 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 @Slf4j
 public class BaseApplicaion {
     public static void main(String[] args) {
-        SpringApplication.run(BaseApplicaion.class, args);
-        log.info("(♥◠‿◠)ノ゙  消息模块启动成功   ლ(´ڡ`ლ)゙");
+        ZdStartApplication.run(ApplicationConstants.SYSTEM_SERVICE, Boolean.TRUE, BaseApplicaion.class, args);
     }
 }

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 10
zd-modules/zd-modules-laboratory/Dockerfile


+ 4 - 4
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/ZdLaboratoryApplication.java

@@ -2,8 +2,9 @@ package com.zd.laboratory;
 
 import com.zd.common.core.annotation.EnableCustomConfig;
 import com.zd.common.core.annotation.EnableRyFeignClients;
+import com.zd.common.core.launch.ZdStartApplication;
+import com.zd.model.constant.ApplicationConstants;
 import com.zd.model.constant.BaseConstants;
-import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.scheduling.annotation.EnableScheduling;
@@ -20,8 +21,7 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 @ComponentScan(basePackages = BaseConstants.BASE_PACKAGE)
 public class ZdLaboratoryApplication {
     public static void main(String[] args) {
-
-        SpringApplication.run(ZdLaboratoryApplication.class, args);
-        System.out.println("(♥◠‿◠)ノ゙  系统模块启动成功   ლ(´ڡ`ლ)゙");
+        //SpringApplication.run(ZdLaboratoryApplication.class, args);
+        ZdStartApplication.run(ApplicationConstants.SYSTEM_SERVICE, Boolean.TRUE, ZdLaboratoryApplication.class, args);
     }
 }

+ 5 - 26
zd-modules/zd-modules-laboratory/src/main/resources/bootstrap.yml

@@ -1,32 +1,6 @@
 # Tomcat
 server:
   port: ${service.port.auth}
-# Spring
-#logging:
-#  level:
-#    root: debug
-spring:
-  application:
-    # 应用名称
-    name: zd-laboratory
-  profiles:
-    # 环境配置
-    active: dev
-  cloud:
-    nacos:
-      discovery:
-        # 服务注册地址
-        server-addr: ${NACOS_HOST:127.0.0.1}:${NACOS_PORT:8848}
-      config:
-        # 配置中心地址
-        server-addr: ${NACOS_HOST:127.0.0.1}:${NACOS_PORT:8848}
-        # 配置文件格式
-        file-extension: yml
-        # 动态刷新
-        refresh-enabled: true
-        # 共享配置
-        shared-configs:
-          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
 
 # mybatis配置
 mybatis:
@@ -34,3 +8,8 @@ mybatis:
   typeAliasesPackage: com.zd.laboratory
   # 配置mapper的扫描,找到所有的mapper.xml映射文件
   mapperLocations: classpath:mapper/**/*.xml
+
+##日志
+logging:
+  level:
+    root: debug

+ 6 - 4
zd-modules/zd-modules-system/src/main/java/com/zd/system/ZdSystemApplication.java

@@ -2,7 +2,9 @@ package com.zd.system;
 
 import com.zd.common.core.annotation.EnableCustomConfig;
 import com.zd.common.core.annotation.EnableRyFeignClients;
-import org.springframework.boot.SpringApplication;
+import com.zd.common.core.launch.ZdStartApplication;
+import com.zd.model.constant.ApplicationConstants;
+import com.zd.model.constant.BaseConstants;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.annotation.ComponentScan;
 
@@ -11,13 +13,13 @@ import org.springframework.context.annotation.ComponentScan;
  *
  * @author zd
  */
-@ComponentScan(basePackages = "com.zd")
+
 @EnableCustomConfig
 @EnableRyFeignClients
 @SpringBootApplication
+@ComponentScan(basePackages = BaseConstants.BASE_PACKAGE)
 public class ZdSystemApplication {
     public static void main(String[] args) {
-        SpringApplication.run(ZdSystemApplication.class, args);
-        System.out.println("(♥◠‿◠)ノ゙  系统模块启动成功   ლ(´ڡ`ლ)゙");
+        ZdStartApplication.run(ApplicationConstants.SYSTEM_SERVICE, Boolean.TRUE, ZdSystemApplication.class, args);
     }
 }

+ 0 - 22
zd-modules/zd-modules-system/src/main/resources/bootstrap.yml

@@ -2,28 +2,6 @@
 server:
   port: ${service.port.system}
 
-# Spring
-spring:
-  application:
-    # 应用名称
-    name: zd-system
-  profiles:
-    # 环境配置
-    active: dev
-  cloud:
-    nacos:
-      discovery:
-        # 服务注册地址
-        server-addr: ${NACOS_HOST:127.0.0.1}:${NACOS_PORT:8848}
-      config:
-        # 配置中心地址
-        server-addr: ${NACOS_HOST:127.0.0.1}:${NACOS_PORT:8848}
-        # 配置文件格式
-        file-extension: yml
-        # 共享配置
-        shared-configs:
-          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
-
 #mybatis配置
 mybatis:
   # 搜索指定包别名