스프링 핵심 원리
위의 코드만 보았을때, 역할과 구현을 분리하고, 다형성 활용, 인터페이스와 구현객체를 분리하는 등 OCP, DIP 같은 객체지향 설계원칙을 준수한 것으로 보인다.하지만 클래스 의존관계를 보면기대했던 의존관계와 달리,인터페이스(DiscountPolicy) 뿐 아니라 구현
앞선 예제에서는 3가지 SRP, DIP, OCP 를 적용했다.한 클래스는 하나의 책임만 가져야 한다. 클라이언트 객체는 직접 구현 객체를 생성하고, 연결하고, 실행하는 다양한 책임을 가지고 있다.SRP 단일 책임 원칙을 따르면서 관심사를 분리함구현 객체를 생성하고 연
Spring으로 전환 이전까지 작성한 코드를 Spring으로 전환해보았다. AppConfig에 설정을 구성한다는 뜻의 @Configuration 을 붙여준다. 각 메서드에 @Bean 을 붙여준다. 이렇게 하면 스프링 컨테이너에 스프링 빈으로 등록한다. Applica
싱글톤 패턴 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 따라서 객체 인스턴스를 2개 이상 생성하지 못하도록 private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 막아야한다. 싱글톤 패턴을 적용하면 고객의 요청이
ComponentScan 지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 <bean> 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. 지금까지 예제에서는 몇개가 안되었지만, 이렇게 등록해야 할 스프링 빈이 수십, 수백개가 되면
의존관계 주입 의존관계 주입은 크게 4가지 방법이 있다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 1. 생성자 주입 이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법이다. 특징 생성자 호출 시점에 딱 1번만 호출되는것이 보장
생성자 주입을 선택하는 이유 1. 불변 대부분의 의존관계 주입은 한번 일어나면 애플리케이션 종료시점까지 의존관계를 변경할 일이 없다. 오히려 대부분의 의존관계는 애플리케이션 종료 전까지 변하면 안된다.(불변해야 한다.) 수정자 주입을 사용하면, setXxx 메서드를 p
생명주기 콜백
빈 스코프란? 빈이 존재할 수 있는 범위를 말한다. 스프링이 지원하는 스코프는 다음과 같다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프이다. 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하
싱글톤 빈과 함께 사용시 문제점 스프링 컨테이너에 프로토타입 빈 직접 요청1 클라이언트A는 스프링 컨테이너에 프로토타입 빈을 요청한다. 스프링 컨테이너는 프로토타입 빈을 새로 생성해서 반환(x01)한다. 해당 빈의 count 필드 값은 0이다. 클라이언트는 조회한 프
특징 웹 스코프는 웹 환경에서만 동작한다. 웹 스코프는 프로토타입과 다르게 스프링이 해당 스코프의 종료시점까지 관리한다. 따라서 종료 메서드가 호출된다. 종류 request: HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프, 각각의 HTTP 요청마다 별도