#first DB
integration.datasource.jdbc-url=jdbc:sqlserver://localhost:port1/my_sample_schema1
integration.datasource.username=username
integration.datasource.password=password
integration.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
integration.jpa.database-platform=org.hibernate.dialect.SQLServer2012Dialect
integration.jpa.show-sql=true
#second DB
spring.datasource.jdbc-url=jdbc:sqlserver://localhost:port2/my_sample_schema2
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.platform=org.hibernate.dialect.SQLServer2012Dialect
spring.jpa.show-sql=true
@Configuration
public class DBConfig {
@Primary
@Bean(name = "integrationDataSource")
@ConfigurationProperties(prefix = "integration.datasource")
public DataSource integrationDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "mainDataSource")
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource mainDataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Autowired
@Bean(name = "integrationJdbcTemplate")
public JdbcTemplate integrationJdbcTemplate(@Qualifier("integrationDataSource") DataSource integrationDataSource) {
return new JdbcTemplate(integrationDataSource);
}
@Bean(name ="mainJdbcTemplate")
@Autowired
public JdbcTemplate mainJdbcTemplate(@Qualifier("mainDataSource") DataSource mainDataSource) {
return new JdbcTemplate(mainDataSource);
}
}
sampleClass.java
@Slf4j
@Component
public class SampleClass{
@Autowired
private JdbcTemplate mainJdbcTemplate;
@Autowired
@Qualifier("integrationJdbcTemplate")
private static JdbcTemplate integrationTemplate;
public static final String SELECT_QUERY = "select * from tableA";
public List<SampleDto> getDBData(SampleDto fileData) {
List<SampleDto> data = null;
try {
data = integrationTemplate.query(
SampleClass.SELECT_QUERY, new Object[] { param1, param2 },
new SampleDataMapper());
} catch (DataAccessException e) {
log.error(e.getMessage(), e);
}
return data;
}
}
在sampleClass.java am中,将integrationTemplate作为null。为什么会这样?mainJdbcTemplate正在工作。但是integrationTemplate变为null,无法导出查询。
问题是您有一个@autowired
的静态
字段
在@autowired
中,字段是在bean构造之后,在调用任何配置方法之前注入的。阅读这里以获得更多关于Ioc和Bean注入的信息。
删除静态
:
@Autowired
@Qualifier("integrationJdbcTemplate")
private JdbcTemplate integrationTemplate;
private static JdbcTemplate integrationTemplate;
@Autowired
public void setIntegrationJdbcTemplate(JdbcTemplate integrationTemplate){
SampleClass.integrationTemplate = integrationTemplate;
}
@Autowired
private JdbcTemplate integrationJdbcTemplate;
我想在Spring Boot项目中注入一个特定的。对于多个配置,我尝试遵循以下示例:http://spring.io/blog/2014/05/27/spring-boot-1-1-0-M2-available-now 我的代码确实会编译和运行,但只会考虑带有注释的数据源,不管我在类中将什么作为。我的相关代码如下: 我做了一个快速的服务来尝试它: :
我正在尝试使用两个数据源与我的SpringBoot应用程序,但无法获得第二个数据源自动连接。我尝试过很多事情,但这是我最接近的一次: 我的Yaml文件: 这是我到目前为止最接近的一次。我之所以说它是最接近的,是因为如果我删除@qualifier,那么我的两个dao方法实际上都可以工作,假设SECOND_SELECT语句对于我的DB1是有效的SQL语句。当我为非主datasouce输入@Qualif
问题内容: 根据Spring 文档,使用Spring JdbcTemplate的步骤如下: 然后, 基本上,JdbcTemplate是使用数据源的setter在Component类内部创建的。 这样做有什么问题,因此应用程序中只有一个jdbcTemplate实例吗? 然后将jdbcTemplate本身直接注入到组件中 有没有理由不能将jdbcTemplate本身直接注入到组件类中? SGB 问题答
问题内容: 我正在尝试在Spring项目中测试一个类。我想在测试类和dao类中进行尽可能多的更改,这样我就不必因为更改而重新测试所有类型的东西。 我正在使用的类具有通过以下实例化的类变量: 我想测试的方法使a 运行定义的SQL查询并将结果返回到列表。 我在测试用例中创建了以下内容,但不确定如何使用它。我可以使用Mockito使以下代码返回特定的字符串列表吗? 我可以以某种方式使用或其他命令来设置要
本文向大家介绍springboot + mybatis配置多数据源示例,包括了springboot + mybatis配置多数据源示例的使用技巧和注意事项,需要的朋友参考一下 在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一个数据源。 代码结构: 简要原理: 1)DatabaseType列出所有的数据源的key---key 2)DatabaseContextHolder是一个线
是否可以将多个数据源声明到WebSphere Liberty Profileserver.xml?有什么例子吗? 我尝试这样做,但我只能看到一个。当查找第二个时,我收到一条错误消息,提示找不到jndi名称。 我的server.xml: 以及网络中的定义.xml: 在jconsole看来,我只能看到http://i.stack.imgur.com/euN8e.jpg的DSPB 怎么了? 因此,ibm