我在spring框架中使用属性文件
root-context.xml
<context:property-placeholder location="classpath:config.properties" />
<util:properties id="config" location="classpath:config.properties" />
java代码
@Value("#{config[ebookUseYN]}")
String EBOOKUSEYN;
使用网址调用(@RequestMapping(value="/recommendbooks" , method=RequestMethod.GET, produces="application/json;charset=UTF-8")
)时..这项工作!
但是,我使用方法调用,
public void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
IndexManageController indexManage = new IndexManageController();
CommonSearchDTO commonSearchDTO = new CommonSearchDTO();
try {
if("Y".equals(EBOOKUSEYN)){
indexManage.deleteLuceneDocEbook();
indexManage.initialBatchEbook(null, commonSearchDTO);
}
indexManage.deleteLuceneDoc(); <= this point
indexManage.deleteLuceneDocFacet();
indexManage.initialBatch(null, commonSearchDTO);
}catch (Exception e) {
e.printStackTrace();
}
}
当'this point'方法调用时,更改控制器,并且不读取属性文件字段..
@Value("#{config[IndexBasePath]}")
String IndexBasePath;
@RequestMapping(value="/deleteLuceneDoc" , method=RequestMethod.GET, produces="application/json;charset=UTF-8")
public @ResponseBody ResultCodeMessageDTO deleteLuceneDoc()
throws Exception
{
long startTime = System.currentTimeMillis();
ResultCodeMessageDTO result = new ResultCodeMessageDTO();
System.out.println(IndexBasePath);
}
它不会读取IndexBasePath
答案 0 :(得分:0)
在您的代码中,您正在创建IndexManageController
的新实例,Spring不知道此实例,因此它永远不会被处理。
public void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
IndexManageController indexManage = new IndexManageController();
而不是创建新实例注入IndexManageController
的依赖项,以便它使用由Spring构造和管理的预配置实例。 (并删除构造该类的新实例的行。)
public class MyJob {
@Autowired
private IndexManageController indexManage;
}
您的配置也在加载属性两次
<context:property-placeholder location="classpath:config.properties" />
<util:properties id="config" location="classpath:config.properties" />
两者都加载config.properties文件。只需将配置连接到property-placeholder元素。
<context:property-placeholder properties-ref="config"/>
<util:properties id="config" location="classpath:config.properties" />
保存两次加载并为您保存另一个bean。