Spring:必须服务或控制器或存储库都有一个接口

时间:2013-10-02 23:17:32

标签: spring

为什么Service,Controller或Repository必须有一个接口,因为只有一个类实现它们?

2ndly

为什么是Spring命名约定。

接口:ABCService 具体类:ABCServiceImpl ..

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

接口:IABCServices 具体类:ABCService

2 个答案:

答案 0 :(得分:2)

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

2)这只是惯例,但是第一次开始这样做的人能真正告诉我们原因吗? :) IABCServices命名主要用于Microsoft平台。我们为什么要使用案例属性和大写类。

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

答案 1 :(得分:0)

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