Обходной путь прост и элегантен.
Извлечение данных загрузки из базы данных в отдельный транзакционный метод в другом классе. Затем введите этот класс и используйте его в @PostConstruct
.
Так что вместо:
@Resource
private DataSource ds;
@PostConstruct
public void init() {
ds...
}
вы получите:
@Resource
private Dao dao;
@PostConstruct
public void init() {
dao.readSomeStuff();
}
Где Dao
имеет:
@Resource
private DataSource ds;
@Transactional
public Stuff readSomeStuff() {
ds...
}
Это вводит другой уровень косвенности, но извлечение DAO в отдельные классы может быть хорошей идеей, в зависимости от вашей архитектуры.