민서네집

WebApplication 에서 Spring Bean 가져오기 본문

Spring

WebApplication 에서 Spring Bean 가져오기

브라이언7 2013. 5. 6. 10:34

기존 웹어플리케이션에서 Spring MVC를 추가하려고 한다.


이전 코드는 그대로 놔두고, mgmt 라는 폴더를 하나 만들어서 그 폴더 아래만 Annotation 을 Scan 하도록 설정했다.


applicationContext.xml 파일


<context:component-scan base-package="com.sample.mgmt">

<context:exclude-filter expression="org.springframework.stereotype.Controller"

type="annotation" />

</context:component-scan>


기존 패키지에서 Spring Bean 을 가져와서 사용하고 싶을 때는 어떻게 해야할까?


web.xml 에서


<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/spring/applicationContext.xml</param-value>

</context-param>

<listener>

<listener-class>com.sample.config.AppServletContextListener</listener-class>

</listener>


AppServletContextListener.java

public class AppServletContextListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent contextEvent) {
// Do nothing.
}

@Override
public void contextInitialized(ServletContextEvent contextEvent)
{
ServletContext servletContext = contextEvent.getServletContext();

WebApplicationContext wac = WebApplicationContextUtils.
getRequiredWebApplicationContext(servletContext);

Global.setWebApplicationContext(wac);
}
}

기존 패키지에서 Spring Bean을 가져와 쓰고자 하는 코드에서

    WebApplicationContext wac = Global.getWebApplicationContext();
    CommLogService bean = (CommLogService)wac.getBean(CommLogService.class);
    bean.saveResult(); // 필요한 메서드 호출.

위에서 getBean() 하는 코드에서 

CommLogService bean = (CommLogService)wac.getBean("commLogService");

이렇게 String 으로 파라미터를 줘도 되는데, 이렇게 하려면

@Service("commLogService")
public class CommLogServiceImpl implements CommLogService {
}

위와 같이 Service Annotation 안에 Bean의 name(id) 값을 줘야 한다.

<참고>

< How to get Spring Application Context in Spring Framework >


< How to avoid using ApplicationContext.getBean() when implementing Spring IOC >


< Why is Spring's ApplicationContext.getBean considered bad? >



'Spring' 카테고리의 다른 글

[spring] 어느 곳에서나 request 를 얻기.  (0) 2013.07.09
Transaction 설정 파일  (0) 2013.07.05
MyBatis 사용시 주의점  (0) 2013.04.24
Java Custom Annotation Example  (0) 2013.04.23
Spring MVC From Handling Annotation Example  (0) 2013.04.23
Comments