Spring과 함께 JSF 웹 응용 프로그램을 가지고 있으며 applicationContext.xml에서 JVM 인수를 참조하는 방법을 찾으려고합니다. 환경 변수 (예 : -Denv = development)를 사용하여 JVM을 시작합니다. 내가 발견 등 몇 가지 다른 방법을 시도 : setter 메소드가 MyClass에의 호출Spring applicationContext.xml의 JVM 인수를 읽는 방법
<bean id="myBean" class="com.foo.bar.myClass">
<property name="environment">
<value>${environment}</value>
</property>
</bean>
하지만은, 문자열 "$ {환경}"대신 "개발"로, 전달됩니다. 나는 System.getProperty()를 사용하기위한 작업을하고 있지만 Spring을 통해이 값들을 설정할 수 있도록 더 좋고 깨끗합니다. 이 일을 할 수있는 방법이 있습니까?
편집 : 이전에 언급 했어야 할 것은 JDBC 연결을 사용하여 데이터베이스에서 속성을로드한다는 것입니다. 내 구성에 속성 자리 표시자를 추가하면 데이터베이스에서로드 된 속성이 속성 자리 표시 자에 의해 무시되므로 복잡성이 추가되는 것 같습니다. 그것이 주문에 의존적인지 또는 어떤 것인지 확실하지 않습니다. 그것은 내가 할 수있는 것과 같지만 둘 다 할 수는 없다.
편집 : 나는 현재 다음과 같은 구성하여 속성을로드하고 있습니다 : 귀하의 경우 -Dtest="hallo welt"
에 대한
<bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc.mydb.myschema"/>
</bean>
<bean id="props" class="com.foo.bar.JdbcPropertiesFactoryBean">
<property name="jdbcTemplate">
<bean class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="myDataSource" />
</bean>
</property>
</bean>
<context:property-placeholder properties-ref="props" />
필자는이 예에서 접근법을 사용하는 것과 같은 방식으로이 접근법을 사용합니다. "# {systemProperties.environment}"문자열은 setter 메서드에 전달되는 문자열입니다. – jinxed
@jinxed : 나는 마지막 문제를 발견했다고 생각합니다. 맞춤법 오류가있었습니다. 내 확장 된 대답을 보라. – Ralph