我有这些档案,uat nyc,uat ldn。uat nyc数据源是oracle,uat ldn是mysql服务器。此配置在uat nyc应用程序中设置。yml和应用uat ldn。yml公司
我有以下配置类
@Profile({"uat-nyc", "uat-ldn"})
@Configuration
@EnableConfigurationPropeties(DatSourceProperties.class)
public class DataSourceConfig{
private DataSourceProperties properties; // server, username, password are set here
DataSource getDataSource(){// gets datasource based on profiles}
}
如果我的应用程序是用spring运行的。配置文件。活动:uat nyc,uat ldn是否会创建两个数据源?
一个配置来自uat nyc,另一个配置来自uat ldn
我在下面有一个函数,在这个函数中,我从第三方服务获取数据,并且根据“如果”或“纽约”,我需要持久化到“如果”或“纽约”数据库。如何使下面的“如果”部分动态?如何在下面的getProducts方法的“如果”部分中获取各自的数据源,即“如果”和“纽约”?
class Product{
String name;
int price;
int region;
}
@Component
Class ProductLoader{
JdbcTemplate jdbcTemplate;
public ProductLoader(DataSource ds){
jdbcTemplate = new JdbcTemplate(ds);
}
public void getProducts(){
List<Product> products = // rest service to get products
if(Product product : product){
if(product.getRegion().equals("LONDON"){
//write to LONDON datbase
// How can I get ldn datasource here?
}
if else(product.getRegion().equals("NewYork"){
//write to NewYork datbase
How can I get NewYork datasource here?
}
else{
// Unknown location
}
}
}
}
问题-
第一次,您需要告诉spring您将使用两个数据源,它们将由context spring管理。在@配置类上使用@Bean,然后使用@Autowired来声明spring管理的变量。
您可以使用@Qualifier来选择和限定您的bean
@Configuration
public class ConfigDataSource {
// example for dataSource
@Bean("dataSourceWithPropOnCode") // this name will qualify on @autowired
public DataSource dataSourceWithPropOnCode() {
return DataSourceBuilder.create().url("").password("").username("").driverClassName("").build();
}
@Bean("dataSourceWithPropFromProperties") // this name will qualify on @autowired
@ConfigurationProperties(prefix="spring.datasource.yourname-datasource") // this is the name for the prefix for datasource on .properties settings
public DataSource dataSourcePostgres() {
return DataSourceBuilder.create().build();
}
// example for jdbctemplate
@Bean("jdbcTemaplateWithPropFromProperties") // this name will qualify on @autowired
public JdbcTemplate jdbcTemplatePostgres(@Qualifier("dataSourceWithPropFromProperties") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean("jdbcTemaplateWithPropOnCode") // this name will qualify on @autowired
public JdbcTemplate jdbcTemplatePostgres(@Qualifier("dataSourceWithPropOnCode") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
属性设置
spring.datasource.yourname-datasource.url=...
spring.datasource.yourname-datasource.jdbcUrl=${spring.datasource.yourname-datasource}
spring.datasource.yourname-datasource.username=user
spring.datasource.yourname-datasource.password=pass
spring.datasource.yourname-datasource.driver-class-name=your.driver
在服务上使用
@Qualifier("jdbcTemaplateWithPropFromProperties")
@Autowired
private JdbcTemplate jdbcTemplate1;
@Qualifier("jdbcTemaplateWithPropOnCode")
@Autowired
private JdbcTemplate jdbcTemplate2;
@Qualifier("dataSourceWithPropOnCode")
@Autowired
private DataSource dataSource1;
private DataSource dataSource2;
public someContructorIfYouPrefer(@Qualifier("dataSourceWithPropFromProperties") @Autowired private DataSource dataSource2){
this.dataSource2 = dataSource2;
}
我有Kafka Streams java应用程序启动并运行。我试图使用KSQL创建简单的查询,并使用Kafka流来实现复杂的解决方案。我希望将KSQL和Kafka流作为Java应用程序运行。 我打算通过https://github.com/confluentinc/ksql/blob/master/ksqldb-examples/src/main/java/io/confluent/ksql/em
在我的应用程序中,我需要使用两个MongoDB数据库。我不知道如何在应用程序中添加2个MongoDB数据库。spring应用程序中的属性文件。 这是申请表。我的项目的属性文件, 但是我想为同一个项目使用另一个MongoDB数据库。如何在应用程序中添加新数据库。属性文件。
我正在将当前的应用程序迁移到多租户体系结构。由于只有一个代码库,我需要解决多个租户的问题。我使用的是单数据库、多模式的方法。每个租户将被分配一个单独的模式,其中元数据保存在默认模式中。 应用程序是用ASP构建的。NET MVC。我使用Dapper连接到我的SQL Server。我有50个函数,使用直接查询和存储过程调用数据库。当为每个租户初始化dapper时,是否有任何方法可以在不改变函数的情况下
我们正在使用Firebase实时数据库在flutter中开发一个应用程序,为不同的客户提供多种服务。我想为使用相同Firebase项目的每个客户拥有不同的数据库。由于Firebase在同一个项目中支持多个数据库,我相信可以使用Firebase Datase插件实现。 我试图设置对辅助数据库的引用,但我找不到一个稳定的突击队来更改此数据库的实例。如果您使用的是Java或其他使用Firebase的语言
问题内容: 我尝试使用angular-ui,并尝试注入$ stateProvider: html js(test / appModule.js) 堆栈跟踪 如果我删除带有注释的 $ stateProvider 和 ui.router ,那么一切都会起作用: 那么注入 $ stateProvider 的问题有解决的任何想法吗? PS 我尝试了ui示例,它可以工作,但是我无法弄清楚为什么我的不行。 问
我有一个调度程序,它每 4 小时轮询一次数据,并根据某些逻辑插入到表中。我还使用了注释,并且每次检查表中是否已存在数据。如果记录不存在,它将插入。当我是 SpringBoot 应用程序的多个实例时,每个实例都运行调度程序,并且某些数据并非全部重复。这意味着我发现该表包含重复记录。我插入的表是应用程序的现有表,很少有列没有使用唯一约束进行定义。请告诉我即使调度程序从多个实例运行,如何在数据库表中维护