Emm*_*ard 4 java spring spring-boot
Spring/SpringBoot 粉丝/专家大家好,
\n希望你\xe2\x80\x99一切顺利。我\xe2\x80\x99已经解决这个问题有一段时间了,我想我\xe2\x80\x99d向spring/springboot专家询问他们对此的意见和经验。它\xe2\x80\x99是关于接口的,因为它与它在springboot中的使用有关。
\n首先我要说的是;从 Java 或软件工程的角度来看,我理解并清楚接口的使用或目的,它们是契约。
\n因此,从 springboot 作为 FRAMEWORK/library 的角度来看,它在框架源代码中是有意义的。
\n现在,从 springboot 作为应用程序我看到了每个服务类(@Service)都有一个相应接口的情况:
\npublic interface MyService {} \npublic class MyServiceImpl implement MyService {}\nRun Code Online (Sandbox Code Playgroud)\n99.99% 的情况下,这些接口永远不会被其他任何东西实现。为什么这在 springboot 中变得如此流行,每个服务类都有一个相应的接口,尽管没有其他东西可以实现这些接口?
\n对我来说,这似乎会带来更多的复杂性和需要维护的代码,但没有明显的好处。请注意,I\xe2\x80\x99m 仅严格指@Service类接口。
这样做是好的做法吗?这里有没有我\xe2\x80\x99m 缺少的东西。请问您对此的经验和想法是什么?
\n先感谢您!
\n这种模式确实在很多教程和在线资源中被大量使用,但我认为它已经过时了。回到 XML 时代,还没有配置类之类的东西,因此配置 bean 的主要方法是 XML 条目,并为协作者提供公共 setter。由于您不想在 API 中公开这一点,因此拥有一个声明您的公共 API 的接口以及处理它的实现是有意义的。
对于现代的 Spring,这种世界观已经完全过时了,我们这边当然也没有强烈的愿望建立这样的范式。构造函数注入现在已经成为常态,因此,接口与其唯一实现之间的分离并不是很有用。
有人可能会争辩说,他们不希望任何 Spring 注释出现在公共 API 上,因此这仍然是一种用途。也就是说,如果您使用构造注入和显式 bean 注册,则不需要任何依赖注入的注释。如果您对此有强烈的感受并使用事务或缓存等其他方面,那么如果您想从公共 API 中隐藏这些注释,则必须创建一个接口。
| 归档时间: |
|
| 查看次数: |
1663 次 |
| 最近记录: |