1

I am writing a framework on top of it where other teams develop applications.

I want to provide Dependency Injection as part of it. I am making developers uses JSR 330 annotations and my framework can work on DI.

Still i have the following problem

Developer need to write module if i use Guice, beans.xml if I use WELD. This couples specific DI with my developer app code. I want to switch underlying dependency injection in framework without touching any of the application code.

Is there anyway to do it?

4

2 回答 2

4

如果您严格遵守 JSR330 功能,则可以提供一个可供您提到的所有三个实现 DI 框架使用的框架 jar。要允许 CDI 扫描模块,您应该提供一个 bean.xml,但我不会称该代码具有侵入性。

如果您需要提供的不仅仅是 JSR330,比如模块、工厂、生产者方法、自动配置……您可以提供自定义扩展模块,因此您可以使用“myframework-core”来实现与实现无关的东西和“myframework-guice” " 最重要的是,它为 guice 等提供了帮助程序和模块。

于 2015-07-02T08:16:41.130 回答
0

我认为 JSR-330 没有足够的信息来说明系统如何启动以使其真正可切换。例如,如果您使用 Guice,您将需要创建一个 Injector。如果您使用的是 Spring,则需要使用它的 JavaConfig。如果您使用的是 HK2,您将需要使用居民发电机或使用模块。如果您使用 CDI,您只需要 beans.xml(在后来的 CDI 中您甚至不需要它),但您几乎肯定会发现您需要 CDI 的其他功能,例如 Producers。

由于这些原因,我认为 JSR-330 太小而无法移植

于 2015-07-02T16:00:50.853 回答