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
'Java' 카테고리의 다른 글
CI/CD란? 지속적 통합, 지속적 제공(배포) (0) | 2021.09.01 |
---|---|
[Spring Boot] /index.html 파일 static 폴더가 아닌 templates 폴더에서 호출되게 하는 방법 (0) | 2021.06.24 |
[Spring Boot] application.properties 설정하기 (3) | 2021.06.18 |
[Spring Boot] 프로젝트 생성하기 (0) | 2021.06.15 |
[JAVA] FCM 프로젝트 생성 및 JAVA에서 PUSH 보내는 방법 (6) | 2021.06.14 |