Spring + EntityManagerFactory + Hibernate Listeners + Injection

8

Ich habe eine einfache Frage. Es ist möglich, Abhängigkeitsinjektionen über @Ressource oder @Autowired dem Hibernate EventListener hinzuzufügen.

Ich werde Ihnen meine Entitymanagerfactory-Konfiguration zeigen:

%Vor%

Im Moment registriere ich meinen Listener über jpa.properties,

%Vor%

Aber in diesem Fall habe ich keine Frühlings-Injektion in meinem Zuhörer. Ich habe eine Lösung gefunden, aber benutze die sessionFactory und nicht den entitymanager oder kann ich die sessionfactory in meinem Kontext ändern? Hoffentlich hat jemand eine schöne Idee oder Lösung, um mit dieser Problematik umzugehen!

Vielen Dank!

    
moohkooh 10.11.2010, 11:17
quelle

1 Antwort

16

Wenn Sie SessionFactory verwendet haben, wäre dies die Konfiguration:

%Vor%

Aber da Sie JPA verwenden, müssen Sie leider AOP verwenden, wie in diesem Thread

Oder Sie können

  1. Speichern Sie den ApplicationContext in einer ThreadLocal- oder einer benutzerdefinierten Holder-Klasse und stellen Sie ihn über eine statische Methode
  2. zur Verfügung
  3. haben eine Basisklasse für Ihre Listener, etwa so:

Basisklasse:

%Vor%

Rufen Sie jetzt in Ihren lifycycle-Methoden wireMe() zuerst auf.

Aktualisierung:

Hier ist eine Beispielimplementierung von ContextHelper :

%Vor%

Verketten Sie es in Ihrer Spring Bean-Konfiguration wie folgt:

%Vor%     
Sean Patrick Floyd 10.11.2010, 11:43
quelle