2

为什么服务、控制器或存储库必须有一个接口,因为只有 1 个类实现了它们?

第二个

为什么是弹簧命名约定。

接口:ABCService 具体类:ABCServiceImpl ..

是否应该使用以下命名转换(eclipse ctr-shift-r)对用户更友好

接口:IABCServices 具体类:ABCService

4

2 回答 2

2

1)默认的东西@Transactional是使用JDK Proxies实现的。为了让 Spring 在运行时创建 JDK 代理,必须有一个接口来实现。你不能代理一个类。如果您切换到使用CGLib 代理,则不需要这些接口。

2)这只是惯例,除了第一个开始这样做的人之外,谁能真正告诉我们为什么?:)IABCServices命名主要用于微软平台。为什么我们骆驼案例属性和大写类。

可以提出一个哲学论点,即如果接口是事物的真正定义,那么它应该有一个“干净”的名称。为什么项目的“根定义”上有标记?特定于平台/特定于实现的项目应该是带有标记名称的项目。

于 2013-10-02T23:22:47.823 回答
0

针对您的第一个问题,这三种组件类型不一定需要实现接口。在 spring webmvc 中,控制器通常不实现任何接口。如果您确实使用了一个接口并且有一个或多个具体类实现它们,那么您可以通过配置(称为依赖注入)将您的应用程序组件连接在一起。当您想将一种类型的 impl 用于一个目的(例如,您的生产 Web 应用程序),但您想将另一种类型的 impl 用于另一个目的(例如,使用模拟进行测试)时,这很有用。

于 2013-10-02T23:32:25.873 回答