객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 역활을 수행하는 단위이다. 즉 "협력"하는 객체들의 모임이다. 또한 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하다.
클린코드의 저자 로버트 마틴이 정리한 좋은 객체 지향 설계의 5원칙
클라이언트가 아닌 프레임워크가 제어를 하게되는 제어역전은 어떻게 이루어질까? 동적인 객체 인스턴스 생성을 위해서 필요한 의존관계 주입!
스프링 컨테이너에 어떻게 빈이 저장되는지 알아보자!
싱글톤 패턴과 싱글톤 컨테이너를 알아보자
스프링 컨테이너에 빈을 등록하는 방법 지금까지 스프링 빈을 등록하기 위해서는 자바 코드의 @Bean을 활용하거나 XML의 을 통하여 설정 정보에 직접 스프링 빈을 등록했다! 그런데..
다양한 의존관계 주입 방법에 대해 알아보자!
조회 빈이 2개 이상 존재할때 어떻게 해결해야 할까?
어떤 경우에 자동주입과 수동 빈 등록을 해야할까?스프링의 등장 이후 시간이 지날수록 자동을 선호하는 추세라고 한다. 스프링은 @Component 뿐만 아니라 @Controller, @Service, @Repository처럼 계층에 맞추어 일반적인 애플리케이션 로직을 자
DB 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료 작업이 필요하다.스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝나야 필요한 데이터를 사
알고리즘 문제를 풀다보면 배열이나 리스트, 혹은 객체를 정렬해야 하는 경우가 있다.보통 빠르게 문제를 풀기위해 직접 구현하기 보다는, 자바의 표준 컬렉션 프레임워크와 관련된 클래스 및 인터페이스가 포함된 Java API(Java 프로그래밍에서 사용할 수 있는 라이브러리
스프링은 컨테이너를 통해 빈(Bean) 객체를 생성하고 의존성을 주입한다! 그리고 이 빈 객체들은 기본적으로 모두 싱글톤으로 생성된다. 그런데, 스프링은 멀티 스레드 방식을 사용하는 환경으로 사용자의 요청에 따라 여러개의 스레드가 생성된다. 그렇다면 하나의 인스턴스(
로그 추적기 같이 모든 요청단에서 필요한 로직은 공통 관심사항(AOP)이라고 볼 수 있다. 이렇게 공통 관심사항이 각 레이어 마다 코드로 작성되어 있다면 유지보수가 굉장히 힘들고, 또한 핵심 기능(비즈니스 로직) 보다 부가 기능(로그 추적 로직, 트랜잭션 기능 등..)
핵심(비즈니스 로직), 보조(로그 추적기, 트랜잭션 등..) 기능의 분리를 위해 템플릿 디자인 패턴을 활용해 보았다. 하지만! 상속으로 인해 부모-자식간의 강한 결합과 응집도가 생기며 이는 유지보수 측면에서 좋지 못한 설계이다. 상속이 아닌 위임으로
이전의 템플릿 메서드, 콜백 패턴과 전략 패턴은 구체화에 의존하며 유지보수가 쉽지 않았다.원본 코드를 변경하지 않고 사용할 수 있는 디자인 패턴인 프록시 패턴에 대해 알아보자!먼저 프록시의 개념에 대해 정리해보자.클라이언트는 서버에 필요한 것을 요청한다. 서버는 클라이
지금까지 템플릿 메서드, 콜백, 전략, 프록시 패턴에 대해 정리해보았다. 디자인 패턴은 왜 필요할까? 여러가지 이유가 있지만 대표적으로 유지보수성과 코드의 재사용성을 향상시키기 위해서다.공통 관심사항(AOP)을 적용하는 예시를 통해, 핵심 기능과 부가 기능의 분리를 위
프록시는 클래스의 수 만큼 생성해야 한다는 단점이 있었다. 이를 해결할 수 있는 두 가지 동적 프록시 기술 (JDK 동적 프록시, CGLIB)에 대해 정리해보았다.그러나 동적 프록시 또한 문제점이 있었는데..JDK 동적 프록시 (인터페이스 위임 기반) - Invocat
핵심/부가 기능의 분리를 위한 다양한 디자인 패턴과 기술에 대해 정리해보다 보니, 점점 스프링 AOP의 개념에 도달하고 있다.사실 모두 스프링 AOP 기술의 초석이 되는 내용들인 것..ProxyFactory의 생명주기에 포함되는 PointCut, Advice, Advi
ProxyFactory를 통해 Proxy를 생성방법을 통합하고 일관성을 유지할 수 있었다. 하지만 Proxy 기능을 적용하고자 하는 클래스들이 많을수록 설정 파일이 복잡해졌고, 빈 등록시에 컴포넌트 스캔을 사용하면 컴파일 과정에서 빈을 등록해버리기 때문에 Proxy를
이전까지는 프록시를 적용하기 위해 Pointcut, Advice 로 이루어진 Advisor를 만들어 스프링 빈으로 등록해야 했다. 스프링의 자동 프록시 생성기의 경우 빈으로 등록된 Adivosr들을 찾고, 적용될 스프링 빈들에 자동으로 프록시를 적용했다.이보다 더 간단