SpringBoot无法加载DataSource

时间:2017-05-12 22:21:59

标签: java spring spring-boot

我正在尝试将数据源与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")

0 个答案:

没有答案