我正在尝试将数据源与spring boot一起使用。 在开发中,应用程序将作为spring bootrun运行。但在Test / Prod中它将是外部tomcat。 所以在dev属性文件中我使用的是Datasource详细信息:
spring.community_ds.url=xxx
spring.community_ds.username=xxx
spring.community_ds.password=xxx
spring.community_ds.driver-class-name=oracle.jdbc.OracleDriver
spring.community_ds.driverClassName=oracle.jdbc.OracleDriver
在TEST / PROD中想要使用JNDI
spring.community_ds.jndi-name=xxxx
现在在代码中我试图让DataSource创建JdbcTemplate
@ConfigurationProperties(prefix = "spring.community_ds")
@Bean(name = "communityDb")
public DataSource communityDbDataSource() {
DataSource ds = DataSourceBuilder.create().build();
//Getting error db url is Null here
return ds;
}
@Bean(name = "communityDbTemplate")
public JdbcTemplate communityDbTemplate(@Qualifier("communityDb") DataSource communityDb) {
return new JdbcTemplate(communityDb);
}
我也尝试过:
@Configuration
public class DatabaseConfig {
@Autowired
Environment env;
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
@Primary
public DataSource getDataSource() {
DataSource dsp = DataSourceBuilder
.create().build();
System.out.println(env.getProperty("spring.community_ds.url"));
System.out.println(env.getProperty("spring.datasource.url"));
return dsp;
}
}
在这里我也看到env.getProperty正确打印数据,但是当我在DataSourceBuilder中调试时,url / username等为null。
首先我使用了gradle:
compile("org.springframework:spring-jdbc")
因此使用了一些错误:
compile("org.springframework.boot:spring-boot-starter-jdbc")