小编Sha*_*ank的帖子

如何在 Spring Batch 中使用 MongoItemReader 聚合查询

需求发生了一些变化,我必须在 setQuery() 中使用聚合查询而不是基本查询。这可能吗?请建议我该怎么做?我的聚合查询已准备就绪,但不确定如何在 Spring Batch 中使用它

public ItemReader<ProfileCollection> searchMongoItemReader() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {

        MongoItemReader<MyCollection> mongoItemReader = new MongoItemReader<>();
        mongoItemReader.setTemplate(myMongoTemplate);
        mongoItemReader.setCollection(myMongoCollection);

        mongoItemReader.setQuery(" Some Simple Query - Basic");

        mongoItemReader.setTargetType(MyCollection.class);
        Map<String, Sort.Direction> sort = new HashMap<>();
        sort.put("field4", Sort.Direction.ASC);
        mongoItemReader.setSort(sort);
        return mongoItemReader;

    }
Run Code Online (Sandbox Code Playgroud)

java mongodb spring-batch

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

IntelliJ:将私钥设置为环境变量不起作用(Spring boot项目)

我有一个 Spring Boot 项目,如果我使用私钥(多行文本),它工作得很好(这意味着密钥没有问题),但是当我尝试将其设置为 intellij 中的环境变量时,它显示

原因:属性“spring.cloud.config.server.git.privateKey”不是有效的私钥

我完全意识到这是由于新行字符而发生的。所以我尝试用 \n (作为文本)替换新行,例如

-----BEGIN RSA PRIVATE KEY-----\nline1\nline2.....\nlinen\n-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

但它也不起作用。

属性文件中的工作版本是:

privateKey: |
            -----BEGIN RSA PRIVATE KEY-----
           secret data....
            -----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

spring intellij-idea spring-boot private-key

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

如何为所有POJO应用程序类全局应用@JsonIgnoreProperties(value = {"id"})(jackson api)

我有多个类,对于所有这些类,我不希望id字段成为输出JSON字符串(序列化)的一部分.假设我有2节课

@JsonIgnoreProperties(value = { "id" })
public final class Person {
 private ObjectId id;
  //........
}

@JsonIgnoreProperties(value = { "id" })
public final class Address{
 private ObjectId id;
  //........
}
Run Code Online (Sandbox Code Playgroud)

现在我不想@JsonIgnoreProperties(value = { "id" })手动指定我的所有1000个类.有没有全球性的方法可以做,所以我可以将这部分应用于我的所有课程?非常类似于mapper.setSerializationInclusion(Include.NON_NULL)下面的方法?

public String serialize(T dataObject) throws IOException {
        ObjectMapper mapper = new ObjectMapper();   
        mapper.setSerializationInclusion(Include.NON_NULL);
        String result = mapper.writeValueAsString(dataObject);
        return result;
}
Run Code Online (Sandbox Code Playgroud)

我试过的一种方法是创建一个超类并在其上应用@JsonIgnoreProperties(可行).但是我还是要在每个孩子课上写"延伸",这是我不喜欢的.有没有什么方法我可以应用这个设置而不在我的pojo类中添加任何额外的东西?

java jackson jackson-databind

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

在同一 kubernetes 集群中从一个 pod 调用一个 rest api 到另一个 pod

在我的 k8s 集群中,我有两个 pods podA 和 podB。两者都在同一个 k8s 集群中。pod B 上的微服务是一个 spring boot rest api。Pod A 上的微服务在其 application.yaml 中有 Pod B 的 ip 和端口。现在每次 podB 重新创建时,ip 都会更改,这迫使我们更改 podA 的 application.yml 中的 ip。请提出更好的方法。

我的限制是:我无法更改 podA 的代码。

docker spring-boot kubernetes

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

为什么 Vector&lt;String&gt; 在以多线程样式访问时不以同步方式运行

根据我的理解,如果一个线程已经在访问它,Vector 应该阻止其他线程的整个集合。我在尝试着

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import java.util.concurrent.CopyOnWriteArrayList;

public class MyTest1{
    
//  static ArrayList<String> l1 = new ArrayList<>(Arrays.asList("A", "B", "C"));
    static Vector<String> l1 = new Vector<>(Arrays.asList("A", "B", "C"));
//  static List<String> l1 = Collections.synchronizedList(Arrays.asList("A", "B", "C"));

    public static void main(String[] args) {
        Thread t1 = new Thread(new MyThread1());
        Thread t2 = new Thread(new MyThread2());
        t1.start();
        t2.start();
        System.out.println(Thread.currentThread() + "adding X " + l1.add("X"));
        System.out.println(Thread.currentThread() + "adding Y " + l1.add("Y"));
        System.out.println(Thread.currentThread() + …
Run Code Online (Sandbox Code Playgroud)

java collections concurrency multithreading

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