@SpringBootApplication // 스프링 부트 사용에 필요한 기본 설정을 해줌.
public class example {
public static void main(Stringp[} arg) {
SpringApplication.run(example.class, args); // 스프링 애플리케이션 실행
// 첫번째 인수: 스프링 애플리케이션의 메인 클래스로 사용할 클래스
// 두번째 인수: 커맨드 라인에서 입력 받게 되는 인수들
}
}
위 클래스는 자바의 main() 메소드와 같은 역할을 한다. 즉, 여기서 스프링 부트가 시작이 된다.
@SpringBootApplication 구성 (Ctrl 누르고 해당 애너테이션 클릭시 상세정보 확인 가능)
핵심 3가지 애너테이션
@SpringbootConfiguration
스프링 부트 관련 설정을 나타냄. @Configuration을 상속해서 만든 애너테이션.
개발자가 직접 사용은 하지 않는다.
@ComponentScan
사용자가 등록한 빈을 읽고 등록하는 애너테이션. @Component 애너테이션을 가진 클래스들을 찾아 빈으로 등록하는 역할을 한다.
모든 빈에 @Component만 사용하는 것이 아니라 용도에 따라 다음 애너테이션들도 많이 사용한다. 또한 다음 애너테이션들은 모두 @Component 애너테이션을 갖고 있다.
빈이 무슨 역할을 하는지 명확하게 구분하기 위해 다른 이름으로 덮어 두었기 때문이다.
@EnableAutoConfiguration
스프링 부트에서 자동 구성을 활성화하는 애너테이션. 스프링 부트 서버가 실행될 때 스프링 부트의 메타 파일을 읽고 정의된 설정들을 자동으로 구성하는 역할을 한다.
cf) @RestController와 @Component는 애너테이션 용어가 다른데 어떻게 @Component 처럼 취급을 하는가?
- @RestController 상세 구성
위 코드를 보면 @Controller + @ResponseBody가 @RestController 애너테이션인 것을 알 수 있다.
- @Controller 상세 정보
위 코드를 보면 @Component 애너테이션이 존재한다. 따라서 @RestController 애너테이션은 @ComponentScan을 통해 빈으로 등록될 수 있다.
스프링
: 엔터프라이즈 애플리케이션을 쉽게 개발할 수 있도록 도와주는 프레임워크
IoC
: 제어의 역전
DI
: 의존성 주입
SpringBootApplication
: 스프링 부트 관련된 설정을 하는 @SpringBootConfiguration, 사용자가 등록한 빈을 읽고 등록하는 @ComponenetScan, 자동 설정으로 등록되는 빈을 읽고 등록하는 @EnableAutoConfiguration으로 이루어져있다.
@Component
: 해당 애너테이션이 있는 클래스는 빈으로 등록 되며 @Controller, @RestController, @Configuration, @Repository, @Service 모두 @Component 애너테이션을 가지고 있다. 때에 따라 알맞은 애너테이션을 선택해야 한다.