gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:51:39 24 4
gpt4 key购买 nike

服务类和存储库类在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com