기본적으로 Spring의 빈의 라이프 사이클은 컨테이너의 시작과 함께 생성되어 컨테이너가 종료될 때까지 유지된다. 이는 Spring에서 빈을 생성할 때 기본 스코프가 싱글톤 스코프이기 때문이다. 여기서 스코프란 빈이 존재할 수 있는 범위를 말한다. 이번 포스팅에서는 기본 스코프인 싱글톤과 스프링이 제공하는 다른 스코프에는 어떤 것이 있으며, 왜 사용하는지 알아보고자 한다. 스코프의 종류 기본적으로 스프링은 아래와 같이 다양한 스코프를 지원한다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스코프 request: 웹..
@Autowired를 사용하다 보면 NoUniqueBeanDefinitionException: No qualifying bean of type 에러를 심심치 않게 마주할 수 있다. 이번 포스팅에서는 NoUniqueBeanDefinitionException에러가 무엇이고 이를 해결하는 방법들에 대해서 알아보고자 한다. 에러 발생 원인 NoUniqueBeanDefinitionException 에러는 의존성을 자동 주입할 때, 주입하려는 빈이 하나가 아닌 2개 이상 존재하여 어떤 빈을 주입해야 하는지 알 수 업을 때 발생하는 에러이다. 예를 들어, 할인 정책의 기능을 수행하는 객체인 DiscountPolicy라는 인터페이스가 있고, 고정 금액 할인, 고정 비율 할인을 실제로 적용하는 FixDiscountPol..
스프링 컨테이너에서 IoC에 따라 빈을 생성하고 DI를 수행할 때 아래와 같이 설정파일인 ApplicationConfiguration.xml 또는 ApplicationConfiguraton.class 객체를 생성하여 직접 빈을 관리하곤 했다. (IoC와 DI가 뭔지 모른다면 여기로) (Spring) DI, IOC와 Spring Container란 ? 스프링을 공부하다 보면 IoC, DI 라는 용어를 자주 접하게 된다. 최근 면접에서도 IoC와 DI에 대해 설명해보라는 질문을 받았는데 개념이 확실하게 잡혀있지 않아서 버벅이면서 대답했던 기억이 난 recordofwonseok.tistory.com 아래는 그 예시이다. //스프링 컨테이너 생성 ApplicationContext applicationContex..
스프링을 공부하다 보면 IoC, DI 라는 용어를 자주 접하게 된다. 최근 면접에서도 IoC와 DI에 대해 설명해보라는 질문을 받았는데 개념이 확실하게 잡혀있지 않아서 버벅이면서 대답했던 기억이 난다. 이번 기회에 IoC와 DI의 개념을 확실하게 잡고 스프링의 컨테이너에 대해서 정리해보도록 하겠다. IoC(Inversion of Control) - 제어의 역전 IoC는 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부 설정 파일에서 제어하는 것을 말한다. 한 문장으로 압축하려니 이해하기 어려운 부분이 있으므로 예시를 들어 설명하겠다. 회원가입과 회원조회의 기능을 수행하는 MemberApp을 구현한다고 가정하자. MemberApp의 관계도는 다음과 같다. (실제 DB와 외부 시스템 저장소를 사용하는 ..
SOLID는 로버트 마틴이 제안한 좋은 객체 지향 설계의 5가지 원칙을 정리한 것이다. SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open/closed principle) : 개방-폐쇄 원칙 LSP (Liskov substitution principle) : 리스코프 치환 원칙 ISP (Interface segregation principle) : 인터페이스 분리 원칙 DIP (Dependency inversion principle : 의존관계 역전 원칙 의 앞글자를 따서 SOLID 원칙이라고 부른다. SRP(Single Responsibility Principle) SRP는 단일 책임 원칙으로 "한 클래스는 하나의 책임을 가진다."는 원칙이다. 이 개념..