我必须创建一个插件管理器来处理特定外部文件夹中包含的 jar 内的 Spring Bean,在我的例子中它是 externalPlugin。
文件夹externalPlugin位于我的类路径中。
我的问题是,当 jar 里有bean时,spring不会加载bean。 如果 jar 文件被提取到 /externalPlugin 文件夹中,Spring boot 会正确加载 bean。
是否有创建 jar 的特定方法,以便 spring 在 JAR 中正确加载 bean?或者甚至可以在外部 Jar 中加载 bean 吗?
感谢您的宝贵时间。
在我的 Spring Boot 应用程序中,为了加载外部 Bean,我使用注释
@ComponentScan({"com.app","com.plugin"})
要知道我的 bean 是否已加载,我使用并打印结果
String[] beanNames = ctx.getBeanNamesForType(AbstractPlugin.class);
外部插件 jar 的创建如下,使用 jar cvf 命令
/externalPlugin/pluginA.jar
|-META-INF/
| |-MANIFEST.mf
|
|-com/
|-plugin/
|- beanA1.class
|- beanA2.class
package com.plugin
@Component
public class BeanA1 extends AbstractPlugin{
}
package com.plugin
@Component
public class BeanA2 extends AbstractPlugin{
}
最佳答案
找到了我需要的http://www.codevomit.xyz/bootlog/blog/how-to-provide-spring-boot-fat-jar
并用 eclipse 专门生成 jar
关于java - 如何制作包含 Spring Bean 的 jar,并在 SpringBoot 应用程序中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55341067/