J'essaye de créer mon propreDataSource
du application-prod.properties
.Créer propre DataSource avec des propriétés de ressort
Maintenant, je sais que mon application.properties
est lu, car il ne capte le prod
profil actif (indiqué dans la console)
Dans mon application-prod.properties
j'ai les suivantes:
jdbc.url=jdbc:postgresql://localhost:5432/myDb
jdbc.username=root
jdbc.password=root
jdbc.driverClassName=org.postgresql.Driver
Maintenant, si je change la préfixe, ma console lance une erreur de compilation Could not resolve Spring property placholder
qui a du sens. Cela montre également que le compilateur vérifie si le @Value
existe dans le fichier 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)
}
}
Maintenant, comme vous pouvez le voir, j'essayé passer le @Value
dans le constructeur. Mais puisque je extend
le BaseDAO
dans toutes mes classes, il s'est plaint du constructeur étant vide (class SomeDAO : BaseDAO()
).
Le problème qui se produit maintenant est que mes propriétés url
, username
et password
ne sont pas en cours d'initialisation.
est-il un moyen de résoudre le properties
(sans l'utilisation de @Autowired
sur tous les initialisations/classes.)
La seule chose que je veux est de lire les propriétés de ce fichier et les utiliser, non à la recherche d'« meilleures pratiques de printemps » mais pour une solution
Mais est-ce que cela résoudrait le problème que '@ Value' ne règle pas la variable? – Ivaro18