2011-04-07 6 views
3

기본 질문과 같은 느낌이지만 인터넷 검색은별로 없습니다.컨트롤러 조치 메소드에서 Web.xml 컨텍스트 - 매개 변수 값을 얻으려면 어떻게해야합니까?

내 앱이 SMTP 서버에 연결되어 메일을 전송합니다. 이 SMTP 서버는 앱이 배포되는 환경에 따라 구성 가능해야합니다.

web.xml 구성 파일에 SMTP 서버 이름을 지정하고 Spring MVC 3.0 컨트롤러에서 액세스하려면 어떻게합니까?

컨트롤러가 확장하거나 구현하지 않습니다. @Controller@RequestMapping으로 완전히 주석 처리됩니다. 내가 온라인에서 본 것에서 사람들은 서블릿 API를 통해 컨텍스트 매개 변수에 액세스합니다. 주석 중심이므로 서블릿 객체에 액세스 할 수 없습니다.

답변

2

이 문제가 해결되었습니다.

컨트롤러는 컨트롤러가 ServletContextAware 경우이 방법으로 서블릿 컨텍스트를 주입합니다

setServletContext(ServletContext servletContext) 

스프링 MVC라는 방법을 필요로 ServletContextAware을 구현합니다.

컨트롤러에 위의 메소드에 삽입 된 servletController를 저장할 개인 변수를 만듭니다. 일반 서블릿을 사용하는 것처럼 servletContext를 사용할 수 있습니다.

hth.

+0

이 방법의 유일한 문제는 그에게 그것을 단단히 결합 구성 요소 컨테이너. 컨트롤러에서 그렇게 큰 문제는 아니지만 (실제로 Controller의 목적이 아닌가?) 애플리케이션의 다른 부분에서 이러한 매개 변수에 액세스하려면 속성 자리 표시자인 http ://를 사용하는 것이 좋습니다. /stackoverflow.com/a/21175824/1669464 – Pytry

1

나는 일을해야한다 또한 다음과 같은 가정합니다

void action(final HttpServletRequest request) { 
    final paramValue = request.getSession().getServletContext().getInitParameter("paramName"); 
    ... 
} 
2

의 ServletContext의 인스턴스를 추가하고 나를 위해 일한 autowiring에

@Controller 
public MyController { 

// other instances relevant to your requirement 

    @Autowired 
    private ServletContext sCtx; 

//other methods relevant to your requirement 

} 
관련 문제