从不同的模块自动装配bean

Cha*_*pex 6 java spring hibernate autowired

我有一个很大的应用程序,我想分解成可管理的模块.我使用spring和Jpa(Hibernate作为提供者).我想出了一个结构,其中我有一个包含所有实体和dao类的核心模块,其他模块使用核心模块来实现持久性,并且每个模块都有自己的一组服务类和控制器.

在此输入图像描述

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

谢谢

ric*_*nal 2

核心模块必须是必须在每个子上下文模块中设置的父 Spring 上下文。这样自动装配就没有问题了

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

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

  1. 将单独的 jar 中的核心模块分发到每个模块,如本文中所述在多个 Web 应用程序之间共享 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();
    
    Run Code Online (Sandbox Code Playgroud)