【发布时间】:2019-09-24 10:47:38
【问题描述】:
欢迎,
我已经创建了简单的 Rest Controller:
@RestController
public class MyController {
@PostMapping(value = "/cities", consumes = "application/json", produces = "application/json")
public String getCities(@RequestBody Request request) {
return request.getId();
}
}
我希望 Request 类是不可变的。
这样可以将 Immutable 与 Lombok 一起使用吗?
import com.google.common.collect.ImmutableList;
import java.beans.ConstructorProperties;
import java.util.List;
import jdk.nashorn.internal.ir.annotations.Immutable;
import lombok.Getter;
import lombok.Value;
@Immutable
@Value
public final class Request {
private final String id;
private final ImmutableList<String> lista;
@ConstructorProperties({"id", "lista"})
public Request(String id, List<String> lista) {
this.id = id;
this.lista = ImmutableList.copyOf(lista);
}
}
请求 JSON:
{
"id":"g",
"lista": ["xxx","yyy"]
}
【问题讨论】:
-
根据projectlombok.org/features/Value我觉得还可以
-
您为什么采用特定的
@Immutable注释,您认为它有什么作用? (@lombok.Value通常就足够了。) -
@chrylis 我认为
@Immutable仅用于文档目的。 -
@lealceldeiro 是的,但它被拉出一个明确不打算在外部使用的位置。
标签: java rest spring-boot post lombok