티스토리 뷰

Application.java

Springboot project 생성시 작성되어 있는 파일로써, @SpringBootApplication 이라는 핵심 어노테이션을 통해 동작한다. java project의 main문과 같은 역할로 이해하자.

@SpringBootAPplication 은 @Configuration + @EnableAutoConfiguration + @ComponentScan 세가지를 한번에 묶어놓았다.

@ Configuration

@ Configuration은 클래스를 애플리케이션 컨텍스트에 대한 빈 정의의 소스로 태그 지정한다.

@EnableAutoConfiguration

@EnableAutoConfiguration은 스프링 부트를 사용하여 classpath설정, 다른 빈 및 다양한 속성 설정에 기초한 빈을 추가한다.

@ComponentScan

@ComponentScan의 기본 엘리먼트 값은 빈을 스캔할 기반 패키지다. Spring을 통해 다른 구성 요소, 구성 및 서비스를 찾을 수 있음을 알려준다. (스테레오타입 애노테이션이 붙은 클래스를 모두 찾아서 빈으로 등록해준다) 스캔할 패키지를 여러개 지정해도 된다. 패키지 이름 대신 마커 클래스나 인터페이스를 사용하는 방법도 있는데, 먼저 스캔할 기반 패키지에 다음과 같이 빈 인터페이스를 하나 만들어서 다음과 같이 사용하면된다.

public interface ServiceMarker{}

위와 같은 인터페이스는

@Configuration
@ComponentScan(basePackageClasses=ServiceMarker.class)
public class AppConfig {
}

위처럼 마커 클래스나 인터페이스의 패키지가 빈 스캐닝의 기준 패키지가 된다.

    mypro]ect

    + config
    + dao
    + serVlce
    + web

다음과 같은 디렉토리 구조를 가질때 또한 ComponentScan을 통해 한번에 빈등록을 할 수 있다.

@ComponnentScan(basePackages="myproject")

하지만 config 폴더 내에 @Configuration 클래스도 스캔 대상에 포함되는 문제가 발생하는데, 이러한 경우에는 다음과 같이 작성하면 된다.

@ComponentScan(basePackages="myproject", excludeFilters=@Filter(Configuration.class))

public class AppConfig{
}

같은 방식으로 특정 클래스를 직접 제외 대상으로 만들수도 있다.

@ComponentScan(basePackages="myproject", excludeFilters=@Filter(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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함