Java

[Spring Boot] SpringBootServletInitializer 상속하는 이유

솔솔 2021. 6. 24. 14:17
반응형

Spring Boot 프로젝트를 생성해보면 프로젝트명+Application.java 가 자동으로 생성되어있는 것을 볼 수 있습니다.

 

프로젝트가 시작되는 시점에 실행되는 부분이죠!

 

소스를 보면 SpringBootServletInitializer 클래스를 상속 받은 것을 볼 수 있는데 왜 상속받는지 알고 사용하는 것이 좋겠죠!! 그래서 저도 한번 찾아봤어요~

 

우리가 Spring에서 개발하다보면 web.xml에 DispatcherServlet을 등록하는 작업(servlet-mapping...)을 했었는데 Servlet 3.0으로 업데이트 되면서 web.xml에 작업 없이도 배포가 가능해졌다고해요.

web.xml 설정을 WebApplicationInitializer 인터페이스를 구현하여 대신할 수 있고, Spring IoC 컨테이너를 생성해 ServletContext에 추가할 수 있도록 변경되었기 때문인데요.

* IoC (Inversion of Control) 제어의 역전 : 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미. 간단하게 말하면 제어의 흐름을 바꾼다.

객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드 작성 -> 가독성, 코드 중복, 유지보수 편함

 

SpringBootServletInitializer 클래스는 WebApplicationInitializer 인터페이스의 구현체로 SpringBootServletInitializer 클래스를 상속하는 것은 Spring Boot Application 동작이 가능하도록 웹 애플리케이션 컨텍스트(IoC 방식으로 Bean을 관리하는 컨테이너)를 구성한다는 의미라고합니다 :o

 

 

반응형