Tôi có một bộ điều khiển đơn giản với một handler GET chấp nhận một đối tượng để ràng buộc các thông số yêu cầu:Làm cách nào để ràng buộc các tham số yêu cầu mà không cần định vị?
@RestController
@RequestMapping("/test")
public class SampleController {
@GetMapping
public SomeResponse find(RequestParams params) {
// some code
}
}
Các RequestParams
là một lớp POJO đơn giản:
public class RequestParams {
private String param1;
private String param2;
// constructor, getter, and setters
}
everthing hoạt động tốt, nhưng tôi muốn để loại bỏ những người định cư để làm cho đối tượng không thay đổi được để sử dụng công cộng. Trong phương pháp documentation cho @RequestMapping
xử lý, chúng ta đọc rằng thể đối số phương pháp có giá trị là:
lệnh hoặc hình thức đối tượng để ràng buộc các thông số yêu cầu thuộc tính bean (thông qua setters) hay trực tiếp đến lĩnh vực
Có thể bằng cách nào đó ghi đè cấu hình khởi động Spring mặc định để các tham số yêu cầu được ràng buộc với các thuộc tính lớp bằng cách sử dụng sự phản chiếu chứ không phải với các bộ định tuyến không?
Thật không may, nếu phạm vi của các trường được thay đổi thành 'public' và setters bị loại bỏ, các tham số yêu cầu không bị ràng buộc với đối tượng. Ngay cả khi, mục tiêu của tôi là giữ cho đối tượng bất biến, ít nhất là để sử dụng công cộng, do đó làm cho các lĩnh vực công cộng sẽ chỉ làm cho mọi việc tồi tệ hơn. –