【问题标题】:Using Spring DI and Interface default method使用 Spring DI 和 Interface 默认方法
【发布时间】:2018-07-19 22:04:41
【问题描述】:

使用 Spring DI + 接口默认方法的方法是否安全,而不是经典的 Spring DI + 接口 + 类?

@Service
public interface MessagesService {

    default public void send() {

    }
}

public interface MessagesService {

    void send();
}

@Service
public class MessagesServiceImpl implements MessagesService {

    @Override
    public void send() {

    }
}

【问题讨论】:

    标签: java spring dependency-injection spring-ioc


    【解决方案1】:

    事实是你不能调用default方法,除非你提供了MessagesService的实现, 所以,这完全取决于你想在哪里放置send() 方法,即如果send() 算法对许多实现来说是通用的,那么你可以将send() 方法作为default 方法保留在接口内,否则它将非常具体到 MessagesServiceImpl 类。

    简单来说,与 Spring DI 无关

    我建议您阅读here 并了解default 方法的概念。

    【讨论】:

    • 在应用程序 MessagesService 接口中将只有一个实现 MessagesServiceImpl。
    • 如果您看到 send() 可以在未来的各种实现中重复使用,那么它可以是 default
    猜你喜欢
    • 1970-01-01
    • 2010-10-09
    • 2021-02-24
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多