java - spring mvc 中方法内部类的实例化与 Autowiring

标签 java spring

服务类和存储库类在 spring mvc 中是 Autowiring 的。但实体和 dto 类是在方法内实例化的。有什么具体原因吗?

@Autowired
TestService testService;

但对于方法实例化

public TestDto getData(){
    TestDto testDto = new TestDto();
    /*Some task*/
    return testDto;
}

为什么在编写代码时 dto 类没有 Autowiring 。提前致谢。

最佳答案

如果我编写您提供的代码,我也会像作者一样在方法中创建一个带有“new”的 DTO。我将解释原因,并希望它能提供一些要点(当然,您可以从代码的作者那里得到最终答案 :))。

所以说,Spring是一个“依赖”注入(inject)框架(我这里强调一个“依赖”二字)。这意味着注入(inject)非常适合依赖项(例如具有 @Autowire-d 服务的 Controller )。

现在 DTO 不再是依赖项。依赖通常意味着你想要使用一些契约(通过注入(inject)遵守这个契约的东西,读取依赖bean的接口(interface))。 DTO 没有功能契约,它们更像是由服务构造/传递给服务以封装数据的对象。所以我不把它们算作依赖项,因此不应注入(inject)它们。

从更广泛的意义上来说,使用 spring 并不意味着“不要使用新的关键字”——它只是意味着——“不要使用新的关键字来创建依赖项”,至少从我的角度来看是这样。

关于java - spring mvc 中方法内部类的实例化与 Autowiring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47843725/

相关文章:

java - 在spring mvc中如何在 Controller 中获取上下文路径

java - 在 DispatcherServlet 中未找到名称为 'HelloWeb' 的 URI [/HelloWeb/] 的 HTTP 请求映射?

java - 如何在java中关闭这个窗口?

java - 为什么 Autowiring 对于这个 Spring MVC String bean 属性不起作用?

java - 从 json 响应中解析一个值,其中大部分负载都是冗余的

java - 什么时候创建一个新变量来存储一个值而不是多次调用函数?

java - 未找到 bean NoSuchBeanDefinitionException

java - JScrollPane问题

JAVA jslider 的 setValue

java - 如何在 Hibernate 中将相关对象更改为另一个对象?