2012-05-19 8 views
5

Ich habe eine große Anwendung, die ich in überschaubare Module aufteilen möchte. Ich benutze Frühling mit Jpa (Hibernate als Provider). Ich habe eine Struktur entwickelt, in der ich ein Kernmodul habe, das alle Entity- und Dao-Klassen enthält, und die anderen Module nutzen das Kernmodul in Bezug auf Persistenz, und jeder von ihnen wird seinen eigenen Satz von Serviceklassen und Controllern haben.Autowiring Beans von einem anderen Modul

enter image description here

Alle JPA und Feder sind Konfigurationsdateien im Kernmodul. Bei dieser Konfiguration stehe ich vor dem Problem, Dao-Bohnen in den Modulen zu autowiren, die das Kernmodul verwenden. Meine Frage ist also, ob es möglich ist, Beans vom Core-Modul in den anderen Modulen zu übertragen (oder wahrscheinlich einen Kontext über mehrere Module hinweg zu verwenden). Ich bin auch offen für Vorschläge bezüglich der Struktur, wenn es einen besseren Weg gibt, dies zu tun.

Dank

+0

Sind die Module Maven-Modul? –

Antwort

0

Die Core Module muss die Mutterfeder Kontext sein, die in jedem Kind des Kontextmodul gesetzt sein muss. Auf diese Weise gibt es keine ploblem mit autowiring

Jedes Kind Zusammenhang alle Bohnen von den Eltern erreichen, aber von diesem Elternteil bewusst sein, kann die Kinder nicht sehen

Je nachdem, wie Sie Ihre Anwendung konfiguriert haben, können Sie tue dies auf verschiedene Arten, ich. e.

  1. Verteilen Sie Ihre Kernmodul in einem separaten Gefäß zu jedem Modul, wie es in diesem Artikel Sharing a spring context across multiple Webapps
  2. Programatically beschrieben ist, Ihre Kernfeder xml in jedem Kind Modul, können Sie dies tun:

    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(); 
    
+0

Hallo, danke für die Antwort! Wie macht man ein Modul zu einem übergeordneten Kontext in einem anderen Modul? – Chappex

Verwandte Themen