본문 바로가기
Spring

Spring Boot 실행 클래스 분석하기

by 융디's 2024. 6. 6.
728x90
Spring Boot 실행 클래스 분석하기
📄

Spring Boot 실행 클래스 분석하기

실행 클래스

@SpringBootApplication
public class DemoApplication {
		public static void main(String[] args) {
					SpringApplication.run(DemoApplication.class, args);
		}
}
  • @SpringBootApplication
    • 스프링 부트에서 메인 클래스에서 추가되는 애노테이션
    • 스프링 부트 애플리케이션의 기본적인 설정을 자동으로 구성
    • 클래스 레벨에서 사용
      • 스프링 부트 애플리케이션의 메인 클래스에 해당 애노테이션을 추가
  • SpringApplication.run()
    • 스프링 부트를 실행한다.
    • DemoApplication.calss 설정 파일(메타파일)을 첫 번째 파라미터로 받는다.
    • 왜 DemoApplication 클래스가 설정 파일일까? → @SpringBootApplication 때문
      • Spring Framework는 @Configuration이 붙은 클래스를 설정 클래스로 여긴다.
      • 자바 클래스 외에 yml, properties 파일이 설정을 역할한다.
    @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 {...... }
    • @EnableAutoConfiguraiotn
      • 스프링 부트에서 자동 구성을 활성화하는 어노테이션
      • 클래스 레벨에서 사용되며, 해당 클래스가 스프링 부트 애플리케이션의 자동 구성을 활성화하기 위해 클래스에 해당 어노테이션을 추가해야 한다.
    • @ComponentScan
      • 지정된 패키지와 하위 패키지에 컴포넌트를 스캔하여 스프링 빈으로 등록하는 어노테이션
      • 클래스 레벨에서 사용되며, 해당 클래스에서 컴포넌트를 스캔하여 스프링 빈으로 등록하기 위해서는 클래스에 해당 어노테이션을 추가해야 한다.
    • @Component
      • 스프링에서 컴포넌트를 스캔하고 빈으로 등록할 때 사용되는 가장 기본적인 어노테이션
      • 대표적인 자식 어노테이션
        • @Controller
          • 컨트롤러 클래스를 나타낸다.
          • 주로 웹 요청을 처리하고 응답을 생성하는 역할
        • @RestController
          • HTTP 요청을 처리하고 HTTP 응답을 생성하는 데 사용
          • RESTful 서비스를 제공하는데 사용 → JSON, XML 형식으로 데이터를 반환하여 클라이언트와의 상호작용 담당
          • @Controller와 @ResponseBody의 결합으로 이루어져 있어, 메서드 반환값은 HTTP 응답 본문으로 직접 전송된다.
        • @Service
          • 비즈니스 로직을 수행하는 클래스
          • 서비스 계층의 클래스에 사용, 트랜잭션 관리 담당
        • @Repository
          • 데이터 액세스 계층에서 사용되는 클래스
          • 데이터베이스와의 상호작용 담당
          • 데이터 액세스 예외를 스프링의 일반적인 예외로 변환해 주는 기능 제공
        • @Configuration
          • 설정 클래스를 표시
          • @Bean을 사용하여 빈을 정의
          • 프러퍼티 파일이나, 외부 설정을 사용하여, 애플리케이션의 동작을 제어하고 구성

728x90

'Spring' 카테고리의 다른 글

Spring Boot Project 생성하기(Gradle)  (0) 2024.06.05
WEB Server와 WAS  (0) 2024.06.04
Spring Framework과 Spring Boot  (0) 2024.06.03
Library와 Framework, API  (0) 2024.06.02