Конфигурация базы данных h2 НЕ читается IOC SpringBoot - PullRequest
0 голосов
/ 14 апреля 2020

Я работаю над некоторым ПО C, для которого я использую базу данных h2 со следующими подробностями в файле application.properties:

#datasource
ds.pc.jdbcUrl=jdbc:h2:mem:test;MODE=oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
ds.pc.type=com.zaxxer.hikari.HikariDataSource
ds.pc.driver-class-name=org.h2.Driver
ds.pc.hikari.pool-name=pc-hikari-dbcp
ds.pc.hikari.maximum-pool-size=20
ds.pc.driver-type=thin
ds.pc.validation-query=Select 1 from dual
ds.pc.primary=true
ds.pc.username=sa
ds.pc.password=

spring.h2.console.enabled=true
spring.h2.console.path=/h2

Я определил свои bean-компоненты следующим образом:

@Configuration
public class AppConfig
{
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer()
    {
        return new PropertySourcesPlaceholderConfigurer();
    }

    @Bean
    public ConversionServiceFactoryBean conversionServiceFactoryBean()
    {
        return new ConversionServiceFactoryBean();
    }
    @Primary
    @Bean(name = "pcJdbcTemplate")
    public NamedParameterJdbcTemplate pCJdbcTemplate()
    {
        return new NamedParameterJdbcTemplate(pCDataSource());
    }

    @Primary
    @Bean
    @ConfigurationProperties(prefix = "ds.pc")
    public DataSource pCDataSource()
    {
        return DataSourceBuilder.create().build();
    }
}

Сбой, за исключением следующего:

java.lang.IllegalArgumentException: dataSource or dataSourceClassName or jdbcUrl is required.
    at com.zaxxer.hikari.HikariConfig.validate(HikariConfig.java:958) ~[HikariCP-3.4.2.jar:?]
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:109) ~[HikariCP-3.4.2.jar:?]
    at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) ~[spring-jdbc-5.2.4.RELEASE.jar:5.2.4.RELEASE]

Но когда я жестко кодирую свойства источника данных, как показано ниже, это работает:

    @Primary
    @Bean 
    public DataSource pCDataSource() 
    {
        HikariConfig hikariConfig = new HikariConfig();
        hikariConfig.setDriverClassName("org.h2.Driver");
        hikariConfig.setUsername("sa"); hikariConfig.setPassword("");
        hikariConfig.setJdbcUrl(
                "jdbc:h2:mem:test;MODE=oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE");
        return new HikariDataSource(hikariConfig); 
    }

Попробовал изменить свойства, как показано ниже:

ds.pc.jdbc-url=jdbc:h2:mem:test;MODE=oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
ds.pc.url=jdbc:h2:mem:test;MODE=oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE

Тем не менее, это не работает.

Что не так в моем файле application.properties, что он не читается?

Также я не могу увидеть h2 консоль на локальном хосте: 8080 / h2

1 Ответ

0 голосов
/ 14 апреля 2020

Проблема заключалась в том, что мой файл application.properties находился в папке с именем appConfig в каталоге src / main / resources.

Решение 1: Переименовать appConfig в config .

Go в разделе 2.3. Файлы свойств приложения в документации . Это объясняет, почему работает папка конфигурации.

Решение 2: Переместите файлы свойств непосредственно в src / main / resources

Глупый меня. Потратил довольно много часов, чтобы просто найти вещи, которые могут быть простыми.

...