【发布时间】:2017-05-11 13:39:35
【问题描述】:
这更像是一个最佳实践类型的问题。
我已经听过几十次了:
a) 在 Spring 中自动装配时,最佳实践是自动装配接口“而不是”实现。
和..
b) 我还听说如果您只有“一个”实现,那么您不应该真正使用接口。
这是我的困境,我有一个接口“MyService”和一个实现MyServiceImpl。我在“MyServiceTest”中使用@Autowiredz MyService inMyController`。
我不需要其他实现。
显然这违反了规则 b),但自动装配实现将违反规则 a)。
所以我的问题是......我该怎么办?在这种情况下我是否应该选择完全不使用 Spring 而只使用 new 关键字实例化“MyService”?
【问题讨论】:
-
不要使用新关键字!如果您使用 new 关键字,则该服务不再处于 spring 的上下文中。
-
谢谢,那么在这种情况下最好的做法是什么?完全失去接口而只是自动装配实现?或者使用自动装配接口保持原样(即使我只有一个实现?)。
标签: java spring spring-mvc spring-boot autowired