Merge pull request #26 from lohasle/fixbug-external-tomcat-start

启动器新增支持外部builder启动选项
This commit is contained in:
Arthur Chill 2024-03-13 10:47:19 +08:00 committed by GitHub
commit 45d7b20b75
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 21 additions and 3 deletions

View File

@ -50,6 +50,20 @@ public class BladeApplication {
}
public static SpringApplicationBuilder createSpringApplicationBuilder(String appName, Class source, String... args) {
return createSpringApplicationBuilder(null,appName, source, args);
}
/**
* 兼容tomcat等外部容器启动使用此方法时请按照1进行工程改造
* <pre>1-https://sns.bladex.cn/q-6813.html</pre>
* <pre>2-解决https://sns.bladex.cn/q-66.html问题</pre>
* @param builder builder
* @param appName appName
* @param source source
* @param args args
* @return
*/
public static SpringApplicationBuilder createSpringApplicationBuilder(SpringApplicationBuilder builder,String appName, Class source, String... args){
Assert.hasText(appName, "[appName]服务名不能为空");
// 读取环境变量使用spring boot的规则
ConfigurableEnvironment environment = new StandardEnvironment();
@ -68,7 +82,10 @@ public class BladeApplication {
// 当前使用
List<String> activeProfileList = new ArrayList<>(profiles);
Function<Object[], String> joinFun = StringUtils::arrayToCommaDelimitedString;
SpringApplicationBuilder builder = new SpringApplicationBuilder(source);
if(builder==null){
// 如果builder为空 创建 此操作将启动内嵌web容器 以jar模式启动
builder = new SpringApplicationBuilder(source);
}
String profile;
if (activeProfileList.isEmpty()) {
// 默认dev开发
@ -102,9 +119,10 @@ public class BladeApplication {
// 加载自定义组件
List<LauncherService> launcherList = new ArrayList<>();
ServiceLoader.load(LauncherService.class).forEach(launcherList::add);
SpringApplicationBuilder finalBuilder = builder;
launcherList.stream().sorted(Comparator.comparing(LauncherService::getOrder)).collect(Collectors.toList())
.forEach(launcherService -> launcherService.launcher(builder, appName, profile));
return builder;
.forEach(launcherService -> launcherService.launcher(finalBuilder, appName, profile));
return finalBuilder;
}
/**