需求发生了一些变化,我必须在 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) 我有一个 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) 我有多个类,对于所有这些类,我不希望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类中添加任何额外的东西?
在我的 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 的代码。
根据我的理解,如果一个线程已经在访问它,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 ×3
spring-boot ×2
collections ×1
concurrency ×1
docker ×1
jackson ×1
kubernetes ×1
mongodb ×1
private-key ×1
spring ×1
spring-batch ×1