在我的项目中,我有以下db config类,其中我尝试为两个数据源之一配置多个jdbctemplate和一个命名的jdbc模板:
@Configuration
public class DatabaseConfiguration {
@Bean(name = "abcDataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource abcDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "jdbcABC")
@Autowired
public JdbcTemplate abcJdbcTemplate(@Qualifier("abcDataSource") DataSource datasource) {
return new JdbcTemplate(datasource);
}
@Bean(name = "namedJdbcABC")
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("abcDataSource") DataSource datasource) {
return new NamedParameterJdbcTemplate(datasource);
}
@Bean(name = "shDataSource")
@ConfigurationProperties(prefix = "spring.shdatasource")
public DataSource shDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "jdbcSh")
@Autowired
public JdbcTemplate shJdbcTemplate(@Qualifier("shDataSource") DataSource datasource) {
return new JdbcTemplate(datasource);
}
我似乎已经在我的yaml文件中正确配置了所有内容:
spring:
profiles:
active: dev
output.ansi.enabled: always
shdatasource:
driverClassName: oracle.jdbc.OracleDriver
url: jdbc:oracle:thin:@sh.database.url:1521:sid
username: test
password: test
datasource:
driverClassName: oracle.jdbc.OracleDriver
url: jdbc:oracle:thin:@abc.db.url:1521:oll
username: test
password: test
但我得到错误:
<代码>组织。springframework。豆。工厂UnsatisfiedDependencyException:创建名为“somedao”的bean时出错:通过字段“namedParameterJdbcTemplate”表示的未满足的依赖关系
起因:org.springframework.beans.BeanInstantiationException:未能实例化[javax.sql.DataSource]:工厂方法'abcDataSource'抛出异常;嵌套异常java.lang.IllegalStateException:未找到支持的DataSource类型
有人能告诉我我是不是弄错了什么吗?
这样做对我有用:
@Configuration
public class DatabaseConfiguration {
@Bean
@Primary
@ConfigurationProperties("spring.datasource")
public DataSourceProperties abcDataSourceProperties() {
return new DataSourceProperties();
}
@Bean(name = "abcDataSource")
@Primary
@ConfigurationProperties("spring.datasource")
public DataSource abcDataSource() {
return abcDataSourceProperties().initializeDataSourceBuilder().build();
}
@Bean
@ConfigurationProperties("spring.shDataSource")
public DataSourceProperties shDataSourceProperties() {
return new DataSourceProperties();
}
@Bean(name = "shDataSource")
@ConfigurationProperties("spring.shDataSource")
public DataSource shDataSource() {
return shDataSourceProperties().initializeDataSourceBuilder().build();
}
@Bean(name = "jdbcABC")
@DependsOn("abcDataSource")
public JdbcTemplate abcJdbcTemplate(@Qualifier("abcDataSource") DataSource abcDataSource) {
return new JdbcTemplate(abcDataSource);
}
@Bean(name = "namedJdbcABC")
@DependsOn("abcDataSource")
public NamedParameterJdbcTemplate namedParameterJdbcTemplate(@Qualifier("abcDataSource") DataSource abcDataSource) {
return new NamedParameterJdbcTemplate(abcDataSource);
}
@Bean(name = "jdbcSh")
@DependsOn("shDataSource")
public JdbcTemplate shJdbcTemplate(@Qualifier("shDataSource") DataSource shDataSource) {
return new JdbcTemplate(shDataSource);
}
}
然后,在我的主课上,我注入了我的豆子:
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
@Qualifier("abcDataSource")
DataSource abcDataSource;
@Autowired
@Qualifier("shDataSource")
DataSource shDataSource;
@Autowired
@Qualifier("jdbcABC")
JdbcTemplate abcJdbcTemplate;
@Autowired
@Qualifier("namedJdbcABC")
NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Autowired
@Qualifier("jdbcSh")
JdbcTemplate shJdbcTemplate;
@Override
public void run(String... strings) throws Exception {
System.out.println(abcDataSource.toString());
System.out.println(shDataSource.toString());
System.out.println(abcJdbcTemplate.toString());
System.out.println(namedParameterJdbcTemplate.toString());
System.out.println(shJdbcTemplate.toString());
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
它像预期的那样工作。
我试图使用Spring的类在同一应用程序上下文中配置多个JPA实体/事务管理器。 当加载上下文时,Spring很难自动连接bean,因为它们实现了相同的接口。 不幸的是,我使用的是遗留代码,因此无法直接自动连接bean并使用注释,这就是为什么我试图使用配置类来完成这项工作。 在声明中,是否有任何方法来限定应该注入哪个Bean?我认为使用直接方法调用就足够了,但它通常会导致以下错误: Nonuniq
问题内容: 我是Spring和Spring Boot的新手。如何配置和使用两个数据源? 例如,这是我对第一个数据源的需求: 应用类别 如何修改以添加另一个数据源?如何将其自动布线以供其他存储库使用? 问题答案:
如何配置和使用两个数据源? 例如,下面是第一个数据源: 应用程序.属性 应用程序类 如何修改以添加另一个数据源?我如何自动将其用于不同的存储库?
如何配置和使用两个数据源? 例如,以下是我对第一个数据源的了解: 应用属性 应用类 如何修改应用程序。是否要添加其他数据源?如何自动关联它以供其他存储库使用?
问题内容: 我是Spring和Spring Boot的新手。如何配置和使用两个数据源? 例如,这是我对第一个数据源的需求: 应用类别 如何修改以添加另一个数据源?如何将其自动布线以供其他存储库使用? 问题答案:
我在使用Spring ApplicationContext.xml文件中的JNDI配置dataSource bean时遇到了困难。 我的applicationContext.xml条目如下所示: 通过这些配置,我在Tomcat控制台上不断得到这样的错误: 由:javax.naming.NameNotFoundException:Name[jdbc/myapp]在此上下文中没有绑定。找不到[jdbc