Я пытаюсь получить доступ к application.properties
значениям в классе обслуживания приложения весенней загрузки. Но каждый раз, когда значение равно нулю, оно выбрасывает NullPointException
. Я могу получить правильное значение для порта в классе контроллера (если я добавлю @Autowired
в контроллере), но не в классе обслуживания. Какие изменения необходимы, чтобы сделать эти свойства доступными через приложение?
Контроллер выглядит так:
@RestController
public class MyController {
MyService ss = new MyService();
@RequestMapping(value = "/myapp/abcd", method = RequestMethod.POST, consumes = {"application/json"})
public ResponseMessage sendPostMethod(@RequestBody String request) {
log.debug(" POST Request received successfully; And request body is:"+ request);
ResponseMessage response = ss.processRequest(request);
return response;
}
}
А Сервис Класс:
@Service
public class MyService {
private ApplicationProperties p;
@Autowired
public setProps(ApplicationProperties config) {
this.p = config;
}
public ResponseMessage processRequest(String request) {
System.out.println("Property value is:"+ p.getPort());
}
}
ApplicationProperties.java выглядит так:
@Component
@Getter
@Setter
@ConfigurationProperties
public class ApplicationProperties {
String port;
}
Наконец, application.properties
файл имеет:
port=1234
Я даже пытался передать экземпляр ApplicationProperties
из контроллера в конструктор сервиса по умолчанию, но он не работал. Когда я отлаживаю, значение сохраняется при запуске приложения, но когда я делаю POST-вызов остальной веб-службы, это значение равно нулю.