Spring @PostConstruct в @Repository dao и @Service, расширяющий дао - PullRequest
0 голосов
/ 21 февраля 2020

Мое приложение использует Spring Boot (последняя версия) и имеет зависимость, которая использует Spring (последняя версия). Зависимость имеет класс Dao, помеченный @Repository, который расширяет пару аннотированных абстрактных классов до JdbcDaoSupport . Кроме того, этот класс имеет @PostConstruct -аннотированный метод, который устанавливает источник данных.

Вторичный Service класс, аннотированный @Service, расширяется от Dao.

I Я обнаружил, что автопровод <Service instance>.getJdbcTemplate() - который происходит из вышеупомянутого суперкласса JdbcDaoSupport - дает null.

Если я опускаю аннотацию @Repository в Dao, jdbcTtemplate правильно набор. То же самое происходит, если я аннотирую это Dao с помощью @Service.

Часть от того факта, что я мог аннотировать их обоих без каких-либо конкретных c целей - весь код приложения является экспериментальным, хотя я Можно увидеть ситуацию, когда основной сервис расширяет хранилище (dao), в то время как более сложный может реализовать его логику c, делегирующую нескольким дао - это запрещено Spring или я что-то упустил?

UPDATE

Я добавил @PostConstruct метод к службе, и он не вызывается.

UPDATE / 2

Я попытался автоматически подключить дао внутри службы, но я получил то же самое результат; мне кажется, дело @Repository и PersistenceExceptionTranslationPostProcessor, когда последний заменяет мой бин на сгенерированный прокси ( GitHub, проблема ).

1 Ответ

0 голосов
/ 21 февраля 2020

Вы должны Autowire DAO в Сервис, а не продлить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...