나는 Spring 3.1 응용 프로그램을 가지고 있으며 컨텍스트 파일에서 시스템 변수를 사용하려고합니다. 변수 "JAVA_MY_ENV"는 내 시스템에 정의되어 있습니다 (Windows에서는 제어판의 "시스템 변수"에 있음).
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log/${JAVA_MY_ENV}.log4j.properties</param-value>
</context-param>
나는 또한 사용할 수 있습니다 : web.xml에
, 내가 변수로 사용할 수 있습니다 그것은 성공적 변수의 실제 값으로 대체되고, 작동 (의는 "전기 판은"가정 해 봅시다) 내 주 "콩"맥락에서 가져 오기를 수행하는, 또한 작동합니다
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
<!-- (...) -->
<import resource="classpath:spring/app-config.xml" />
<import resource="classpath:spring/env/context-env-${JAVA_MY_ENV}.xml" />
</beans>
그러나 "앱 config.xml에"에서
, 내 다른 컨텍스트 파일 중 하나는,이 시도하고 그것을 아무튼 't 직업 :<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
<bean id="appConfiguration" class="com.xxx.app.AppConfiguration">
<constructor-arg value="${JAVA_MY_ENV}" />
</bean>
</beans>
com.xxx.app.AppConfiguration은 "$ {JAVA_MY_ENV}"문자열을 해석 된 값이 아닌 생성자 매개 변수로 수신합니다!
$ {} 변수가 해석되는 위치와 그렇지 않은 위치를 이해할 수 없습니다.
내 com.xxx.app.AppConfiguration 생성자에 해석 된 $ {JAVA_MY_ENV} 값을 전달할 수있는 방법이 있습니까? 3.0으로
문제는 "-DJAVA_MY_ENV = electrotype"으로 내 응용 프로그램을 시작하지 않고 대신 JAVA_MY_ENV를 시스템 전역 변수로 설정한다는 것입니다. 내 응용 프로그램에서 System.getenv ("JAVA_MY_ENV")는 "electrotype"을 반환하지만 System.getProperty ("JAVA_MY_ENV")는 NULL을 반환합니다. @Value ("# {systemProperties [ 'JAVA_MY_ENV']}")도 NULL입니다. web.xml에서 사용하는 * $ {JAVA_MY_ENV} 변수와 동일한 값을 사용하여 값이 동일한 지 확인하는 것이 좋습니다. PropertyPlaceholderConfigurer를 사용하면 "-D"var인지 또는 전역 시스템 속성인지 알 수 없습니다 (어떤 이유로 든 하루 둘 다 사용하는 경우). 감사. – electrotype