Ошибка при работе с настройкой источника данных в spring boot

#java #spring #spring-boot #jdbctemplate #multiple-databases

#java #spring #spring-boot #jdbctemplate #несколько баз данных

Вопрос:

Я хочу настроить две базы данных в одном приложении spring boot, и сначала я пытаюсь использовать одну, но получаю ошибку.

 
@Configuration
public class DatabaseConfiguration {
    @Bean(name = "user")
    @ConfigurationProperties(prefix = "spring.user")
    public DataSource createProductServiceDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "jdbcuser")
    @Autowired
    public JdbcTemplate createJdbcTemplate_ProductService(@Qualifier("user") DataSource productServiceDS) {
        return new JdbcTemplate(productServiceDS);
    }
}
 
 dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
 
 spring.jpa.hibernate.ddl-auto=none
spring.user.url=jdbc:mysql://ip address:port/testdb
spring.user.username=username
spring.user.password=password
server.port=port
spring.user.driver-class-name=com.mysql.jdbc.Driver
 
 @RestController
@Qualifier("jdbcuser")
public class Failed_Status {


    @Autowired
        JdbcTemplate jdbcTemplate;
    @GetMapping("/select")
    public List<User> getList()
    {
        String sql="select * from Customerinfo where status like 'F%'";
        List<User> u=new ArrayList<User>();

        u= jdbcTemplate.query(sql,new UserRowMapper());
        System.out.println(u);
        return u;


    }

}
 
 Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded data source could be configured.

Reason: Failed to determine a suitable driver class


Action:

Consider the following:
    If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
 

Поскольку я новичок в Spring boot, я не могу найти, как работать с несколькими базами данных. Пожалуйста, дайте мне знать, какие изменения мне нужно сделать, чтобы успешно запустить программу?

Ответ №1:

Попробуйте пометить основной источник данных с @Primary помощью, чтобы функция автоконфигурации JDBC знала, как выбрать этот. Естественно, вам нужно будет использовать более одного источника данных, конечно:

 @Bean(name = "user")
@Primary
@ConfigurationProperties(prefix = "spring.user")
public DataSource createProductServiceDataSource() {
    return DataSourceBuilder.create().build();
}

@Bean(name = "user2")
@ConfigurationProperties(prefix = "spring.user2")
public DataSource createProductServiceDataSource2() {
    return DataSourceBuilder.create().build();
}
 

Комментарии:

1. Все еще сталкиваюсь с той же проблемой

2. попробуйте использовать префикс в вашем основном источнике данных как: spring.datasource.*

3. Поскольку я использую пакетное планирование, реализованный класс запуска заданий использует источник данных spring для фоновых действий. Поэтому мне нужно реализовать свою логику источника данных в качестве вторичного источника данных.