728x90
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을 사용하여 빈을 정의
- 프러퍼티 파일이나, 외부 설정을 사용하여, 애플리케이션의 동작을 제어하고 구성
- @Controller
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 |