首页 > 解决方案 > 如何从外部目录中的 jar 创建 bean

问题描述

我有一个基本的 spring 应用程序,它只是加载一个 bean,就是这样。我知道在项目中我可以在一个类中使用注解@Component 将其标记为一个bean,spring 应用程序会找到它并采取相应的行动。

但是,我目前正在尝试将组件放入外部目录/Users/me/plugin.jar 中的 jar 即 plugin.jar 中。我不知道如何让 spring 在该 jar 中搜索带注释的类而不是本地包。这甚至可能吗?

我希望能够从 jar 中加载 bean,而不会将 jar 包含在类路径中,而是通过搜索 jar 的目录并根据其中的任何 Jar 动态创建 bean。

我已经使用 Java 反射和 URLClassLoader 从 jar 中动态加载类,但无法弄清楚如何在 Spring 中做同样的事情。非常感谢任何有关如何开始的帮助或指导。谢谢!

附加信息:spring 应用程序的设计目的是在运行时扫描指定目录中的任何 jar,如果找到 jar,它会从其中的一个类中创建一个 bean。我无法找到如何让 Spring 应用程序搜索扫描指定目录以查找要用作组件的 jar。我发现的所有内容都只是引用项目中的类。

标签: javaspring

解决方案


您可以创建一个配置,您可以在其中从外部 jar 启动所需的 bean。

 @Configuration
    public class AppConfig {

        @Bean
        public MyBean myBean() {
            return new YourExternalClassName();
        }

    }

推荐阅读