Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring:服务、控制器或存储库必须有接口吗_Spring - Fatal编程技术网

Spring:服务、控制器或存储库必须有接口吗

Spring:服务、控制器或存储库必须有接口吗,spring,Spring,为什么服务、控制器或存储库必须有一个接口,因为只有一个类实现它们 第二 为什么是spring命名约定 接口:ABCService 具体类别:ABCServiceImpl 使用以下命名对话(eclipse ctr-shift-r)是否应该更方便用户 接口:IABCServices 具体的类:ABCService1)是默认的,像@Transactional这样的东西是使用实现的。为了让Spring在运行时创建JDK代理,必须有一个接口来实现。不能代理类。如果切换到使用,则不需要这些接口 2) 这只

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

第二

为什么是spring命名约定

接口:ABCService 具体类别:ABCServiceImpl

使用以下命名对话(eclipse ctr-shift-r)是否应该更方便用户

接口:IABCServices 具体的类:ABCService

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

2) 这只是惯例,除了第一个开始做这件事的人,谁能真正告诉我们原因呢?:)
IABCServices
命名主要用于Microsoft平台。为什么我们使用驼峰式的大小写属性和大写的类


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

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