STS > File > New > Spring Starter Project
Intellij > File > new > project > Spring Initializr
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootBoilerPlateApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootBoilerPlateApplication.class, args);
}
}
maven으로 프로젝트 빌드
프로젝트 우클릭 > Run as > maven clean > maven install > maven build.. > Spring boot app 으로 프로젝트 시작
~
~
Application 클래스의 main 메소드가 시작된다.
이 때 해당 클래스 명이 아니더라도 @SpringBootApplication 어노테이션이 있는 클래스의 main 메소드가 실행됨
@SpringBootApplication
어노테이션은 이 3개의 어노테이션을 모두 담고 있는 어노테이션이다.
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
스프링부트가 나오기 전까지는 ViewResolver를 설정하기 위해서 application-context.xml이 servlet-context.xml에
추가하거나, JavaConfig 기반의 환경일 경우, @Configuration 클래스 - WebMvcConfig등의 클래스 - 에 ViewResolver설정을 해줘야 했었다.
먼저 간단한 Controller 클래스를 만드는데, 클래스가 만들어지는 위치가 중요하다.
스프링부트는 메인클래스의 설정에 의해 컴포넌트스캔을 한다고 했었는데,
스프링부트는 컴포넌트 스캔을 할 때, 기본적으로 메인클래스가 있는 위치를 기준으로 스캔을 하게된다.
ComponentScan
만약, AutoScan이 되어야 하는 컴포넌트 클래스들 - 대표적으로 @Controller, @Service, @Repository, @Component등-의 위치가 메인클래스가 위치한 패키지보다 상위 패키지에 있거나, 하위가 아닌 다른 패키지에 있는 경우, 스캔이 되지 않는다.
이런 문제를 해결하기 위해서는,
명시적으로 ComponentScan을 할 Base Package를 지정해주면 된다.
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
메인클래스에 Annotation을 추가함으로써 SpringBoot시작시 실행되는 Auto Configuration 작업중 DatatSource 설정부분을 제외시킬 수 있다.
@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) // Datasource설정은 자동설정에서 제외
@ComponentScan(basePackages = "com.boilerPlate.app")
'Spring > spring boot 및 기타' 카테고리의 다른 글
[SPRING] 스프링 스케쥴링 추가 @Scheduled (0) | 2020.09.27 |
---|---|
vscode 로 스프링부트 실행하기 (0) | 2020.09.18 |
[spring boot] mongodb 연결 및 _class 삭제 (5) | 2020.09.09 |
[spring] spring boot 초기 구동 시키기 및 초기화 코드 (0) | 2020.08.29 |
[SPRING BOOT] 스프링 부트 2.3 변경된 내용 (0) | 2020.06.21 |