Spring:必须Service或Controller或Repository有一个接口(interface)

标签 spring

为什么服务、 Controller 或存储库必须有一个接口(interface),因为只有 1 个类实现它们?

第二次

为什么是spring命名约定。

接口(interface):ABCService 具体类:ABCServiceImpl ..

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

接口(interface):IABCServices 具体类:ABCService

最佳答案

1) 默认情况下,像 @Transactional 是使用 JDK Proxies 实现的。为了让 Spring 在运行时创建 JDK 代理,必须有一个要实现的接口(interface)。你不能代理一个类。如果您切换到使用 CGLib proxies ,那么接口(interface)就不是必需的。

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

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

关于Spring:必须Service或Controller或Repository有一个接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19148345/

相关文章:

java - 一对多同类spring data(hibernate)

java - 如何在 angularjs 中使用 $resource 来使用 Spring Restful Web 服务

java - 可反序列化异常: local class is not compatible cause of serialVersionID

java - 如何将类级别验证映射到特定字段?

spring - 如何使用 Spring Security 登录页面传递附加参数

java - Spring Batch 一次处理多个项目

java - Spring MVC 资源不映射

java - 如何在 Spring 启动期间强制实例化所有引用的 bean?

java - Spring 邮件支持 - 无主题

java - 无法在 logback.xml 中使用 Spring 属性占位符