Có thể có các trường bất biến (cuối cùng) với chú thích @ConfigurationProperties
của Spring Boot không? Ví dụ dưới đâyKhông thể thay đổi @ConfigurationProperties
@ConfigurationProperties(prefix = "example")
public final class MyProps {
private final String neededProperty;
public MyProps(String neededProperty) {
this.neededProperty = neededProperty;
}
public String getNeededProperty() { .. }
}
phương pháp tiếp cận tôi đã cố gắng cho đến nay:
- Tạo một
@Bean
của lớpMyProps
với hai cấu trúc- Cung cấp hai cấu trúc: trống và với
neededProperty
luận - Các đậu được tạo với
new MyProps()
- Kết quả trong lĩnh vực này
null
- Cung cấp hai cấu trúc: trống và với
- Sử dụng
@ComponentScan
và@Component
để cung cấp đậuMyProps
.- Kết quả trong
BeanInstantiationException
->NoSuchMethodException: MyProps.<init>()
- Kết quả trong
Cách duy nhất tôi đã nhận nó làm việc bằng cách cung cấp getter/setter cho từng lĩnh vực phi chính thức.
Theo hiểu biết của tôi, những gì bạn đang cố gắng để làm sẽ không làm việc ra khỏi hộp. – geoand
Thật đáng buồn.Tất nhiên, tôi luôn có thể làm điều đó với Spring đơn giản bằng cách sử dụng các tham số constructor với chú thích '@ Value'. Tuy nhiên, nó sẽ là tốt đẹp nếu Spring Boot cũng hỗ trợ điều này. – RJo
Tôi lấy một đỉnh nhỏ ở mã nguồn, nhưng nó không phức tạp để hỗ trợ một cái gì đó giống như những gì bạn đang yêu cầu. Tất nhiên tôi không có chuyên gia về nội bộ mùa xuân vì vậy tôi có thể thiếu một cái gì đó rõ ràng – geoand