SPRING/스프링 MVC
스프링 IOC 컨테이너 연동
JUMP개발자
2021. 6. 5. 18:16
pom.xml에 의존성 추가
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.7</version>
</dependency>
ContextLoaderListener 등록
contextLoaderListenr 역할
- ApplicationContext를 서블릿 어플리케이션 생명주기에 맞춰서 바인딩해준다.
- ApplicationContext를 웹어플리케이션에 등록된 서블릿들이 사용할 수 있도록 서블릿 컨텍스트에 등록해준다.
- 서블릿이 종료될때 제거해준다.
- 즉, ApplicationContext를 연동해준다.
- 서블릿에서 IoC 컨테이너를 ServletContext를 통해 꺼내 사용할 수 있다.
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
ApplicationContext 생성
- xml도 많이 사용하지만, 최근에는 Java설정파일을 많이 사용한다.
- 아래는 Spring IOC container를 사용하는 방법이지, Spring MVC까지 사용한 것은 아니다.
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.springmvc.AppConfig</param-value>
</context-param>
@Configuration
@ComponentScan
public class AppConfig {
}
public class HelloServlet extends HttpServlet {
@Override
public void init() throws ServletException {
// 서블릿 생성 (처음 한번마 실행)
System.out.println("init");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet");
ApplicationContext context = (ApplicationContext) getServletContext()
.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);;
HelloService helloService = context.getBean(HelloService.class);
resp.getWriter().write("Hello Servlet " + helloService.getName());
}
@Override
public void destroy() {
System.out.println("destroy");
}
}
@Service
public class HelloService {
public String getName() {
return "jumpDeveloper";
}
}