kek*_*mus 11 java spring interface
在我的 Spring 项目中,我有许多简单的服务来获取数据(只是一个简单的 CRUD)。启动这个项目的开发人员的设计是为每个服务创建实现,比如
public interface UserService
Run Code Online (Sandbox Code Playgroud)
然后实现像
public class UserServiceImpl implements UserService
Run Code Online (Sandbox Code Playgroud)
由于没有机会UserService有更多的实现,我真的厌倦了这些Impl后缀,而且我读得越多(例如这篇文章),我意识到我有生病的理由
上周我与一个团队的朋友进行了讨论,我与他分享了我的想法,但他的回答是“基本上你是对的,但 Spring 喜欢接口并且比类更喜欢与它们一起工作”。
不幸的是,我不是 Spring 的专家,但是我试图寻找一些论据,我无法找到答案,他是对的。
在 Spring 中使用这种方法来为每个小服务类提供接口是否有一些强有力的论据?
Rav*_*ekh 16
我已经浏览了这里的所有答案,但想添加更多关于代理的内容
AOP可以使用JDK代理或CGlib代理
如果类已经实现了接口,它将使用 JDK 代理(只要你有选择,就首选)。如果类没有实现接口,它将使用CGlib代理。
这不是必须的,也许是基于意见的,但您正在添加接口以实现未来服务的灵活性,
尽管您看不到真正的用法,但它将允许您在单元/集成测试中使用特定服务的不同实现
您可以添加测试实现而不是当前实现,并在执行测试时使用它而不是实际服务(例如通过使用不同的 Spring 配置文件)
正如 @Simulant 指出的那样,这可以使用模拟来完成
| 归档时间: |
|
| 查看次数: |
4098 次 |
| 最近记录: |