【发布时间】:2017-08-05 13:47:12
【问题描述】:
我是 Java Spring 框架的新手。在一些文章中,他们说 Spring 框架具有依赖注入。既然 Spring 是基于 Java 的,为什么不说 Java 语言具有依赖注入特性呢?这样的问题让我困惑了一段时间。除了 Java 和 Spring,我对 ASP.NET MVC 和 C# 也有这个问题。
以下是 Spring 依赖注入代码示例。如果我用Java创建一个小程序,它也可以工作,对吧?
春天:
package com.example.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DatabaseAccountService implements AccountService {
private final RiskAssessor riskAssessor;
@Autowired
public DatabaseAccountService(RiskAssessor riskAssessor) {
this.riskAssessor = riskAssessor;
}
// ...
}
Java:
public class DatabaseAccountService implements AccountService {
private final RiskAssessor riskAssessor;
public DatabaseAccountService(RiskAssessor riskAssessor) {
this.riskAssessor = riskAssessor;
}
// ...
}
更新(这是我困惑的地方):在纯Java中,我认为如果A类依赖于B类。我们创建A类和B类之后,我们只需要去A类,然后做'公共A(B b)'。除此之外,我们还应该做什么?
【问题讨论】:
-
Spring 是一个工具,它允许应用Dependency Injection 模式。与其说 Java 有 DI,不如说 DI 是 OOP 语言的一种模式。你可以在没有工具的情况下练习 DI,称为Pure DI。
-
@Steven 是否有任何 OOP 语言不支持 DI 模式?
-
@Steven 在我的第二个问题中,Java 版本的代码也可以,对吧?
-
我不知道。
-
DI 是关于如何组织代码的全部内容,不需要语言的“支持”,也不需要任何特殊的库。 Spring 所做的只是让 DI 比手动操作更容易。 (它也有自己的一系列问题,这就是为什么有些人选择不使用 Spring 而仍然保留 DI。)
标签: java spring spring-mvc dependency-injection