0

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

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

4

1 回答 1

0

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

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

完成此操作后,只需使用 getProperty() 或 setProperty() 即可访问/更改所需的属性。loadFromXML()如果您选择的文件是文件,还有另一种使用该方法的方法xml。我希望这可以解决您的问题,因为听起来您只是在加载文件时遇到了麻烦,而不管是否在控制器类中。如果我是对的,那么你会在网上找到无数的例子,告诉你只做我上面写的:)

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

顺便说一句,您必须记住应用程序属性在某种程度上是应用程序内部的,因此,它们被设置在.properties源文件之外的文件中,以便它可以在不更改源代码的情况下运行(如果我在说胡话,请纠正我!)。 如果您使用的是 Maven 或 Ivy 等构建自动化工具,有一种方法可以确保使用 a) POM 和 b) applicationContext.xml 文件设置您的应用程序属性。通过这种方式,如果相对路径无法成为目标计算机上的某个路径,应用程序甚至可以更轻松地与崩溃解耦。如果你想要这个,你必须小心在 POM 中设置过滤器。我没有亲自手动完成此操作,但几个月前我们正在开展一个项目,当时我的一位同事将文件管理器放在我面前。我记得这一点,因为由于过滤器设置不正确,一切都失败了。抱歉,您必须使用 Google 叔叔自己找出答案!

于 2012-11-21T11:16:30.257 回答