java - 如何制作包含 Spring Bean 的 jar,并在 SpringBoot 应用程序中使用它?

标签 java spring spring-boot plugins

我必须创建一个插件管理器来处理特定外部文件夹中包含的 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/

相关文章:

java - 未在 Spring Data JPA CrudRepository 中检索 OneToOne 关系对象

java - H2 未在我的 Spring Boot 应用程序中创建/更新表。我的实体有问题吗?

java - 使用 Spring Security 时 Bootstrap 不工作

java - 将 setter 方法中组件的 id 传递给 ManagedBean

java - 如何为 Java 应用程序构建 docker 容器

java - 在事务中绕过 Hibernate 缓存

spring - org.springframework.security.authentication.AuthenticationCredentialsNotFoundException : An Authentication object was not found in the SecurityContext

oop - Java “hello world” 程序中是否涉及对象?

java - Spring 在 RedirectView 之后处理 FlashAttributes

java - 使用不同 key 的其余调用中的多个 Multipart