Hibernate entity autowire
Können Sie bitte beraten, wie kann ich nett zu aktivieren Frühjahr autowiring für Hibernate-Entitäten?
Sagen wir mal ich habe ein Unternehmen und möchte die E-mail-Absender gibt es:
@Entity
public class EmailActivity extends Activity {
@Autowired @Transient
private JavaMailSender javaMailSender;
...
}
Gibt es eine bessere Möglichkeit, als das zu tun
AutowireCapableBeanFactory.autowireBean(
getCurrentSession().get(Activity.class, id)
);
in meinem DAO?
Dank!
- Putting einen E-mail-Absender in eine Entität scheint wie eine seltsame Wahl. Können Sie beschreiben, ein wenig mehr darüber, warum Sie möchten, dass der Ansatz? Es ist offensichtlich nicht zu bestehen, die Instanz, die da gekennzeichnet ist vergänglich, und es ist nicht, weil man mit einem nicht-anämischen Muster wie active record (da Sie erwähnen, DAO). Warum nicht injizieren Sie die E-mail-Absender in einem manager - /service-Ebene mit einer Methode ausgesetzt zu übergeben, die entsprechende Aktivität Daten werden per E-Mail?
- Verwandte: techblog.bozho.net/?p=180
- Ich denke, dass mail-Absender ist eine Infrastruktur. Domain-Modells sollten nicht davon abhängen, Infrastruktur-code
- oh, come on guys, es ist nur ein Beispiel. Eigentlich meine EmailActivity ist keine Reale Person, es ist nur ein wrapper - (@Discriminator) über die Tätigkeit und sicher E-mail-Absender nicht in Db gespeichert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es möglich! (Und es ist der Standard-Stil in Spring Roo!)
Alle was Sie brauchen, ist zum hinzufügen von @Configurable Anmerkung zu Ihrer Person. Aktivieren Sie die Beschriftung in der Konfiguration
<context:spring-configured/>
und mithilfe von AspectJ weaving.Gibt es ein Kapitel in der Spring Referenz: 7.8.1 Verwendung von AspectJ um die Abhängigkeit zu injizieren domain objects mit Spring
Siehe auch:
BTW ich stark empfehlen die Verwendung von AspectJ compile-time-weaving, wenn möglich.
Die Art, wie ich es zu bedienen AutowiredAnnotationBeanPostProcessor.
In Ihre Unternehmens-Konstruktor Fragen Sie die AutowiredAnnotationBeanPostProcessor zu injizieren "diese".
Meine Kommentare am Ende der dieser Artikel details der Technik. Der Artikel berichtet von einer ähnlichen Methode des autowiring Hibernate-Entitäten.
Scheint es einen besseren Weg als die Verwendung von aspectj-weaving, nämlich die Verwendung einer hibernate -
LoadEventListener
, erklärt dieser Beitrag.