1. CoC(Convention over Configuration)
- 소프트웨어 프레임워크에서 사용되는 디자인 패러다임
- 프레임워크에서 관습적으로 사용되는 패턴을 사용자가 정의할 필요가 없도록 하는 것
- 사용자는 의미없이 관습적인 내용을 정의하느라 고생할 필요가 없음
- 그러면서도 사용자가 직접 정의할 수 있어야하는 부분에는 제약이 없기에 유연성을 잃지 않음
2. Spring Boot
- Spring 프레임워크의 CoC 솔루션
- Spring에서 관습적으로 사용되는 설정이나 의존성 관리 방식, 개발환경 구축이나 배포 등의 작업들에서
사용자가 임의로 정의할 수 있어야한다고 판단되는 부분을 제외한 영역을 모두 자동화해주는 도구 - Spring Boot가 지원하는 기능들
- 설정의 자동화(Auto Configuration) - @SpringBootApplication
- 스프링부트 프로젝트의 Application 클래스에 붙어있는 설정 자동화 어노테이션
- 내부적으로 아래에 설명할 세 개의 Spring 어노테이션을 사용
- @EnableAutoConfiguration
- auto configuration 대상으로 등록된 클래스들을 자동으로 Bean으로 등록
- 해당 클래스들은 사용자가 별도로 등록해주지 않아도 Bean으로 사용 가능
- 모든 auto configuration 대상을 항상 Bean으로 등록해두는 것은 리소스 낭비
=> AutoConfigurationImportSelector 가 실제로 Bean으로 등록할 클래스를 선별
=> 클래스들이 구현한 Condition 인터페이스를 확인하여 조건에 맞는 클래스만을 선별 - Condition 어노테이션
- Conditional : 해당 클래스가 구현한 모든 Condition 인터페이스를 만족해야 등록
- CondtionalOnClass : 해당 클래스가 classpath에 존재할경우 등록
- ConditionalOnBean : 해당 Bean이 BeanFactory에 포함되어있을 경우 등록
- ConditionalOnMissingBean : 해당 Bean이 BeanFactory에 포함되어있지 않을 경우 등록
- ConditionalOnCloudPlatform : 해당 클라우드 플랫폼이 사용중일 경우 등록
- ConditionalOnExpress : SpEL 조건문이 참일 경우 등록
- @SpringBootConfiguration
- Spring의 Configuration 어노테이션을 대체하는 어노테이션
- 애플리케션에 단 하나만 존재할 수 있으며 스프링부트에서 지원하는 테스트 어노테이션인
@SpringBootTest는 이 어노테이션이 붙은 클래스를 메인으로 하위 설정을 가져온다.
- @ComponentScan
- @Component 어노테이션이 붙은 클래스를 자동으로 스캔하여 Bean으로 등록
- 사용자 Bean를 등록할 수 있게 해주는 어노테이션
- 내장 웹 서버(Embedded Server) / 서블릿 자동설정
- Spring Boot로 프로젝트를 생성할 경우 Tomcat과 Dispatcher Servlet을 자동으로 설정하여
사용자가 별도로 웹 서버를 설치하고 Dispatcher Servlet을 설정해줄 필요가 없음 - 또한 배포시에도 내장 서버를 탑재한 jar파일만을 배포하면 jar 파일을 실행하는 것만으로
서버를 구동할 수 있게됨
- Spring Boot로 프로젝트를 생성할 경우 Tomcat과 Dispatcher Servlet을 자동으로 설정하여
- 의존성 관리
- starter 를 통해 의존성을 관리
- 기존 Spring에서 버전에 따른 호환성을 고려하여 의존성을 수동으로 관리해야했던 문제 해결
- 설정의 자동화(Auto Configuration) - @SpringBootApplication
'프레임워크 > Spring' 카테고리의 다른 글
#5 Spring AOP(Aspect Oriented Programming) (0) | 2022.04.30 |
---|---|
#4 Spring 의존성 주입 방법 (0) | 2022.04.27 |
#3 Spring에 적용된 디자인 패턴 (0) | 2022.04.24 |
#2 Spring Bean (0) | 2022.04.22 |
#0 Spring (0) | 2022.04.20 |