【发布时间】:2016-12-02 02:32:57
【问题描述】:
我有一个简单的 SpringBoot 应用程序,我想使用 AutoConfiguration 来配置 Tomcat jdbc 池数据源。
我正在使用这些 Spring 依赖项:
// Spring Boot
compile 'org.springframework.boot:spring-boot-starter-web:1.3.5.RELEASE'
compile 'org.springframework.boot:spring-boot-starter-jdbc:1.3.5.RELEASE'
这是我的 application.yml 文件中的数据源属性:
spring:
datasource:
url: jdbc:mysql://my.host/mydb
username: user
password: pwd
driver-class-name: com.mysql.jdbc.Driver
initialSize: 5
我确定属性正在加载,因为该应用正在获取其他值。
我将配置文件中的 bean 定义为:
@Bean(name="myDataSource")
@ConfigurationProperties(prefix="spring.datasource")
public DataSource getDataSource() {
DataSource dataSource = DataSourceBuilder.create().build()
return dataSource
}
然后我像这样将数据源注入我的 DAO:
@Slf4j
@Repository
class MyDAO {
@Autowired
DataSource dataSource
public void getFoo() {
log.info("DB URL: ${dataSource.getUrl()}")
}
}
如果我在 getDataSource() 方法中设置断点,DataSourceBuilder 将创建一个 DataSource 实例。但是,该对象的所有属性(如 URL、用户和密码)都为空。此外,当我调用 getFoo() 时,dataSource 变量为空。我尝试在我的 AppConfig 中注释掉 bean 定义。数据源仍然为空。有什么建议吗?
我查看了 Spring Boot 文档和我的 Spring book,但没有看到任何这样的示例。我看到了我自己创建数据源的示例。但我希望 Spring 的自动配置会自动将这些东西联系在一起。
提前感谢您提供的任何帮助。
【问题讨论】: