1\. 스프링이란?스프링은 자바 언어 기반의 프레임워크다. 자바 언어의 가장 큰 특징은 객체 지향 언어고, 스프링은 객체지향 언어가 가진 특징을 살려내는 프레임워크다. 즉 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크인 것이다.2\. 좋은 객체 지향
비즈니스 요구사항과 설계 회원 도메인 설계 회원 클래스 다이어그램
이제 이전 프로젝트에서 기획자가 새로운 할인 정책을 추가하려고 하는 경우다.다음 처럼 정액 할인이 아는 정률 할인 정책을 추가하려 하는 시나리오다.따라서 다음과 같이 RateDiscountPolicy를 추가해 할인 구현체를 갈아끼울 것이다.RateDiscountPoli
현재 AppConfig는 역할(MemberRepository 드러나지 않음)에 따른 구현이 보이지 않고 중복이 있다는 단점(new MemoryMemberRepository)이 있다.이와 같이 생성자 주입을 통해 역할(인터페이스)과 구현(구현체)가 명확히 드러나고 향후
스프링 컨테이너 생성과정ApplicationContext 인터페이스는 스프링 컨테이너다. 고로 다형성이 적용된다(인터페이스). 즉 ApplicationContext의 구현체가 AnnotationConfigApplicationContext인 것이다.위 코드가 AppCon
BeanFactoryBeanFactory는 스프링 컨테이너의 최상위 인터페이스다.스프링 빈을 관리하고 조회하는 역할을 담당한다getBean()을 제공한다.대부분의 기능을 얘가 제공함ApplicationContextApplicationContext는 빈 팩토리의 기능 모
웹 애플리케이션과 싱글톤 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 클라이언트 ABC가 DI 컨테이너에 동시에 똑같은 요청을 하면 AppConfig는 memberService를 계속 생성해 반환한다. 총 객체가 3번 생성된다. 똑같은 요청이 올 때마다
지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean을 통해 설정 정보에 직접 등록할 스프링 빈을 나열했다.그러나 나중에 등록해야 할 스프링 빈이 수십 수백개가 될 수 있다.그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을
의존 관계 주입은 총 4가지 방법이 있다. 생성자 주입 수정자 주입(setter로 주입하는 것) 필드 주입 일반 메소드 주입 생성자 주입 지금까지 해왔던 방법, 이름 그대로 생성자를 통해 의존 관계 주입 특징 : 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된
빈 생명주기 콜백 시작데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 종료 시점에 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다.외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정해보자
빈 스코프란?스프링 빈은 스프링 컨테이너의 시작과 함께 생성되어 컨테이너 종료 시 까지 유지된다. 이것은 스프링 빈이 싱글톤 스코프로 생성되기 때문이다. 스코프는 말 그대로 빈이 존재할 수 있는 범위를 뜻한다.스프링은 다음과 같은 다양한 스코프를 지원한다.싱글톤 : 기
웹 스코프 웹 스크프의 특징 웹 스코프는 웹 환경에서만 동작해서 웹 스코프다 스프링이 해당 스코프의 종료시점까지 관리한다. 따라서 종료 메소드 호출됨 웹 스코프의 종류 request : http 요청 하나가 들어오고 나갈 때 까지 유지되며, 고로 요청 시마다 별도의
컨트롤러의 역할 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이므로, 검증 로직을 개발하는 것은 매우 중요하다. 상품 저장 검증 실패 만약 POST 요청으로 상품을 저장하려 했으나 검증이 실패할 때는(잘못된 요청 들어옴), 즉 컨트롤러에서
이전 포스팅에서 자바를 활용해 만들 수 있는 싱글톤 패턴의 장점과 단점에 대해 설명해 보았다. 싱글톤 패턴은 멀티스레드 환경에서 자원의 낭비를 방지하기 위해 필요한 중요 개념이다. 그러나 단순 자바를 활용해 구현한 싱글톤 패턴에는 한계가 있었고 스프링은 어떻게 싱글톤