복붙노트

[SPRING] Spring Controller에서 web.xml의 <context-param> 값에 접근하는 방법

SPRING

Spring Controller에서 web.xml의 값에 접근하는 방법

내 응용 프로그램의 web.xml에서 context-param을 아래와 같이 정의하고 있습니다.

<context-param>
    <param-name>baseUrl</param-name>
    <param-value>http://www.abc.com/</param-value>
</context-param>

이제 내 컨트롤러에서 baseUrl의 값을 사용하고 싶습니다. 어떻게 액세스 할 수 있습니까?

아무도이 사실을 모른다면 말해주십시오.

미리 감사드립니다.

해결법

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

    1.Spring 3.1 이상을 사용하고 있다면 속성을 얻기 위해 특별한 작업을 수행 할 필요가 없습니다. 친숙한 $ {property.name} 구문을 사용하십시오.

    Spring 3.1 이상을 사용하고 있다면 속성을 얻기 위해 특별한 작업을 수행 할 필요가 없습니다. 친숙한 $ {property.name} 구문을 사용하십시오.

    예를 들면 :

    <context-param>
        <param-name>property.name</param-name>
        <param-value>value</param-value>
    </context-param>
    

    web.xml 또는

    <매개 변수 이름 = "property.name"값 = "값"override = "거짓"/>

    Tomcat의 context.xml

    다음과 같이 액세스 할 수 있습니다.

    @Component
    public class SomeBean {
    
       @Value("${property.name}")
       private String someValue;
    }
    

    이것은 스프링 3.1+에서 서블릿 환경에 배포 할 때 등록 된 환경이 모든 서블릿 컨텍스트 관련 속성을 현재 환경에 추가하는 StandardServletEnvironment이기 때문에 가능합니다.

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

    2.컨트롤러가 ServletContextAware 인터페이스를 구현하도록하십시오. 이렇게하면 setServletContext (ServletContext servletContext) 메소드가 강제로 구현되며 Spring은 ServletContext를 Spring에 삽입한다. 그런 다음 ServletContext 참조를 개인 클래스 멤버에 복사하십시오.

    컨트롤러가 ServletContextAware 인터페이스를 구현하도록하십시오. 이렇게하면 setServletContext (ServletContext servletContext) 메소드가 강제로 구현되며 Spring은 ServletContext를 Spring에 삽입한다. 그런 다음 ServletContext 참조를 개인 클래스 멤버에 복사하십시오.

    public class MyController implements ServletContextAware {
    
        private ServletContext servletContext;
    
        @Override
        setServletContext(ServletContext servletContext) {
            this.servletContext = servletContext;
        }
    }
    

    다음을 사용하여 param-value를 얻을 수 있습니다.

    String urlValue = servletContext.getInitParameter("baseUrl");
    
  3. ==============================

    3.먼저 Spring 애플리케이션 인 "applicationContext.xml"(또는 이름을 붙인 이름)에 다음과 같은 속성 자리 표시자를 추가합니다.

    먼저 Spring 애플리케이션 인 "applicationContext.xml"(또는 이름을 붙인 이름)에 다음과 같은 속성 자리 표시자를 추가합니다.

    <context:property-placeholder local-override="true" ignore-resource-not-found="true"/>
    

    .properties 파일에있는 일부 값을로드하려면 "location"의 선택적 매개 변수를 추가 할 수 있습니다. (예 : location = "WEB-INF / my.properties").

    기억해야 할 중요한 속성은 'local-override = "true"'속성입니다.이 속성은로드 된 속성 파일에서 아무 것도 찾을 수없는 경우 컨텍스트 매개 변수를 사용하도록 장소 소유자에게 알려줍니다.

    그런 다음 생성자와 설정자에서 @Value 주석과 SpEL (Spring Expression Language)을 사용하여 다음을 수행 할 수 있습니다.

    @Component
    public class AllMine{
    
        public AllMine(@Value("${stuff}") String stuff){
    
            //Do stuff
        }
    }
    

    이 메소드는 ServletContext로부터 추상화하는 추가 이점을 가지며, 특성 파일의 사용자 정의 값으로 기본 컨텍스트 매개 변수 값을 겹쳐 쓸 수있는 기능을 제공합니다.

    희망이 도움이 :)

  4. from https://stackoverflow.com/questions/20093759/how-to-access-context-param-values-of-web-xml-in-spring-controller by cc-by-sa and MIT license