6

我有一个大型应用程序,我想将其分解为可管理的模块。我正在使用 Spring 和 Jpa(Hibernate 作为提供者)。我提出了一个结构,其中我有一个包含所有实体和 dao 类的核心模块,其他模块使用关于持久性的核心模块,每个模块都有自己的一组服务类和控制器。

在此处输入图像描述

所有的 Jpa 和 spring 配置文件都在核心模块中。通过这种设置,我面临着在使用核心模块的模块中自动装配 dao bean 的问题。所以我的问题是,是否可以从其他模块中的核心模块自动装配 bean(或者可能使用跨模块的上下文)?如果有更好的方法,我也愿意接受有关结构的建议。

谢谢

4

1 回答 1

2

核心模块必须是必须在每个子上下文模块中设置的父 Spring 上下文。通过这种方式,自动装配没有问题

每个子上下文都可以从父级访问所有 bean,但请注意父级看不到子级

根据您配置应用程序的方式,您可以通过多种方式执行此操作,即

  1. 将您的核心模块在一个单独的 jar 中分发给每个模块,如本文所述在多个 Webapps 之间共享一个 spring 上下文
  2. 以编程方式,在每个子模块中都有您的核心 spring xml,您可以这样做:

    ClassPathXmlApplicationContext parentAppContext = new ClassPathXmlApplicationContext();
    parentAppContext.setConfigLocation("spring-core.xml"); // this is your core spring xml
    parentAppContext.refresh();
    ClassPathXmlApplicationContext moduleAppContext = new ClassPathXmlApplicationContext();
    moduleAppContext.setConfigLocation("others.xml");
    moduleAppContext.setParent(parentAppContext);
    moduleAppContext.refresh();
    
于 2012-05-19T15:32:02.493 回答