Доступ к БД через JPA в Wicket IResource?

Я хочу реализовать DynamicImageResource который будет установлен в приложении Wicket 6.7/Spring 3.2/JPA 2. это DynamicImageResource должен извлечь информацию на основе входных параметров и создать ответ.

Вопрос: как я могу получить доступ к БД изнутри DynamicImageResource.getImageData(...)? Я не могу ввести @PersistenceContextenter code here или DAO через @SpringBean, Моим последним средством будет статический PersistenceContextFactory.

Есть идеи получше? Или лучшие практики?

2 ответа

Решение

Так как Wicket управляет созданием компонентов для вас, или вы вручную создаете объекты с помощью их соответствующих конструкторов, механизмы внедрения не могут работать из коробки (объект, при вызове конструктора вручную, не управляется вашим контейнером).

Wicket предоставляет встроенную инъекцию для Компонента через наследование, волшебство позади - вызов Wicket componentInstanciationListeners, Для каждого неуправляемого класса, не унаследованного от включенного внедрения, вы должны вручную инициировать инъекцию вашего компонента.

Как указано в комментарии, вы должны позвонить Injector.get().inject(this); в вашем конструкторе, чтобы он работал.

Чтобы завершить все это, я пройду мимо PersistenceContextBridge Весенняя фасоль здесь. Оборачивает EntityManager, который будет введен через @PersistenceContext, Используя аннотацию Lombok @Delegate все вызовы бина будут переданы EntityManager,

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import lombok.Delegate;
import org.springframework.stereotype.Service;

@Service
public class EntityManagerBridge implements EntityManager {
    @Delegate
    @PersistenceContext
    private EntityManager em;
}

Теперь все, что мне нужно сделать в моем компоненте Wicket - это ввести EntityManagerBridge как @SpringBean:

@SpringBean
private EntityManager em; // inject EntityManagerBridge (implements EntityManager)

public MyFancyResource() {
    Injector.get().inject(this); // enable Spring injection for
}
Другие вопросы по тегам