У меня есть простое приложение Spring Boot: < /p>
@SpringBootApplication
@EnableConfigurationProperties(DemoApplication.User.class)
public class DemoApplication {
@Autowired
User user;
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@ConfigurationProperties("user")
record User(String name, int age) {}
}
< /code>
вот приложение.properties:
user.name=Test
user.age=10
< /code>
Все работает нормально, а значения свойств из Application.properties отображаются правильно. Затем я добавил новый конструктор в запись пользователя: < /p>
@ConfigurationProperties("user")
record User(String name, int age) {
public User(String name) {
this(name, 0);
}
}
< /code>
и немедленно получил ошибку при запуске: < /p>
Caused by: java.lang.NoSuchMethodException: com.example.demo.DemoApplication$User.()
at java.base/java.lang.Class.getConstructor0(Class.java:3833) ~[na:na]
< /code>
Я предполагаю, что Spring Boot не может выбрать конструктор, потому что есть два конструктора для пользователя. Но как указать, что я хочу использовать исходный конструктор для создания объектов (имя строки, int age)? Существует @constructorbinding Annotation, но это не может быть применено к классу/записи.
Spring Boot: 3.4.2
Подробнее здесь: https://stackoverflow.com/questions/794 ... ctor-issue