티스토리 뷰
Springboot project 생성시 작성되어 있는 파일로써, @SpringBootApplication 이라는 핵심 어노테이션을 통해 동작한다. java project의 main문과 같은 역할로 이해하자.
@SpringBootAPplication 은 @Configuration + @EnableAutoConfiguration + @ComponentScan 세가지를 한번에 묶어놓았다.
@ Configuration
@ Configuration은 클래스를 애플리케이션 컨텍스트에 대한 빈 정의의 소스로 태그 지정한다.
@EnableAutoConfiguration
@EnableAutoConfiguration은 스프링 부트를 사용하여 classpath설정, 다른 빈 및 다양한 속성 설정에 기초한 빈을 추가한다.
@ComponentScan의 기본 엘리먼트 값은 빈을 스캔할 기반 패키지다. Spring을 통해 다른 구성 요소, 구성 및 서비스를 찾을 수 있음을 알려준다. (스테레오타입 애노테이션이 붙은 클래스를 모두 찾아서 빈으로 등록해준다) 스캔할 패키지를 여러개 지정해도 된다. 패키지 이름 대신 마커 클래스나 인터페이스를 사용하는 방법도 있는데, 먼저 스캔할 기반 패키지에 다음과 같이 빈 인터페이스를 하나 만들어서 다음과 같이 사용하면된다.
public interface ServiceMarker{}
위와 같은 인터페이스는
basePackageClasses=ServiceMarker.class) (
public class AppConfig {
}
위처럼 마커 클래스나 인터페이스의 패키지가 빈 스캐닝의 기준 패키지가 된다.
mypro]ect
• + config
• + dao
• + serVlce
• + web
다음과 같은 디렉토리 구조를 가질때 또한 ComponentScan을 통해 한번에 빈등록을 할 수 있다.
basePackages="myproject") (
하지만 config 폴더 내에 @Configuration 클래스도 스캔 대상에 포함되는 문제가 발생하는데, 이러한 경우에는 다음과 같이 작성하면 된다.
basePackages="myproject", excludeFilters= (Configuration.class)) (
public class AppConfig{
}
같은 방식으로 특정 클래스를 직접 제외 대상으로 만들수도 있다.
basePackages="myproject", excludeFilters= (type=FilterType.ASSIGNABLE_TYPE, value=AppConfig.class)) (
public class AppConfig{
}
'Back-end' 카테고리의 다른 글
[Back-end]Procedure? StoredProcedure (0) | 2019.07.30 |
---|---|
[Spring] Servlet이란? (0) | 2019.04.09 |
[Back-end] 메이븐이란? (0) | 2019.01.29 |
[JPA]JPA Criteria & Specification (0) | 2019.01.15 |
[Back-end] jwt token 통신과정 (0) | 2019.01.14 |