gpt4 book ai didi

java - 为什么 Java 框架不强制使用接口(interface)?

转载 作者:行者123 更新时间:2023-11-29 03:54:18 27 4
gpt4 key购买 nike

我只是想知道,为什么没有用于 Spring Bean 或 EJB Bean(或 OSGi 服务)的接口(interface)?我知道没有必要这样做,因为框架可以使用反射 API 来调用方法,但如果改用接口(interface),错误不是会更少吗?

例如,为什么没有 OSGi 组件的接口(interface),如下所示:

interface OSGIComponent {
void activate(BundleContext context);
...
}

最佳答案

在使用 Spring 的情况下,您不必实现特定于 Spring 的接口(interface)即可在您的代码中使用 Spring。这实际上被视为一个优势:它可以防止您的代码绑定(bind)到 Spring,从而使其更具可移植性。

这并不是说您不能实现特定于 Spring 的接口(interface)。我想到的一个例子(没有双关语意)是 InitializingBean ;这定义了一个方法,afterPropertiesSet() ,它在 Spring 实例化您的 bean 并设置其所有属性后被调用(顾名思义)。

因此通常有特定于框架的接口(interface)和类可供您使用;您必须在保持代码可移植性和利用框架提供的有用内容之间取得平衡。

您举了一个 OSGi 组件的例子,它可以实现一个 OSGIComponent 接口(interface)。 Spring 实际上有一个接口(interface),您的类可以实现该接口(interface)以传递对包含 Spring 上下文的引用:ApplicationContextAware .不过,通常情况下,您不需要使用这些特定于框架的接口(interface)。如果您的代码只关注实际的业务逻辑,而不是框架如何实例化对象、将对象连接在一起等细节,通常会更容易理解。

关于java - 为什么 Java 框架不强制使用接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7221407/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com