스프링 5

[Spring Core] 스프링 빈 생명주기와 스코프

♻ 스프링 빈 생명주기(Life-Cycle) I/O 작업들처럼 연결을 해주고, 필요없거나 종료된 경우 해당 연결을 끊어주기 위해서는 반드시 해당 작업의 초기화와 종료 작업이 필요하다. 스프링 빈 역시 이러한 점을 가지고 있다. 객체를 생성하고, 의존관계를 주입해준다. 객체 생성 → 의존관계 주입 스프링 빈은 객체를 생성하고, 의존관계를 주입이 완료가 된 후에야 비로소 필요한 데이터를 사용할 수 있는 준비를 마치게 된다. 스프링 빈은 의존관계가 모두 주입된 이후, 호출해야한다. 그렇다면, 해당 빈의 초기화 작업이 모두 이루어졌는 지를 개발자가 알아야 한다. 당연하지만, 기화 작업이 끝난 후에 해당 데이터를 사용해야 예기치 못한 오류들을 피할 수 있기 때문이다. 이를 개발자가 알기 위해서는 우선, 스프링 빈..

Spring/공부 2023.01.14

[Spring Core] 컴포넌트 스캔과 의존성 주입

🔍 컴포넌트 스캔이 필요한 이유 스프링은 무수히 많은 컴포넌트와 빈들을 가지게 되며, 프로젝트의 규모가 커져갈수록 더 많은 컴포넌트들과 빈들을 정의해주어야 하는 번거로움과 함께 실수를 하게 될 수 있다. 그래서 스프링 빈은 설정 정보가 없더라도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공함으로써 이러한 문제를 해결하고자 마련되어 있다. 🎯 컴포넌트 스캔 작동 원리 @ComponentScan 은 @Component 어노테이션이 있는 클래스들을 스프링 빈으로 등록하는 과정을 거치게 된다. 이때, 스프링 빈은 기본적으로 맨 앞글자만 소문자를 사용한 이름으로 지정된다. @Component("nothing") public class Something { ... } 위처럼 하는 경우 스프링 빈 이..

Spring/공부 2023.01.14

[Spring Core] 스프링 컨테이너와 스프링 빈

🛒 스프링 컨테이너란? 스프링에서 사용할 객체들을 담아두고 있는 것 등록된 스프링 빈을 생성하고 의존 관계를 주입하고 생명주기를 관리해 주는 장치이다. @Configuration 어노테이션을 설정 클래스에 붙여 설정 파일을 구성할 수 있으며, 해당 설정 파일에 있는 메소드들에 @Bean 어노테이션을 붙여 스프링 컨테이너에 빈을 등록시킬 수 있다. @Configuration public class AppConfig { @Bean public void DiscountPolicy discountPolicy() { return new MemberShipDiscountPolicy(); } } 위와 같은 예시처럼 사용할 수 있다. 스프링은 애플리케이션 컨텍스트로 시작하며, 이를 편하게 "스프링 컨테이너"라고 칭한다..

Spring/공부 2023.01.11

[Spring] 빈 (Bean) 설명

Bean Bean은 Spring Framework에서 앱을 구성하는 기본적인 객체입니다. 개발자는 Bean을 정의하고, 활용합니다. 그럼 Container는 개발자가 정의한 Bean을 가지고 객체로 만들고 관리하고, 개발자가 필요로 할때 제공합니다. 즉, Bean을 어떻게 정의하고 사용해야하는 지 개발자는 알고 있어야합니다. @Bean // 해당 어노테이션으로 쉽게 정의할 수 있다. Bean은 기본 객체이므로 무엇이든지 될 수 있습니다. 다만 Bean은 BeanDefinition으로 정의됩니다. BeanDefinition에 따라 활용하는 방법이 달라지게 됩니다. BeanDefinition속성에 따라 Container가 Bean을 어떻게 생성하고 관리할지, 그리고 Bean간의 관계를 어떻게 풀어나갈 것인지..

Spring 2022.01.31

[Spring] Spring Core 설명

스프링 코어란(Spring Core)? Spring Container Spring 프레임워크의 근간이 되는요소로 IoC(또는 DI) 기능을 지원하는 영역을 담당합니다. 빈 저장소를 기반으로 빈 클래스들을 제어할 수 있는 기능을 지원하기도 합니다. 빈 저장소의 경우, IOC 패턴이 적용되어 객체 구성부터 의존성 처리까지 모든 일을 처리하는 핵심적인 역할을 합니다. Container는 개발자를 대신하여 Bean을 생성/관리/제거 합니다. Container가 Bean을 전체적으로 관리를 해주므로 덕분에 개발자는 모듈 간에 의존 및 결합으로 인해 발생하는 문제로부터 자유로워졌습니다. 추가로 독립적인 코드를 어노테이션 (@Bean)으로 넘겨주면 Container가 알아서 호출해줍니다. Container가 개발자를..

Spring 2022.01.30