스프링 부트 코드 이해 (1)

@SpringBootApplication
@SpringBootApplication
public class SpringBootDeveloperApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDeveloperApplication.class,args);
}
}
이 클래스는 자바의 main() 메소드와 같은 역할을 한다. 즉 여기서 스프링 부트가 시작된다.
@SpringBootApplication 어노테이션을 추가하면 스프링 부트 사용에 필요한 기본 설정을 해준다.
SpringApplication.run() 메서드는 애플리케이션을 실행한다. 첫 번째 인수는 스프링 부트 애플리케이션의 메인
클래스로 사용할 클래스, 두 번째 인수는 커맨드 라인의 인수들을 전달한다.
IntellJ에서 어노테이션을 [Ctrl] 누른 상태에서 마우스 클릭하면 아래와 같은 소스코드가 나온다.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
...
}
여기서 세 가지 어노테이션인 @SpringBootConfiguration, @ComponentScan, @EnableAutoConfiguration을 자세히 보자
@SpringBootConfiguration
@Configuration을 상속하여 만든 어노테이션이며, 스프링 부트 관련 설정을 나타낸다.
@ComponentScan
사용자가 등록한 빈을 읽고 등록하는 어노테이션이다. @Component라는 어노테이션을 가진 클래스들을 찾아 빈으로 등록하는 역할을 한다. 그렇다고 모든 빈에 @Component만 사용하는건 아니다.
@EnableAutoConfiguration
스프링 부트에서 자동 구성을 활성화 하는 어노테이션이다. 스프링 부트 서버가 실행될 때 스프링 부트의 메타 파일을 읽고 정의된 설정들을 자동으로 구성하는 역할을 수행한다.
META-INF의 spring.factories 파일에 클래스들이 모두 @EnableAutoConfiguration을 사용할 때 자동 설정된다.
그외 참고할만한 어노테이션
| 어노테이션 | 내용 |
| @Configuration | 설정파일등록 |
| @Repository | ORM매핑 |
| @Controller, @RestController | 라우터 |
| @Service | 비즈니스 로직 |