#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 для фоновых действий. Поэтому мне нужно реализовать свою логику источника данных в качестве вторичного источника данных.