# @Bean
스프링 부트에서 "Bean"은 스프링의 IoC(제어의 역전) 컨테이너에 의해 관리되는 객체를 의미한다.
이 객체는 애플리케이션의 구성 요소로 사용되며, 스프링 프레임워크의 강력한 기능인 의존성 주입(Dependency Injection)을 통해 생성되고 관리된다.
Bean 생성 방식:
- 컴포넌트 스캔
- 자바 기반 설정
Bean 의존성 주입 방식:
- 생성자 주입
- 세터 주입
- 필드 주입
각 방식은 사용자의 필요와 상황에 따라 선택할 수 있으며, 스프링 부트의 특성을 활용하여 효율적으로 Bean을 관리할 수 있다.
1. Bean의 정의
Bean: 스프링 IoC 컨테이너에 의해 생성, 관리되는 객체를 의미한다. 일반적으로 애플리케이션의 서비스, 컴포넌트, 리포지토리 등으로 사용된다.
2. Bean의 생성
Bean은 다양한 방식으로 생성될 수 있다:
- 컴포넌트 스캔: @Component, @Service, @Repository, @Controller 등의 어노테이션을 사용하여 자동으로 Bean으로 등록된다.
- 자바 기반 설정: @Configuration 클래스에서 @Bean 어노테이션을 사용하여 명시적으로 정의할 수 있다.
- XML 설정: 전통적인 XML 파일을 통해 Bean을 정의할 수도 있다 (스프링 부트에서는 덜 사용됨).
3. Bean의 관리
스프링 IoC 컨테이너는 Bean의 생명 주기를 관리한다. Bean의 생성, 초기화, 소멸 등을 자동으로 처리하며, 이를 통해 개발자는 객체의 생성 및 관리에 대한 부담을 줄일 수 있다.
4. 의존성 주입
Bean은 다른 Bean에 의존할 수 있다. 스프링은 이러한 의존성을 자동으로 주입해 준다.
주입 방식에는 생성자 주입, 세터 주입, 필드 주입 등이 있다. 이를 통해 애플리케이션의 결합도를 낮추고, 테스트와 유지보수를 용이하게 한다.
5. Bean의 스코프
Bean은 다양한 스코프를 가질 수 있다:
싱글톤(Singleton): 기본 스코프. 애플리케이션 당 하나의 인스턴스만 생성된다.
프로토타입(Prototype): 요청할 때마다 새로운 인스턴스가 생성된다.
다른 스코프: 요청(Request), 세션(Session), 애플리케이션(Application) 등이 있다.
6. Bean의 사용 예시
Bean은 주로 서비스 레이어, 데이터 액세스 레이어, 컨트롤러 등에서 사용된다.
예를 들어, 데이터베이스와 상호작용하는 레포지토리 Bean, 비즈니스 로직을 처리하는 서비스 Bean 등이 있다.
7. Bean의 이점
재사용성: Bean을 통해 같은 객체를 여러 곳에서 재사용할 수 있다.
유지보수 용이성: 의존성 주입을 통해 코드의 결합도를 낮추므로 변경이 용이하다.
테스트 용이성: Mock 객체를 사용하여 단위 테스트를 쉽게 수행할 수 있다.
# yaml
소개
- 데이터 형식의 한 종류 (like json)
- YAML은 "YAML Ain't Markup Language" 의 약자로, 데이터를 나타내기 위한 사람이 읽기 쉬운 데이터 직렬화 포맷이다. 주로 구성 파일과 데이터를 저장하거나 전송할 때 사용된다.
- YAML은 계층적인 데이터 구조를 지원하며, 맵 (키-값 쌍), 시퀀스 (항목 목록), 스칼라 (문자열, 숫자) 등의 데이터 형식을 사용할 수 있다.
- 한 파일에서 프로필 관리를 할 수 있다.
알면 좋은 이유
- 데이터의 양이 많아지는 경우 계층 구조로 관리를 하는 것이 가독성에서 좋을 수 있다.
- yaml은 많은 현대적인 개발 환경과 툴에서 널리 사용되고 있다.
- 특히, 쿠버네티스와 같은 오케스트레이션 툴에서 YAML을 사용하여 리소스를 정의하는 경우가 많다.