如何从Main类将属性注入spring bean

我正在使用带有我的应用程序的spring,并且我能够将类路径上的某些文件中的一些属性注入到我的应用程序中,一切都运行良好。 即

       classpath:application.properties    

现在我可以在我的spring上下文中使用${any.property.from.application.properties} 。 在我的主要课程中:

 ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("appContext.xml"); 

它的工作原理也是如此,我的问题是如何在弹簧上下文中注入属性文件位置而不是它最初存在,我想让我的应用程序可配置。 如果我从C:\dir/user/home/dir执行我的应用程序,我假设在应用程序上下文中,该值应该是C:\application.properties/user/home/dir/application.properties

某个时候我有类似的问题。 我的要求是属性文件没有捆绑在应用程序内(因此不在类路径中)。 该文件可以位于文件系统中的任何位置。 这是我解决它的方式,

  1. 定义一个环境变量,其值指向application.properties的位置。
  2. 假设我们有一个env变量APP_PROP_HOME,其值为/ user / home / dir /
  3. 现在,在定义ServletContextPropertyPlaceholderConfigurer时,按如下方式定义位置

我正在重复你的例子

        file://${APP_PROP_HOME}/application.properties    

Spring将$ {APP_PROP_HOME}解析为存储在相应env属性中的值,并在运行时配置应用程序。

如果我正确地阅读您的问题,您希望使用外部属性文件(即文件不在应用程序运行时类路径中)。 如果是这种情况,则需要使用文件标记

  file:///c:\application.properties 

您可以使用@Value从env中注入值。 例:

 private someFoo; @Value("${systemProperties.someFoo}") public void setSomeParam(String someParam) { this.someFoo = someParam; }