복붙노트

[SPRING] env.getProperty가 작동하지 않습니다. Spring PropertyPlaceholderConfigurer

SPRING

env.getProperty가 작동하지 않습니다. Spring PropertyPlaceholderConfigurer

봄을 사용하여 속성 파일을로드하고 있습니다.

  <bean id="appProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
         <property name="locations" value="classpath:/sample.properties" />
          <property name="ignoreUnresolvablePlaceholders" value="true"/>
    </bean>

재산 가치를 얻을 때

@Value ( "$ {testkey}")는 잘 작동합니다.

하지만 내가 env를 사용하려고 할 때

@Resource
 private Environment environment;

environment.getProperty("testkey") // returning null

해결법

  1. ==============================

    1.PropertyPlaceholderConfigurer는 그 위치의 프로퍼티를 Environment에 추가하지 않습니다. Java 구성을 사용하면 @PropertySource를 사용하여이를 수행 할 수 있습니다.

    PropertyPlaceholderConfigurer는 그 위치의 프로퍼티를 Environment에 추가하지 않습니다. Java 구성을 사용하면 @PropertySource를 사용하여이를 수행 할 수 있습니다.

  2. ==============================

    2.@PropertySource를 사용하지 않고 이것을 달성하고자하는 사람이 있다면

    @PropertySource를 사용하지 않고 이것을 달성하고자하는 사람이 있다면

    ApplicationContextInitializer 인터페이스와 그 동반자 인 contextInitializerClasses 서블릿 컨텍스트 매개 변수를 사용하십시오.

    web.xml에 이것을 추가하십시오.

    <context-param>
        <param-name>contextInitializerClasses</param-name>
        <param-value>com.test.MyInitializer</param-value>
    </context-param>
    

    Initializer를 정의하고 정의하십시오.

    public class MyInitializer implements ApplicationContextInitializer<ConfigurableWebApplicationContext> {
        public void initialize(ConfigurableWebApplicationContext ctx) {
            PropertySource ps = new ResourcePropertySource(new ClassPathResource("sample.properties")); // handle exception
            ctx.getEnvironment().getPropertySources().addFirst(ps);
        }
    }
    

    참고 자료 : Spring 3.1 M1 : 통합 자산 관리

  3. from https://stackoverflow.com/questions/23895908/env-getproperty-not-working-spring-propertyplaceholderconfigurer by cc-by-sa and MIT license