Java 如何在构建期间处理依赖关系

Java 如何在构建期间处理依赖关系,java,Java,我相信这是一部经典之作,应该有一个设计模式,但除了依赖模式和德米特定律之外,我真的看不到全局: 要拥有一个良好的可测试且灵活的应用程序,我希望: 在施工期间,只需在我的应用程序中输入一个条目 将配置加载/解析一次并移交到此入口点 让此入口点实例化和配置所有依赖项,然后将其编排到体系结构中 然后让一切进入运行时 约束条件: 尽可能少的单身,最好不要 只有入口点知道配置,所以很容易测试依赖项 一切(所有依赖项)都应该易于测试 尽可能少的仅用于测试的暴露方法 (不起作用)例如: 我的问题:模板是什

我相信这是一部经典之作,应该有一个设计模式,但除了依赖模式和德米特定律之外,我真的看不到全局:

要拥有一个良好的可测试且灵活的应用程序,我希望:

  • 在施工期间,只需在我的应用程序中输入一个条目
  • 将配置加载/解析一次并移交到此入口点
  • 让此入口点实例化和配置所有依赖项,然后将其编排到体系结构中
  • 然后让一切进入运行时
  • 约束条件:

    • 尽可能少的单身,最好不要
    • 只有入口点知道配置,所以很容易测试依赖项
    • 一切(所有依赖项)都应该易于测试
    • 尽可能少的仅用于测试的暴露方法
    (不起作用)例如:


    我的问题:模板是什么样的?

    您能定义构建时间吗?构建时间是应用程序启动的初始时刻(例如从命令行),直到所有依赖项/实例完全初始化,系统可以操作/接受请求/…@fge请提供一个工作示例。
    // Main entrypoint
    public App(Config config) {
        Dep1 dep1 = new Dep1(config.getDep1Conf());
        Dep2 dep2 = new Dep2(config.getDep2Conf());
        Dep3 dep3 = new Dep3(config.getDep3Conf());
        Dep4 dep4 = new Dep4(config.getDep4Conf());
        :
    
        this(dep1, dep2, dep3, dep4);
    }
    
    // Entry point for easy testing
    public App(Dep1 dep1, Dep2 dep2, Dep3 dep3, Dep4 dep4) {
        this.dep5 = Dep1.newInstance(Dep2);
        this.dep3 = dep3;
        this.dep4 = dep4;
        :
    }