Jos*_* M. 5 java spring dependency-injection
有没有办法(现有框架)在 Java 中配置 DI 而不必向它们“不属于”的类添加注释?
在我的研究中,看起来要完成构造函数注入,我们需要在构造函数中添加一些注释,如下所示:
@Inject // or @Autowired for Spring Boot
public MyInjectedClass(IThing1 thing1, IThing2 thing2) { ... }
Run Code Online (Sandbox Code Playgroud)
Spring Boot 还建议添加@Service到实现中,以便将它们注册到 DI 以进行注入。
添加这些注释会将 DI 带入注入的类(MyInjectedClass以及任何控制器、服务实现等)。这些类不应该有 DI 的概念,它们应该只得到它们在构造函数中要求的东西,而不用关心它们是如何到达那里的。
我知道你可以@Configuration在 Spring Boot 中使用该属性,但这仍然感觉不是很可配置或强大。有没有办法在没有注释的情况下使用 Java 来实现这一点?例如,像 SimpleInjector、AutoFac 等在 C# 中是如何工作的?(通过代码配置,不是 XML 或配置文件,也不是通过注释。)
如果没有,我很好奇为什么在 Java 和 C# 之间就 DI 采取了如此不同的方法。
更新我在评论中冒犯了某人,但这根本不是我的意图。我在问一个合理的问题。让我以另一种方式强调我的关注/问题。
假设我有以下包/类。我已经标记了每种类型的 DI 将出现的每种情况。“出现”是指这些标记的类/包与正在使用的 DI 框架有某种关系。
[A] : 基于注解的 DI(第 3 方包依赖)
[C] : 基于配置的 DI
数据访问[A]
逻辑[A]
服务[A] [C]
我希望这有助于说明我的真实问题。基于注释的 DI 的足迹扩展到堆栈的远端,而基于配置的 DI 仅用于最外层(入口)应用程序,组合根所在的位置。
| 归档时间: |
|
| 查看次数: |
667 次 |
| 最近记录: |