Hibernate сущность AutoWire - PullRequest
       8

Hibernate сущность AutoWire

8 голосов
/ 08 апреля 2011

Подскажите, пожалуйста, как мне включить автоматическое подключение Spring для объектов Hibernate?

Допустим, у меня есть сущность, и я хотел бы, чтобы там был отправитель почты:

@Entity
public class EmailActivity extends Activity {
    @Autowired @Transient
    private JavaMailSender javaMailSender;

    ...
}

Есть ли лучший способ, чем делать

AutowireCapableBeanFactory.autowireBean(
    getCurrentSession().get(Activity.class, id)
);

в моем DAO?

спасибо!

Ответы [ 3 ]

9 голосов
/ 08 апреля 2011

Это возможно!(И это стиль по умолчанию в Spring Roo!)

Все, что вам нужно, это добавить аннотацию @Configurable в вашу сущность.Активируйте аннотацию в конфигурации <context:spring-configured/> и используйте AspectJ-ткачество.

В Spring есть глава: 7.8.1 Использование AspectJ для зависимости, добавление объектов домена с помощью Spring

См. Также:

Кстати, я настоятельно рекомендую использовать AspectJ для компиляции времени компиляции,когда возможно.

2 голосов
/ 12 марта 2012

Похоже, что есть лучший способ, чем использование aspectj-weaving, а именно использование спящего режима LoadEventListener, объясненного в этого поста .

2 голосов
/ 08 апреля 2011

То, как я это делаю, - это использование AutowiredAnnotationBeanPostProcessor.

В конструкторе вашей сущности вы просите AutowiredAnnotationBeanPostProcessor ввести "this".

Мои комментарии в конце в этой статье подробно описывается техника. В статье рассказывается о похожем методе автоматического подключения объектов Hibernate.

...