[SPRING] Spring XML 메타 데이터 설정에서 빈에 대한 ServletContext 속성을 설정하는 방법
SPRINGSpring XML 메타 데이터 설정에서 빈에 대한 ServletContext 속성을 설정하는 방법
그래서 여기에 검색했지만 솔루션을 찾을 수 없습니다. 나는 다음과 같은 XML 메타 데이터를 가지고있다.
<bean class="javax.servlet.ServletContext" id="servletContext" />
<bean class="com.abc.ProductController">
<property name="servletContext" ref="servletContext"/>
</bean>
이 구성에서는 "javax.servlet.ServletContext"가 인터페이스이고 id가 servletContext 인 빈을 생성 할 수 없다는 예외가 발생합니다. ProductController 클래스는 수정할 수없는 항아리에 있지만 응용 프로그램의 bean으로 원합니다. Autowired ServletContext 속성이 있습니다.
해결법
-
==============================
1.XML 설정 스프링 애플리케이션에서 ServletContext를위한 빈을 생성해야한다면 ServletContextAware를 구현하는 BeanFactory
를 사용할 수있다. XML 설정 스프링 애플리케이션에서 ServletContext를위한 빈을 생성해야한다면 ServletContextAware를 구현하는 BeanFactory
를 사용할 수있다. public class ServletContextFactory implements FactoryBean<ServletContext>, ServletContextAware{ private ServletContext servletContext; @Override public ServletContext getObject() throws Exception { return servletContext; } @Override public Class<?> getObjectType() { return ServletContext.class; } @Override public boolean isSingleton() { return true; } @Override public void setServletContext(ServletContext servletContext) { this.servletContext = servletContext; } }
다음을 선언 할 수 있습니다.
<bean class="org.app.ServletContextFactory" id="servletContext" /> <bean class="com.abc.ProductController"> <property name="servletContext" ref="servletContext"/> </bean>
-
==============================
2.그냥 컨트롤러에서 컨텍스트를 autowire :
그냥 컨트롤러에서 컨텍스트를 autowire :
@Autowired private ServletContext context;
-
==============================
3.서블릿 컨텍스트가 서블릿 컨테이너에 의해 제어되므로 XML에서 서블릿 컨텍스트를 참조 할 수 없습니다.
서블릿 컨텍스트가 서블릿 컨테이너에 의해 제어되므로 XML에서 서블릿 컨텍스트를 참조 할 수 없습니다.
해결 방법은 com.abc.ProductController가 ServletContextAware를 구현 한 다음 Spring이이를 설정하도록하는 것입니다.
-
==============================
4.자바 설정으로 위의 Serge Ballesta가 만든 ServletContextFactory를 사용하면 :
자바 설정으로 위의 Serge Ballesta가 만든 ServletContextFactory를 사용하면 :
@Configuration public class WebAppConfiguration { @Autowired private ServletContextFactory servletContextFactory; @Bean public ServletContextFactory servletContextFactory() { return new ServletContextFactory(); } }
from https://stackoverflow.com/questions/26632529/how-to-set-servletcontext-property-for-a-bean-in-spring-xml-metadata-configurati by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 어떻게 thymeleaf와 POJO를 직렬화? (0) | 2019.05.18 |
---|---|
[SPRING] Spring 프레임 워크는 임베디드 컨테이너를 시작할 수 없다. (0) | 2019.05.18 |
[SPRING] 스프링 부트의 스택 추적을 줄일 수 있습니까? (0) | 2019.05.18 |
[SPRING] Apache Camel 및 웹 서비스 (0) | 2019.05.18 |
[SPRING] @AspectJ Spring 3.1을 기반으로 한 AOP (0) | 2019.05.18 |