为什么服务、控制器或存储库必须有一个接口,因为只有 1 个类实现了它们?
第二个
为什么是弹簧命名约定。
接口:ABCService 具体类:ABCServiceImpl ..
是否应该使用以下命名转换(eclipse ctr-shift-r)对用户更友好
接口:IABCServices 具体类:ABCService
为什么服务、控制器或存储库必须有一个接口,因为只有 1 个类实现了它们?
第二个
为什么是弹簧命名约定。
接口:ABCService 具体类:ABCServiceImpl ..
是否应该使用以下命名转换(eclipse ctr-shift-r)对用户更友好
接口:IABCServices 具体类:ABCService
1)默认的东西@Transactional
是使用JDK Proxies实现的。为了让 Spring 在运行时创建 JDK 代理,必须有一个接口来实现。你不能代理一个类。如果您切换到使用CGLib 代理,则不需要这些接口。
2)这只是惯例,除了第一个开始这样做的人之外,谁能真正告诉我们为什么?:)IABCServices
命名主要用于微软平台。为什么我们骆驼案例属性和大写类。
可以提出一个哲学论点,即如果接口是事物的真正定义,那么它应该有一个“干净”的名称。为什么项目的“根定义”上有标记?特定于平台/特定于实现的项目应该是带有标记名称的项目。
针对您的第一个问题,这三种组件类型不一定需要实现接口。在 spring webmvc 中,控制器通常不实现任何接口。如果您确实使用了一个接口并且有一个或多个具体类实现它们,那么您可以通过配置(称为依赖注入)将您的应用程序组件连接在一起。当您想将一种类型的 impl 用于一个目的(例如,您的生产 Web 应用程序),但您想将另一种类型的 impl 用于另一个目的(例如,使用模拟进行测试)时,这很有用。