【问题标题】:Create own DataSource with spring properties使用 spring 属性创建自己的 DataSource
【发布时间】:2017-04-20 21:09:12
【问题描述】:

我正在尝试从application-prod.properties 创建我的自己的 DataSource

现在我知道我的 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。但是由于我在所有课程中都使用了extendBaseDAO,因此它抱怨构造函数为空(class SomeDAO : BaseDAO())。

现在出现的问题是我的属性urlusernamepassword 没有被初始化。


有没有办法解决properties(在所有初始化/类中不使用@Autowired。)

我唯一想要的是从该文件中读取属性并使用它们,而不是寻找'Spring 最佳实践',而是寻找解决方案

【问题讨论】:

    标签: java spring spring-mvc properties kotlin


    【解决方案1】:

    有一个 @Configuration 类,其中包含对 Datasource 的初始化,并将这些属性注入其中,然后在所有 DAO 中自动连接该数据源 bean。因此,您不必在 DAO 中注入这些属性值。

    【讨论】:

    • 但是这样能解决@Value没有设置变量的问题吗?
    猜你喜欢
    • 2010-12-15
    • 2013-06-19
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    相关资源
    最近更新 更多