【发布时间】:2016-01-03 03:20:27
【问题描述】:
我正在为项目使用 Spring MVC。我有一些常量值存储在属性文件中,我想从属性文件中获取。 问题我无法从属性文件中获取模型类中的值。它变得空了。
我在 servlet-context.xml 中设置了属性文件位置
<context:property-placeholder location="classpath:myproperties.properties" />
现在通过使用 @Value 注释,我从属性文件中注入值。
@Component
class ModelTest {
@Value("${fname}")
private String fname;
// Default Constructor
public ModelTest(){
Sysout(fname); // getting null here
}
@PostConstruct
public void initMembers(){
Sysout(fname) // Prints fname value properly
}
public void setFname(String fname){
this.fname=fname;
}
public String getFname(){
return fname;
}
@Override
public String toString() {
Sysout(fname);
return "ModelTest [variableFirst=" + variableFirst + "]";
}
}
这里是 ServiceTest 类。
@Service
class ServiceTest(){
@Value("${fname}")
private String fname;
public String printTest(){
sysout(fname); // Prints fname value
return new ModelTest().toString() // Prints null
}
}
这是 ControllerHome 类:
@Controller
public class ControllerHome {
@Value("${fname}")
private String fname;
@Autowired
private ServiceTest service;
@RequestMapping("/")
public @ResponseBody String printData(){
sysout(fname); // Prints fname value
return service.printTest(); // Print null
}
}
在模型类中,fname 为空,而在控制器和服务类中的值正常。
有人遇到这样的问题吗?
【问题讨论】:
-
ModelTest是你的模特班吗?有没有像@Entity...这样的其他注释? -
是的,它是虚拟模型类。不,没有@entity 注释。
-
什么是组件扫描包路径?它应该是 *.alert
-
@MiteshParmar 抱歉,我认为不会有关于组件扫描的任何问题。在 controllerHome 中,ServiceTest 类运行良好。但仅在模型类中,它不起作用,这是我的问题。 base-package 和你写的一样。
标签: java spring properties-file