我正在使用Spring开发应用程序。我需要使用@Service
注释。我ServiceI
和ServiceImpl
这样ServiceImpl implements ServiceI
。我对应该在哪里保留@Service
注释感到困惑。
我应该用注释接口或实现@Service
吗?这两种方法有什么区别?
我从不将@Component
(或@Service
…)放在界面上,因为这会使界面无用。让我解释一下原因。
声明1:如果你有一个接口,那么你想将该接口用于注入点类型。
权利要求2:接口的目的是它定义可以由几种实现方式实现的协定。在另一侧,你有注射点(@Autowired
)。(IMHO)仅具有一个接口且只有一个实现该接口的类是无用的,并且违反了YAGNI。
事实:当你放:
@Component
(或@Service
,…)在界面上,那么你将获得和NoUniqueBeanDefinitionException
(或者你具有非常特殊的配置设置,包括环境,配置文件或限定符…)
结论:如果在接口上使用@Component
(或@Service
,…),则必须违反两个规则中的至少一个。因此,我认为将其放在@Component
接口级别上是没有用的(除了一些罕见的情况)。
我正在使用Spring开发一个应用程序。我需要使用注释。我有和,这样。这里我很困惑应该在哪里保留注释。 我应该用注释接口还是实现?这两种做法有何不同?
问题内容: 我正在使用来自包java.sql的接口连接 实际上,我虽然是一个Class,但是当我尝试查看源代码时却发现它是一个Interface。 在Connection接口的源代码中,每种方法只有一行,没有任何实现!! 是什么让这个界面正常工作? 要连接的数据库:MySql 连接源代码页:http : //www.docjar.com/html/api/java/sql/Connection.j
我查了Javadoc,什么也没有得到。我想知道这是怎么回事。 我找到了这个和这个,但这并不能消除我的疑虑。如果我漏了什么请告诉我。
问题内容: 来自代码标题的问题: 与 问题答案: 来自http://static.springsource.org/spring/docs/2.0.x/reference/transaction.html Spring团队的建议是,您只应使用注释对具体的类进行注释,而不是对接口进行注释。您当然可以将注释放置在接口(或接口方法)上,但这仅在您使用基于接口的代理时才能按预期使用。注解 未继承 的事实意
我有一个应用程序的体系结构:view->viewmodel->repository->Datasource 我的DataSource正在消费一个webservice然后接收Soap对象,我想将其转换为自定义Pojo对象。因此,通过使用RxJava,我通过以下流程调用datasource方法: 视图模型 存储库 数据源 然后我想知道应该在哪里转换datasource调用中接收到的SoapObject
问题内容: 放置注释的最佳做法是什么?我应该注释接口方法还是实现? 问题答案: 好问题。我一直把它放在实现中。也许是因为它是实现细节,而不是抽象。 你可能希望不同的实现具有不同的事务行为。 El Guapo指出,除此之外,在接口上使用代理策略还可能引发更多问题。