Класс сервисы и DTO не видят класс @ConfigurationProperties

135
08 июля 2019, 01:50

Имеется класс с аннотацией @ConfigurationProperties. В нем находятся поля, которые подгружаются из файла. Данный файл хранит настройки сервера, и я хочу их использовать при валидации. Например, если длина логина меньше, чем указано в настройках, то тогда выбрасывать исключение. Проблема в том, что класс контроллер видит поля и позволяет к ним обращаться, а классы сервисы и DTO request не видят, при обращении к полям они все null. Подгрузку файла с настройками выполняю через аннотацию @Autowired.

Может, в классах сервисах и DTO имеется какой-то иной способ получения конфига? Или почему именно в контроллере поля видны, а в других классах - нет?

Answer 1

Используйте аннотацию @Value в комбинации с systemProperties (внутри Spring Context):

@Value("#{systemProperties['priority']}")
private String spelValue;

или

@Value("#{systemProperties.myProp}")
private String spelValue;

Ссылка по теме: Spring @Value annotation

Answer 2

Аннотация @Autowired работает только для бинов в контексте. Если вы создаете инстанс сами через new или за вас это делает десереализатор то аннотации не работают.

READ ALSO
В сокет отправляется не полная строка

В сокет отправляется не полная строка

Есть клиент на java, который отправляет длинный json на сервер, который написан на pythonЕсли длина json'а не очень большая, то все нормально отправляется

127
Разбиение строки на группы в регулярных выражениях

Разбиение строки на группы в регулярных выражениях

Хочу проверить строку на наличие хаотически выставленных букв разных регистровДля примера строка на входе:

144
Можно ли писать на Java для iOS?

Можно ли писать на Java для iOS?

До меня дошли страшные слухи, что на iOS нет JVMБолее того, до меня дошли страшные слухи, что будто бы фирма Эппл не разрешает ставить JVM на iOS

172
Как создать корзину в Java? [закрыт]

Как создать корзину в Java? [закрыт]

Нужно создать интернет-магазинПользователь выбирает товары, они складываются в корзину

158