diff --git a/pom.xml b/pom.xml
index c4c0d8fe9bde6bfadea9112d7d1ab91fb78a10ae..c4167139218a22121f9c3863683b944bf626531b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
com.gitee.starblues
springboot-plugin-framework-parent
pom
- 2.4.5-RELEASE
+ 2.4.6-RELEASE
spring boot 插件开发集成包
diff --git a/springboot-plugin-framework-extension/pom.xml b/springboot-plugin-framework-extension/pom.xml
index 86be9e3f69ae32ff0345f91a0e6e7ae5ba2d7c17..c206ec138abd4496a06ff3daa3632fd5c636f2f7 100644
--- a/springboot-plugin-framework-extension/pom.xml
+++ b/springboot-plugin-framework-extension/pom.xml
@@ -9,7 +9,7 @@
com.gitee.starblues
springboot-plugin-framework-extension
pom
- 2.4.5-RELEASE
+ 2.4.6-RELEASE
spring boot 插件式开发集成包--扩展模块
diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-log/pom.xml b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-log/pom.xml
index 3742f2d67f66d711bf95e2d574013cd8543212cb..31a1b6a548522329c1a851057699924bce94168f 100644
--- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-log/pom.xml
+++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-log/pom.xml
@@ -12,7 +12,7 @@
com.gitee.starblues
springboot-plugin-framework-extension-log
- 2.4.5-RELEASE
+ 2.4.6-RELEASE
插件扩展-日志模块扩展
@@ -62,7 +62,7 @@
3.1.0
1.6
- 2.4.5-RELEASE
+ 2.4.6-RELEASE
5.0.7.RELEASE
1.2.3
2.14.1
diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/pom.xml b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/pom.xml
index eb512f48a55ce1eada5c7bf7fd3f3269df3b01ae..8bbb50190a528fa3a094956e7f9feec93ff587c5 100644
--- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/pom.xml
+++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-mybatis/pom.xml
@@ -13,7 +13,7 @@
com.gitee.starblues
springboot-plugin-framework-extension-mybatis
- 2.4.5-RELEASE
+ 2.4.6-RELEASE
jar
插件扩展-spring boot mybatis 集成扩展
@@ -64,7 +64,7 @@
3.1.0
1.6
- 2.4.5-RELEASE
+ 2.4.6-RELEASE
2.0.1
3.4.1
2.1.5
diff --git a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-resources/pom.xml b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-resources/pom.xml
index 607feddb099d1b29b580f60b942cb6d1c017df7e..70af63ffa2d2985965b0b7260a5efa8391173098 100644
--- a/springboot-plugin-framework-extension/springboot-plugin-framework-extension-resources/pom.xml
+++ b/springboot-plugin-framework-extension/springboot-plugin-framework-extension-resources/pom.xml
@@ -13,7 +13,7 @@
com.gitee.starblues
springboot-plugin-framework-extension-resources
- 2.4.5-RELEASE
+ 2.4.6-RELEASE
jar
插件扩展-通过url读取插件中的静态资源
@@ -69,7 +69,7 @@
5.0.7.RELEASE
4.0.1
- 2.4.5-RELEASE
+ 2.4.6-RELEASE
2.0.3.RELEASE
2.1.1.RELEASE
diff --git a/springboot-plugin-framework/pom.xml b/springboot-plugin-framework/pom.xml
index 14290931bcd17f3af2160312052c72f1f217c826..da29449ba45ac6cd072a2b2063df06fa1249b904 100644
--- a/springboot-plugin-framework/pom.xml
+++ b/springboot-plugin-framework/pom.xml
@@ -13,7 +13,7 @@
com.gitee.starblues
springboot-plugin-framework
jar
- 2.4.5-RELEASE
+ 2.4.6-RELEASE
spring boot 插件式开发集成包
diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/SpringBeanRegister.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/SpringBeanRegister.java
index 3d59a1bc1d8c0e0f9bb9fe1365dc199e79774d9f..2557254ec2090d501c4c03b64c5bc0820a695d8b 100644
--- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/SpringBeanRegister.java
+++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/SpringBeanRegister.java
@@ -3,6 +3,7 @@ package com.gitee.starblues.factory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.AnnotatedGenericBeanDefinition;
+import org.springframework.beans.factory.config.BeanDefinitionHolder;
import org.springframework.beans.factory.support.BeanNameGenerator;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.annotation.AnnotationBeanNameGenerator;
@@ -170,6 +171,22 @@ public class SpringBeanRegister {
}
}
+ /**
+ * 注册BeanDefinitionHolder
+ * @param definitionHolder BeanDefinitionHolder
+ */
+ public void registerBeanDefinition(BeanDefinitionHolder definitionHolder) {
+
+ String beanName = definitionHolder.getBeanName();
+ applicationContext.registerBeanDefinition(beanName, definitionHolder.getBeanDefinition());
+
+ String[] aliases = definitionHolder.getAliases();
+ if (aliases != null) {
+ for (String alias : aliases) {
+ applicationContext.registerAlias(beanName, alias);
+ }
+ }
+ }
/**
* 销毁单例
diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/PluginPipeApplicationContextProcessor.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/PluginPipeApplicationContextProcessor.java
index a64d1f13744e054a0343e4284cf7587935e007ab..cfbca03b196888d3e46380d5f514e6a019cfb899 100644
--- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/PluginPipeApplicationContextProcessor.java
+++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/PluginPipeApplicationContextProcessor.java
@@ -7,6 +7,7 @@ import com.gitee.starblues.factory.process.pipe.bean.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.AutoConfigurationPackages;
+import org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor;
import org.springframework.boot.context.properties.bind.Bindable;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericApplicationContext;
@@ -55,6 +56,7 @@ public class PluginPipeApplicationContextProcessor implements PluginPipeProcesso
}
ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
try {
+ registerMustDependencies(pluginApplicationContext, pluginRegistryInfo);
installPluginAutoConfiguration(pluginApplicationContext, pluginRegistryInfo);
pluginApplicationContext.refresh();
} finally {
@@ -76,6 +78,7 @@ public class PluginPipeApplicationContextProcessor implements PluginPipeProcesso
Set installAutoConfigClassString = pluginRegistryInfo.getPluginBinder()
.bind(PropertyKey.INSTALL_AUTO_CONFIG_CLASS, Bindable.setOf(String.class))
.orElseGet(()->null);
+
if(ObjectUtils.isEmpty(installAutoConfigClassString)){
return;
}
@@ -95,6 +98,20 @@ public class PluginPipeApplicationContextProcessor implements PluginPipeProcesso
}
}
+ /**
+ * 定义一些spring-boot中一些必要注册的依赖
+ * @param pluginApplicationContext pluginApplicationContext
+ * @param pluginRegistryInfo pluginRegistryInfo
+ */
+ private void registerMustDependencies(GenericApplicationContext pluginApplicationContext,
+ PluginRegistryInfo pluginRegistryInfo){
+ // 注册AutoConfigurationPackages, 用于插件可自动配置
+ AutoConfigurationPackages.register(pluginApplicationContext.getDefaultListableBeanFactory(),
+ pluginRegistryInfo.getBasePlugin().scanPackage());
+ // 注册 ConfigurationPropertiesBindingPostProcessor
+ ConfigurationPropertiesBindingPostProcessor.register(pluginApplicationContext);
+ }
+
@Override
public void unRegistry(PluginRegistryInfo pluginRegistryInfo) throws Exception {
diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/bean/ConfigFileBeanRegistrar.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/bean/ConfigFileBeanRegistrar.java
index 8206c2f1515efab40395d4dcde68cbcdd5a19729..912334d2dd00c417ce326a9e75b8cbb2241add28 100644
--- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/bean/ConfigFileBeanRegistrar.java
+++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/bean/ConfigFileBeanRegistrar.java
@@ -58,7 +58,10 @@ public class ConfigFileBeanRegistrar implements PluginBeanRegistrar {
if(configDefinition == null){
return;
}
- PluginConfigUtils.FileNamePack fileNamePack = PluginConfigUtils.getConfigFileName(configDefinition,
+ PluginConfigUtils.FileNamePack fileNamePack = PluginConfigUtils.getConfigFileName(
+ configDefinition.fileName(),
+ configDefinition.prodSuffix(),
+ configDefinition.devSuffix(),
integrationConfiguration.environment());
String fileName = PluginConfigUtils.joinConfigFileName(fileNamePack);
Object parseObject = null;
diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/bean/SpringBootConfigFileRegistrar.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/bean/SpringBootConfigFileRegistrar.java
index 52c8c6f71b3efaa9a02690f9bf26a586ca496497..cb8d65a671d5ae3ae4d0cd9c69af054991ac267a 100644
--- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/bean/SpringBootConfigFileRegistrar.java
+++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/factory/process/pipe/bean/SpringBootConfigFileRegistrar.java
@@ -121,7 +121,11 @@ public class SpringBootConfigFileRegistrar implements PluginBeanRegistrar{
return null;
}
RuntimeMode runtimeMode = pluginRegistryInfo.getPluginWrapper().getRuntimeMode();
- return PluginConfigUtils.getConfigFileName(configDefinition, runtimeMode);
+ return PluginConfigUtils.getConfigFileName(
+ configDefinition.fileName(),
+ configDefinition.prodSuffix(),
+ configDefinition.devSuffix(),
+ runtimeMode);
}
/**
diff --git a/springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/PluginConfigUtils.java b/springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/PluginConfigUtils.java
index 7b027e243394a874a285552076cfc1750078d2eb..b9d73888a215ff6a131e8832e7890e288df0ae49 100644
--- a/springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/PluginConfigUtils.java
+++ b/springboot-plugin-framework/src/main/java/com/gitee/starblues/utils/PluginConfigUtils.java
@@ -17,23 +17,26 @@ public class PluginConfigUtils {
/**
* 根据项目运行环境模式来获取配置文件名称
- * @param configDefinition 配置的注解
+ * @param fileName 文件名称
+ * @param prodSuffix 生产环境前缀
+ * @param devSuffix 开发环境前缀
* @param runtimeMode 运行模式
* @return 文件名称
*/
- public static FileNamePack getConfigFileName(ConfigDefinition configDefinition,
+ public static FileNamePack getConfigFileName(String fileName,
+ String prodSuffix,
+ String devSuffix,
RuntimeMode runtimeMode){
- String fileName = configDefinition.fileName();
if(StringUtils.isNullOrEmpty(fileName)){
return null;
}
String suffix = "";
if(runtimeMode == RuntimeMode.DEPLOYMENT){
// 生产环境
- suffix = configDefinition.prodSuffix();
+ suffix = prodSuffix;
} else if(runtimeMode == RuntimeMode.DEVELOPMENT){
// 开发环境
- suffix = configDefinition.devSuffix();
+ suffix = devSuffix;
}
return new FileNamePack(fileName, suffix);
@@ -47,6 +50,9 @@ public class PluginConfigUtils {
}
public static String joinConfigFileName(String fileName, String suffix){
+ if(StringUtils.isNullOrEmpty(fileName)){
+ return null;
+ }
String fileNamePrefix;
String fileNamePrefixSuffix;
@@ -61,7 +67,7 @@ public class PluginConfigUtils {
if(suffix == null){
suffix = "";
}
- if(!suffix.startsWith(DO)){
+ if(StringUtils.isNotNullOrEmpty(suffix) && !suffix.startsWith(DO)){
suffix = DO + suffix;
}
return fileNamePrefix + suffix + fileNamePrefixSuffix;
diff --git a/springboot-plugin-framework/src/test/java/com/gitee/starblues/utils/PluginConfigUtilsTest.java b/springboot-plugin-framework/src/test/java/com/gitee/starblues/utils/PluginConfigUtilsTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..e350ce7d80dc0261a112addb28b0a54b915e8841
--- /dev/null
+++ b/springboot-plugin-framework/src/test/java/com/gitee/starblues/utils/PluginConfigUtilsTest.java
@@ -0,0 +1,68 @@
+package com.gitee.starblues.utils;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.pf4j.RuntimeMode;
+
+/**
+ * @author starBlues
+ * @version 1.0
+ */
+public class PluginConfigUtilsTest {
+
+
+ @Test
+ public void testGetConfigFileName(){
+ String fileName = "fileName.yml";
+ String prod = "prod";
+ String dev = "dev";
+ PluginConfigUtils.FileNamePack configFileName = PluginConfigUtils.getConfigFileName(fileName,
+ prod, dev, RuntimeMode.DEPLOYMENT);
+ Assert.assertNotNull(configFileName);
+ Assert.assertEquals(fileName, configFileName.getSourceFileName());
+ Assert.assertEquals(prod, configFileName.getFileSuffix());
+
+ configFileName = PluginConfigUtils.getConfigFileName(fileName,
+ prod, dev, RuntimeMode.DEVELOPMENT);
+ Assert.assertNotNull(configFileName);
+ Assert.assertEquals(fileName, configFileName.getSourceFileName());
+ Assert.assertEquals(dev, configFileName.getFileSuffix());
+ }
+
+
+ @Test
+ public void testJoinConfigFileName_1(){
+ String fileName = "fileName.yml";
+ String suffix = "prod";
+ String joinConfigFileName = PluginConfigUtils.joinConfigFileName(fileName, suffix);
+ Assert.assertNotNull(joinConfigFileName);
+ Assert.assertEquals("fileName-prod.yml", joinConfigFileName);
+ }
+
+ @Test
+ public void testJoinConfigFileName_2(){
+ String fileName = "fileName.yml";
+ String suffix = "";
+ String joinConfigFileName = PluginConfigUtils.joinConfigFileName(fileName, suffix);
+ Assert.assertNotNull(joinConfigFileName);
+ Assert.assertEquals("fileName.yml", joinConfigFileName);
+ }
+
+ @Test
+ public void testJoinConfigFileName_3(){
+ String fileName = "fileName.yml";
+ String suffix = null;
+ String joinConfigFileName = PluginConfigUtils.joinConfigFileName(fileName, suffix);
+ Assert.assertNotNull(joinConfigFileName);
+ Assert.assertEquals("fileName.yml", joinConfigFileName);
+ }
+
+ @Test
+ public void testJoinConfigFileName_4(){
+ String fileName = null;
+ String suffix = null;
+ String joinConfigFileName = PluginConfigUtils.joinConfigFileName(fileName, suffix);
+ Assert.assertNull(joinConfigFileName);
+ }
+
+}