본문 바로가기

Spring

(4)
스프링 컨테이너와 스프링 빈 오늘은 스프링 컨테이너와 스프링 빈에 대해 간단히 기록해보는 시간을 가지려고 한다. 스프링 컨테이너란? 간단히 말해 스프링 빈들을 관리해주는 저장소를 스프링 컨테이너라고 한다. 흔히 ApplicationContext를 스프링 컨테이너라고 이야기하기도 하며, 정확히 스프링 컨테이너의 최상위 객체는 BeanFactory 이다. 실제로 아래처럼 ApplicationContext Interface 의 주석을 보면 구성 요소에 접근하기 위해 ListableBeanFactory 를 상속받고 있고, ListableBeanFactory 역시 BeanFactory interface 를 상속받는 것을 확인할 수 있다. /** * An ApplicationContext provides: * Bean factory metho..
IoC, DI 그리고 컨테이너 이번 글에서는 제어의 역전이라고 불리는 IoC, 의존관계 주입이라고 불리는 DI 의 간단한 개념에 대해 알아보도록 하겠다. IoC - 제어의 역전 (Inversion of Control) 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전이라고 한다. public class MemberService { private MemberRepository repository; public void save(String id) { repository.save(id); } } 간단한 예제로 위의 코드를 보면 MemberService 라는 클라이언트는 추상화된 MemberRepository 라는 인터페이스에만 의존하고 있는걸 확인할 수 있다. 이처럼, MemberService 클래스는..
좋은 객체 지향 설계의 5가지 원칙(부제: SOLID) 오늘은 좋은 객체 지향 설계의 5가지 원칙. 흔히 SOLID 라고 불리는 내용에 대해 기록해 보려고 한다. 이전 포스팅에서 내용을 같이 적어둘까 했지만 아무래도 SOLID 라는 용어는 그 자체만으로도 많이 언급되기 때문에 따로 정리해두면 좋겠다는 생각이 들어 따로 글을 쓰게 되었다. SOLID 아직 책을 직접 읽어보지는 못했지만 클린코드 라는 책으로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리한 것이며 간단한 내용은 아래와 같다. SRP : 단일 책임 원칙 (Single Responsibility Principle) OCP : 개방-폐쇄 원칙 (Open/Closed Principle) LSP : 리스코프 치환 원칙 (Liskov Substitution Principle) ISP : 인..
객체 지향 설계와 스프링(부제: 왜 스프링인가? / 대서사시의 시작) 오늘부터 지금까지 계속해서 실무에서 사용해온 스프링에 대해 조금씩 정리해보는 시간을 가지려고 한다. 사실 이러한 생각을 하게된 이유는 우리의 갓갓 김영한님의 강의 덕분이었다. 지금은 몇번이나 돌려본 김영한님의 강의들이지만 처음 스프링 강의를 들었을때 너무 큰 충격이었다. 나는 실제 회사에 입사하고 아무 생각도 없이 회사에서 스프링을 쓰고 있어서 자연스럽게 그냥 스프링을 쓰게 되었고 왜 스프링을 사용하는가? 어떻게 스프링을 사용하는가? 이런 질문들에 대답도 못할 정도로 그냥 너무 막연히 스프링을 사용하고 있었다. 당연히 이렇다 보니 기술에 대한 깊이는 그냥 없는 수준과 별 차이가 없었다... 하지만 강의를 몇번을 돌려보며 스프링이 정말 놀라운 수준으로 잘 설계된 프레임워크라는 생각을 점점 하게 되었고 그 ..