繁体   English   中英

从非Controller类中的application.properties访问属性

[英]Accessing properties from application.properties in a non Controller class

http://www.javadb.com/using-a-message-handler-to-alter-the-soap-header-in-a-web-service-client

在上面的示例中,我们在消息处理程序类中对TestUser(用户名)和TestPassword(密码)进行了硬编码,我想将这些值外部化。 经过研究后,我无法实现@Autowired和@value。请帮我解决这个问题

如果您的.properties文件保存在本地硬盘驱动器上的某个位置,并且它是KPL(关键项目位置)之一,则只需执行以下操作:

Properties propObj = new Properties ();
FileInputStream fis = new FileInputStream("relative path to your file");
propObj.load(fis);

完成此操作后,只需使用getProperty()或setProperty()即可访问/更改所需的属性。 如果您选择的文件是xml文件,则还有另一种使用loadFromXML()方法的方法。 我希望这能解决您的问题,因为听起来好像您只是在加载文件(无论是否在控制器类中)时都遇到麻烦。 如果我是对的,那么您会在网上找到无尽的示例,这些示例告诉您仅执行我上面写的内容即可:)

使用@Autowire之类的工具时,请记住,必须在目标类开始之前使用@ContextConfiguration("location_of_file.xml")进行注释。 指定applicationContext文件时,获取正确的相对路径可能有些棘手。 请参阅此处,并点击其他链接以了解有关此内容的更多信息。

顺便说一句,您必须记住,应用程序属性在某种程度上是应用程序内部的属性,因此,它们在源文件之外的.properties文件中设置,因此可以在不更改源代码的情况下运行它(如果我说话!)。 如果您使用的是Maven或Ivy之类的构建自动化工具,则有一种方法可以确保使用a)POM和b)applicationContext.xml文件来设置应用程序属性。 这样,万一相对路径在目标计算机上无法正常工作,则应用程序与崩溃的关系就更大了。 如果需要,必须在POM中设置过滤器时要小心。 我本人并没有亲自完成这项工作,但是几个月前,当我的一位同事将文件管理者放在我面前时,我们正在做一个项目。 我记得这一点,因为由于过滤器设置不正确,一切都失败了。 抱歉,但是您必须使用Google叔叔自己找出来!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM