[DEV] J-Jay

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

Back-end/Spring

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

J-Jay 2023. 8. 31. 23:05
728x90

@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 비즈니스 로직

 

 

 

 

'Back-end > Spring' 카테고리의 다른 글

스프링 부트 구조  (1) 2023.09.02
스프링 부트 코드 이해 (2)  (0) 2023.08.31
스프링 부트 스타터  (0) 2023.08.31
스프링 Concept (2)  (0) 2023.08.31
스프링 Concept (1)  (0) 2023.08.30