I am working with Spring MVC to develop this application. I am supposed to read from an external .properties file.
mvc-dispatcher-servlet.xml
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:Host.properties</value>
<value>file:///usr/pic1/JSONEditor/Host.properties</value>
</list>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="ignoreResourceNotFound" value="true"/>
</bean>
<bean id="dataSource" class="com.example.editor.Configuration">
<property name="hostURL" value="${url}" />
</bean>
Configuration.java
package com.example.editor;
import org.springframework.beans.factory.annotation.Value;
public class Configuration {
@Value("$(url)")
private String hostURL;
public String getHostURL(){
System.out.println("URL:"+this.hostURL);
return this.hostURL;
}
public void setHostURL(String url){
this.hostURL = url;
System.out.println("URL:"+this.hostURL);
}
}
EditorController.java
package com.example.editor.controller;
import java.io.IOException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.example.editor.Configuration;
@Controller
@RequestMapping("/")
public class EditorController {
private static final String start = "Editor";
@RequestMapping(value = "/", method = RequestMethod.GET)
public String start(ModelMap model) throws IOException{
Configuration confg = new Configuration();
model.addAttribute("URL", confg.getHostURL());
return start;
}
}
It is able to read the file and get the url when I launch the application but once I open it in the browser, hostURL=null.
Can someone please point out what the mistake is?
package com.example.editor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class Configuration {
@Value("$(url)")
private String hostURL;
public String getHostURL(){
System.out.println("URL:"+this.hostURL);
return this.hostURL;
}
EditorController.java
package com.example.editor.controller;
import java.io.IOException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.example.editor.Configuration;
@Autowired
Configuration confg;
@Controller
@RequestMapping("/")
public class EditorController {
private static final String start = "Editor";
@RequestMapping(value = "/", method = RequestMethod.GET)
public String start(ModelMap model) throws IOException{
model.addAttribute("URL", confg.getHostURL());
return start;
}
}
public void setHostURL(String url){
this.hostURL = url;
System.out.println("URL:"+this.hostURL);
}
}
For configuration class make it as service class. And in Controller you need to autowired service class object. Here you have created instance with new operator which is wont work for you.