强制外部java(jar项目)库bean由Spring fabric管理



我有两个项目,第一个是spring-boot应用程序,第二个是java静态库项目,它不依赖于除java之外的任何其他东西。在过去,这两个项目是一个项目,但我将它们分开,因为它们代表两个不同的逻辑组件,并且java库也用于其他子项目。现在,由于静态库只是一个jar,我无法根据提供的接口名称实例化该jar的类,例如,如果我的接口位于路径:

edu.university.ServiceLayer.StudentInterface

我很容易做到:

Student object = (Student) applicationContext.getBean("StudentInterface");

这给了我学生对象

现在我想对外部java库做同样的操作。由于我从来没有这样做过,我的问题是,如果记住我想让这个库不依赖于除java之外的任何其他东西,那么最好的方法是什么。

在我的spring-boot项目中,为了做到这一点,我只需要用正确的artifcat(即@Component、@Repository@Service等)注释所选的bean,然后这些bean就会由spring结构自动管理。也就是说,我可以通过打印applicationContext的BeanDefinitionNames()来查看它们,即

String[] beanNames = applicationContext.getBeanDefinitionNames();

但这个技巧对外部jar不起作用。现在,这个星座的最佳折衷方案是什么,即shell,我真的把spring依赖项添加到我的jar java库中,或者有什么神奇的方法可以做到这一点,而不把这些依赖项添加在我的库中。同样,我的目标是允许spring管理外部库的选定bean,即我希望它们出现在:下

applicationContext.getBeanDefinitionNames()

有什么类似模式的方法可以用来实现这一点吗?

非常感谢你的想法。

这与Spring Integration完全无关。

此外,你还需要阅读更多的文档。

CLASSPATH中可用的任何类都可以实例化为Spring容器中的bean,例如

@Bean
public Foo foo() {
    return new Foo();
}

Foo在你的罐子里时。不需要为那些刻板印象注释修改它们。

顺便说一句,更清楚的是,你甚至可以为Java原生类创建bean:

@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public Date now() {
    return new Date();
}

最新更新