Создайте собственный источник данных с параметрами spring

Я пытаюсь создать свой собственный DataSource из application-prod.properties .

Теперь я знаю, что мое application.properties читается, так как оно захватывает активный профиль prod (отображается в консоли)

В моем application-prod.properties меня есть следующее:

 jdbc.url=jdbc:postgresql://localhost:5432/myDb jdbc.username=root jdbc.password=root jdbc.driverClassName=org.postgresql.Driver 

Теперь, если я изменю префикс, моя консоль выдает ошибку времени компиляции. Could not resolve Spring property placholder что имеет смысл. Это также показывает, что компилятор фактически проверяет, существует ли @Value в файле properties .

 @Component open class BaseDAO( //@Value("\${jdbc.url}") private val url: String, //@Value("\${jdbc.username}") private val username: String, //@Value("\${jdbc.password}") private val password: String ) { @Value("\${jdbc.url}") lateinit open var url: String @Value("\${jdbc.username}") lateinit open var username: String @Value("\${jdbc.password}") lateinit open var password: String lateinit open public var datasource: DataSource; open fun getDs(): DataSource { return HikariCP.init(name="pool1", url = url, username = username, password = password) } } 

Теперь, как вы можете видеть, я попытался передать @Value в конструкторе. Но так как я extend BaseDAO во всех своих классах, он жаловался на то, что конструктор пуст ( class SomeDAO : BaseDAO() ).

Теперь проблема заключается в том, что мои url свойств, username и password не инициализируются.


Есть ли способ разрешить properties (без использования @Autowired для всех инициализаций / классов).

Единственное, что я хочу, это прочитать свойства из этого файла и использовать их, не ища «весенних лучших практик», а для решения

Имейте класс @Configuration, который содержит инициализацию для источника данных с этими свойствами, введенными в него, а затем автоматически подключайте этот компонент источника данных во всех ваших DAO. Таким образом, вам не нужно вводить эти значения свойств в DAO.

Intereting Posts
Как сортировать Kotlin MutableList <Int> Как получить доступ к объектам-членам объявления объекта в котлин Абонент RxJava2 PublishSubject не может получать элементы при вызове из нескольких потоков, используя SingleScheduler API не работает внутри Anko Async многие списки и каждый из них содержит разные объекты в Котлине Ошибка DataBinding в android Spinner Не удалось обновить значение параметра параметра метода Котлин Kotlin: Функции более высокого порядка для подсчета количества вхождений в List? Ожидаемый ресурс идентификатора типа Spring Boot: Boot Run не может добавить addResources = true Получить запись с максимальным значением с карты в Котлин Убедитесь, что класс реализует интерфейс. Котлин Kotlin: для диапазона циклов должен быть метод 'iterator () Изменить значение nullability параметра переопределенной функции в kotlin Встроенный сеттер или Нет для создания неиспользуемого сеттера в Котлине?