Я пытаюсь создать свой собственный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
Теперь, если я изменю prefix, моя консоль генерирует ошибку времени компиляции 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
на всех инициализаций/классов.)
Единственное, что я хочу, чтобы прочитать свойства из этого файла и использовать их, не ищет «Весна лучшие практики» но для раствора
Но это устранит проблему, когда '@ Value' не устанавливает переменную? – Ivaro18