I am trying to read some properties from application.properties
. I have created a configuration class with @Component
and @ConfigurationProperties
annotations.
When I am trying to access the configuration from a controller class, its working fine. But when I am trying to access the configuration from one component class, its throwing a null pointer exception.
Following are the application.properties
and classes.
application.properties
elasticsearch.ip=localhost
InputManagementController.java
@RestController
public class InputManagementController {
@Autowired
private Configuration configuration;
@GetMapping("/crawler/start")
public String start(){
try{
System.out.println(configuration.getIp()); ----> getting value localhost
ElasticsearchInterface es=new ElasticsearchInterface();
es.getInputs();
}catch (Exception e){
e.printStackTrace();
}
return "started";
}
}
ElasticsearchInterface.java
@Component
public class ElasticsearchInterface {
@Autowired
private Configuration configuration;
public List<Map<String, Object>> getInputs() {
System.out.println(configuration.getIp()); ---> getting java.lang.NullPointerException here
return null;
}
}
Configuration.java
@Component
@ConfigurationProperties("elasticsearch")
public class Configuration {
private String ip;
private int port;
private String cluster;
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
}