@SpringBootApplication
- 이 어노테이션이 ComponentScan과 Configuration(자바 설정파일에 붙여야하는 어노테이션)을 상위 클래스로 가지고 잇음.
@SpringBootApplication
이 스프링 부트를 이용할 때 설정파일임
이 안에@Bean
을 만들면 됨.- Indicates a configuration class that declares one or more
@Bean
methods and also triggers auto-configuration and component scanning.
This is a convenience annotation that is equivalent to declaring@Configuration
,@EnableAutoConfiguration
and@ComponentScan
.
dependency 추가하고 싶으면
프로젝트 우클릭 - Spring- Add Starters
원하는 디펜던시 검색 후 추가, 그 다음 페이지는 pom.xml이 어떻게 바뀔거야~ 하는거니까 pom.xml 체크버튼 누르고 finish.
검색해도 안나오면 maven repository에서 찾아서 직접 pom.xml에 추가
WebInitialize
: 특정 클래스(AbstractAnnotationConfig...)로 부터 상속받아서 web.xml을 대신하는 클래스
스프링부트에서는 사용하지 않고 DemoApplication.java가 있는 패키지에 ServletInitializer라는 클래스를 만들고
package com.example.demo;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}
}
스프링 부트에는 톰캣이 embedded 돼있기 때문에 톰캣서버를 따로 설치 하지 않아도 되고 얘가 port가 8080으로 기본적으로 설정돼있음
spring-boor-starter-web
에 톰캣이 내장. 톰캣서버를 시작시켜서 스프링 웹 컨테이너를 구동시키도록 MyServletContext.java와 ServletInitailzer.java에 저장돼있음
자바파일에 포트번호를 설정하면 또 자바를 실행시켜야 하는 불편함이 있기때문에
xml이 아닌 application.properties또는 javaConfiguration에 설정하는데, 이중에서 가벼운 설정파일은 application.properties에 설정한다.
포트번호를 9999로 변경.
로그를 살펴보면 9999로 실행되고 있고, context path ''
: ''
를 root path라고 한다.
root path를 변경하려면 server.servlet.context-path=/원하는root
를 추가
com.example.demo의 하위패키지는 컴포넌트 스캔 안해도 된다
-> 자동 컴포넌트 스캔됨.
-> 패키지 구성이 중요하다!
패키지를 구성할 때, 부모패키지 안에 하위패키지로 꼭 넣는것이 아니라 ComponentScan(basePackages= {"container", "com.example.demo.control"})
처럼 다른 패키지로 구성해도 끌어올 수 있음!
DemoApplication을 com.my안에 넣어놓으면 컴포넌트스캔을 따로 안해도 됨.