2012-01-18 2 views
1

내가 지금 여기에 내가 시도 무엇, 환경 변수에서 속성 파일을로드하려고 : 중지 및 용 애플리케이션을 시작할 때 PropertyPlaceholderConfigurer와 및 environement 변수

<bean id="propertyPlaceholderConfigurer" 
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="locations"> 
      <list> 

       <value>classpath:messages/application.properties</value> 
       <value>file:${My_ENV_VAR}/*.properties</value> 

      </list> 
     </property> 

     <property name="ignoreResourceNotFound" value="true" /> 
     <property name="searchSystemEnvironment" value="true" /> 
     <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> 

    </bean> 

내가 My_ENV_VAR=C:\Program Files\My Folder\props.properties 라는 새로운 환경 변수가 있지만, 변수의 값이 설정되지 않은 이유는 무엇입니까?

UPDATE : 요구 사항

나는 그것의 경로가에 저장되어있는 파일 시스템의 외부 특성 파일에서 applicationContext.xml에서 최대 절전 모드 등록 정보 (URL, 사용자 이름, 암호)를 읽고 싶어 환경 변수.

+0

참조 Bozho의 답변

<bean id="nameOfBean" class="com.moeandjava.pusku.MySpringBean"> <property name="path" value="${jboss.variable}" /> </bean> 

미안 : http://stackoverflow.com/questions/3965446/read-system-environment-variable-in-spring-applicationcontext – atrain

+0

어떻게 설정되지 않았는지 어떻게 알 수 있습니까? 또한 디렉토리가 아닌'file : $ {My_ENV_VAR}/*. properties'와 같은 파일/파일 패턴을 전달해야합니다. – mrembisz

+0

죄송합니다, 나는 그것이 applicationContext를 볼 수 있고' $ {My_ENV_VAR} '값이 변경되지 않았기 때문에 설정되지 않았 음을 알았습니다. –

답변

8

PropertyPlaceholderConfigurer을 사용하여 PropertyPlaceholderConfigurer을 만들려고합니다. 닭고기/계란 문제입니다. 작동하지 않습니다!

대신 표현 언어를 사용해보십시오 (참조 용으로 this section 참조).하지만 정적 인 내용과 동적 인 내용을 섞어서 사용하기 때문에 까다 롭습니다. 아마 이런 식으로 뭔가가 작동합니다 :

<property name="locations" 
    value="classpath:messages/application.properties, 
    #{ T(java.lang.System).getenv('MY_ENV_VAR')}" /> 
    <!-- changed method name, it's getenv(), not getEnv() --> 
+0

미안하지만, 속성 자리 표시 자의 값이 속성 파일을 가리 키도록합니다. 환경 변수에서 읽은 것 같은 일은 할 수 없습니까? –

+0

내가하려는 일에 대한 또 다른 해결책이 있다면 요구 사항에 대한 업데이트를 추가했습니다. –

+0

@fresh_dev 문제는 다음과 같습니다. PropertyPlaceholderConfigurer 구문을 만들고있는 중입니다. –

1

요는 이러한 방식으로 사용되어야한다 :

먼저 파일 config.properties을 만들 WEB-INF/classes 디렉토리에 이제 봄 콩

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations"> 
     <list>    
      <value>classpath:config.properties</value> 
     </list> 
    </property> 
</bean> 

을 선언하고이를 넣어 :

jboss.variable=${jboss.modules.dir} 

참고 : JBoss

jboss.modules.dir = C:\Java\jee-container\jboss-eap-6.1\modules 

및 애플리케이션 컨텍스트 파일에서 변수 사용 : 6 EAP 로그 나를 보여줍니다 여기 내 나쁜 영어