小编Lak*_*ani的帖子

如何在spring-boot中使用具有多个dbs的Mongodb Single实例

我有一种情况,我有多个客户端连接到我的应用程序,我想在同一个Mongo服务器中给每个客户端自己的"架构/数据库".

我的配置类:

@Configuration
public class MongoDbConfiguration {

@Bean
@Primary
public MongoDbFactory mongoDbFactory() throws UnknownHostException {
    return new MultiTenantMongoDbFactory();
}

@Bean
@Primary
public MongoTemplate mongoTemplate() throws UnknownHostException {
    return new MongoTemplate(mongoDbFactory());
}
}
Run Code Online (Sandbox Code Playgroud)

多租户Db工厂

public class MultiTenantMongoDbFactory extends SimpleMongoDbFactory {

public MultiTenantMongoDbFactory() throws UnknownHostException {
    super(getMongoClient(), TenantContext.getTenant());
}

@Override
public DB getDb() throws DataAccessException {
    String tenant = TenantContext.getTenant();
    return getDb(tenant);

}

private static MongoClient getMongoClient() {
    String tenant = TenantContext.getTenant();
    System.out.println("Database name in factory class :"+tenant);
    if (tenant.equalsIgnoreCase("ncet")) {
        MongoCredential …
Run Code Online (Sandbox Code Playgroud)

java spring mongodb spring-boot

5
推荐指数
1
解决办法
919
查看次数

如何使用Java8流将列表列表转换为单个列表

如何使用流转换以下代码而不使用每个循环.

  1. getAllSubjects()返回所有List和每个Subject List<Topic>.所有列表应合并为List<Topic>.
  2. 需要得到Map<id,topicName>List<Topic>

对象模型:

Subject
  id,....
  List<Topic>
Topic
  id,name

public Map<String, String> getSubjectIdAndName(final String subjectId) {

    List<Subject> list = getAllSubjects(); // api method returns all subjects
    //NEEDS TO IMPROVE CODE USING STREAMS
    list = list.stream().filter(e -> e.getId().equals(subjectId)).collect(Collectors.toList());
    List<Topic> topicList = new ArrayList<>();
    for (Subject s : list) {
        List<Topic> tlist = s.getTopics();
        topicList.addAll(tlist);
    }
    return topicList.stream().collect(Collectors.toMap(Topic::getId, Topic::getName));

}
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

5
推荐指数
1
解决办法
2163
查看次数

在Java8中将Map &lt;String,String&gt;转换为List &lt;Object&gt;

我有返回的API,Map<String,String>需要将其转换为DTO。

 SubjectIdAndNameDTO (id, name constructor args)
           id
           name
Run Code Online (Sandbox Code Playgroud)

当前的实现使用传统的for循环和Map.EnterSet。我如何使用Java8的功能来简单地执行以下代码。

 Map<String, String> map = getSubjectIdAndNameMap();          

 // How can this code can be improved by using Java8 Stream and method references

 List<SubjectIdAndNameDTO> subIdNameDTOList = new ArrayList<>();

 for (Entry<String, String> keyset : map.entrySet()) {
        SubjectIdAndNameDTO subjectIdNameDTO = 
                 new SubjectIdAndNameDTO(keyset.getKey(), keyset.getValue());
        subIdNameDTOList.add(subjectIdNameDTO);
 }
Run Code Online (Sandbox Code Playgroud)

java-8 java-stream

1
推荐指数
1
解决办法
3673
查看次数

标签 统计

java ×2

java-8 ×2

java-stream ×2

mongodb ×1

spring ×1

spring-boot ×1