java - 从不同的模块 Autowiring bean

标签 java spring hibernate autowired

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

enter image description here

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

谢谢

最佳答案

Core Module 必须是必须在每个子上下文模块中设置的父 Spring 上下文。通过这种方式, Autowiring 就没有问题了

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

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

  1. 按照本文 Sharing a spring context across multiple Webapps 中的描述,将您的核心模块分发到每个模块的单独 jar 中
  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();
    

关于java - 从不同的模块 Autowiring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10666486/

相关文章:

java - Tomcat 7.0.25 SessionIdGenerator异常

java - URL 和用户的 Spring Security 配置

java - 部署在 websphere 上时 SOAP 调用失败,但在 tomcat 上运行正常

java - 命名查询中的 Hibernate 错误

java - 错误: Column 'col_name' not found with createSQLQuery

java - 在 Java 3D 中使用多种行为 - 丢失 "focus"

java - json 反序列化因格式有效而失败

java - JPQL 未给出结果

javascript - 如何将音频 blob(数据)文件从 JavaScript 发送到 Struts 2 中的 Java 服务器操作?

java - 数组多重赋值的意外输出