所以这个问题已经被问过几次了,但似乎没有人以可以帮助我的方式回答它。我目前正在为处理产品数据的简单应用程序制作后端。它甚至没有使用 JSP,只是一个普通的 Rest 后端。使用 Spring 的 RestController。
“问题”是:启动后的第一个请求比其他所有请求需要更长的时间才能从服务器获得答案。(我只是用一个简单的 JPA 用户实体来测试 Postman)
需要考虑的一些事项:
如何使第一个请求更快/如何强制 Spring 在第一个请求到来之前实际初始化所有内容?
无论如何,一些代码:
用户.java:
@Entity
@Table(name = "users")
@Data
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@NonNull
private String firstName;
@NonNull
private String lastName;
@NonNull
@OneToOne(cascade = CascadeType.ALL)
private Address billingAddress;
//a bit more. a list and another address
}
Run Code Online (Sandbox Code Playgroud)
用户控制器.java:
@RestController
@RequestMapping("users")
public class UserController …
Run Code Online (Sandbox Code Playgroud) 使用Jackson的JSON模式模块时,不管是否遇到某个模型类,我都希望停止完整的图形,并使用类名为另一个模式插入$ ref.你能引导我到jackson-module-jsonSchema源中的正确位置开始修补吗?
这里有一些代码来说明这个问题:
public static class Zoo {
public String name;
public List<Animal> animals;
}
public static class Animal {
public String species;
}
public static void main(String[] args) throws Exception {
SchemaFactoryWrapper visitor = new SchemaFactoryWrapper();
ObjectMapper mapper = objectMapperFactory.getMapper();
mapper.acceptJsonFormatVisitor(mapper.constructType(Zoo.class), visitor);
JsonSchema jsonSchema = visitor.finalSchema();
System.out.println(mapper.writeValueAsString(jsonSchema));
}
Run Code Online (Sandbox Code Playgroud)
输出:
{
"type" : "object",
"properties" : {
"animals" : {
"type" : "array",
"items" : {
"type" : "object",
"properties" : { <---- Animal schema is inlined :-(
"species" : …
Run Code Online (Sandbox Code Playgroud) 我得到一个异常,埋没在第三方库中,有这样的消息:
java.io.UnsupportedEncodingException:BIG-5
我认为这是因为Java没有为此定义此名称 java.nio.charset.Charset
.Charset.forName("big5")
很好,但Charset.forName("big-5")
抛出异常.(所有这些名称似乎都不区分大小写.)
这与"utf-8"不同,后者有一些别名更宽容.例如,两个Charset.forName("utf8"
)和Charset.forName("utf-8")
做工精细.
问题:有没有办法添加别名,以便"big-5"映射到"big5"?
给定一个任意Class
对象,确定向 Jackson 注册的该类的子类型的最佳方法是什么?
例如,这是一个简单的情况,其中类Lion
和Penguin
是 的子类型Animal
:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME)
@JsonSubTypes({
@JsonSubTypes.Type(Lion.class),
@JsonSubTypes.Type(Penguin.class)})
public static abstract class Animal {}
@JsonTypeName("Lion")
public static class Lion extends Animal {}
@JsonTypeName("Penguin")
public static class Penguin extends Animal {}
Run Code Online (Sandbox Code Playgroud)
我梦想的功能如下:
List<Class> getSubTypeClasses(Class c) {...}
Run Code Online (Sandbox Code Playgroud)
getSubTypeClasses(Animal.class)
会返回哪里Lion
和Penguin
.
如果 Jackson API 没有提供获取此信息的便捷方法,我将手动阅读注释,但最好了解与任何 AnnotationIntrospector
实现兼容的技术。
我正在处理员工的数组列表,并且需要按员工人数,活动员工数和非活动员工数按功能使用分组。我知道如何处理总数,但是当值在数组字符串中时(即一名雇员与多个部门关联),我如何按功能对数组列表进行处理。
public class Employee {
private String name;
private List<String> department;
private String status;
public Employee(String name, List<String> department, String status) {
this.setName(name);
this.setDepartment(department);
this.setStatus(status);
}
public String getName() {
return name;
}
public List<String> getDepartment() {
return department;
}
public void setName(String name) {
this.name = name;
}
public void setDepartment(List<String> department) {
this.department = department;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
ArrayList<Employee> listEmployee = new ArrayList<Employee>(); …
Run Code Online (Sandbox Code Playgroud) java ×5
jackson ×2
json ×2
arraylist ×1
delay ×1
hashmap ×1
jakarta-mail ×1
java-8 ×1
jsonschema ×1
polymorphism ×1
postman ×1
request ×1
spring ×1