스프링/SpringBasicCore

인프런 강의 中 김영한 강사님의 '스프링 핵심 원리' 내용을 정리했습니다. 지난 시간에 하나의 인스턴스로 운영되는 싱글턴 빈과 호출을 할 때마다 새로 생성되는 프로토타입 빈에 대해서 학습해 보았다. 이번 시간에는 웹 환경에서 동작하는 웹 스코프에 대해서 김영한 강사님의 강의를 들으며 학습해보자! 목차 빈 스코프란? 프로토타입 스코프 프로토타입 스코프 - 싱글톤 빈과 함께 사용 시 문제점 프로토타입 스코프 - 싱글톤 빈과 함께 사용 시 Provider로 문제 해결 웹 스코프 request 스코프 예제 만들기 스코프와 Provider 스코프와 프록시 1. 웹 스코프 웹 스코프는 웹 환경에서만 동작하며 프로토타입 스코프와 다르게 스프링이 해당 스코프의 종료시점까지 관리한다. 따라서 종료 메서드가 호출된다. 웹..
인프런 강의 中 김영한 강사님의 '스프링 핵심 원리' 내용을 정리했습니다. Section8에서 우리는 빈의 생명주기 동안 초기화와 종료 시점을 콜백하는 방법에 대해서 알아보았다. 이 때, 우리는 자연스럽게 빈이 스프링 컨테이너의 시작과 함께 생성되고 스프링 컨테이너가 종료될 때까지 유지되었다가 함께 소멸된다고 이해하고 콜백 함수를 사용했다. 그런데 말입니다.. 과연 모든 빈들이 스프링 컨테이너와 생명주기를 함께 할까요? 이에 대해서 샅샅이 파헤쳐보겠습니다.. 바로 김영한 강사님의 명강을 들으면서 말입니다!! 목차 빈 스코프란? 프로토타입 스코프 프로토타입 스코프 - 싱글톤 빈과 함께 사용 시 문제점 프로토타입 스코프 - 싱글톤 빈과 함께 사용 시 Provider로 문제 해결 웹 스코프 request 스코..
인프런 강의 中 김영한 강사님의 '스프링 핵심 원리' 내용을 정리했습니다. Section7에서 무려 3편에 걸쳐서 의존관계 자동 주입의 종류와 사용법에 대해서 학습하는 시간을 가졌다. 이번 Section8부터는 빈이 태어나고 운명을 다하는 동안 내가 태어났다! 내가 운명을 다했다!라는 신호를 주는 생명주기 콜백에 대해서 김영한 강사님의 명강의를 들으며 학습해보자. 목차 빈 생명주기 콜백 시작 인터페이스 InitializingBean, DisposableBean 빈 등록 초기화, 소멸 메서드 지정 어노테이션 @PostContruct, @PreDestroy 1. 빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에..
인프런 강의 中 김영한 강사님의 '스프링 핵심 원리' 내용을 정리했습니다. 지난 시간에 lombok을 사용해 의존관계 자동 주입을 더 간단하게 해보았다. 이번 시간에는 의존관계 자동 주입 시 발생할 수 있는 에러사항 및 대처 방안에 대해서 김영한 강사님의 강의를 토대로 학습해보겠다!! let's get it!!!! 목차 조회 빈이 2개 이상 - 문제 문제 해결 방법 @Autowired 필드 명, @Qualifier, @Primary 어노테이션 직접 만들기 1. 조회 빈이 2개 이상 - 문제 해당 내용을 들어가기 전에 잠깐 시간 여행을 해서 과거로 돌아가보자. 우리는 좋은 객체지향 설계를 하기 위해 역할과 구현으로 나눠서 개발을 진행했고, 할인 정책(DiscountPolicy)라는 역할과 정액 할인(Fix..
인프런 강의 中 김영한 강사님의 '스프링 핵심 원리' 내용을 정리했습니다. 이전 시간에 의존관계 자동 주입 종류와 생성자 주입을 사용해야하는 이유에 대해서 학습했다. 이번 시간에는 자동 주입 대상을 옵션으로 처리하는 방법과 lombok을 활용하는 방법에 대해서 알아보겠다. 김영한 강사님의 강의를 들으면서! 목차 옵션 처리 Lombok 1. 옵션 처리 주입할 스프링 빈이 없어도 동작해야 할 때가 있다. 그런데 @Autowired만 사용하면 required 옵션의 기본값이 true로 되어 있어서 자동 주입 대상이 없으면 오류가 발생한다. 자동 주입 대상을 옵션으로 처리하는 방법은 다음과 같다. @Autowired(required=false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안됨 or..
인프런 강의 中 김영한 강사님의 '스프링 핵심 원리' 내용을 정리했습니다. 이전 시간에는 '스프링이 제공해주는 Component Scan이라는 기능 덕분에 개발자들이 코드 작성을 한 결 편하게 할 수 있게 됐다' 라는 내용의 공부를 했다. 이번 시간에는 우리가 DIP, OCP를 준수하기 위해 사용했던 의존성 주입의 종류에 대해서 김영한 강사님의 강의를 통해 학습해보겠다! 참고로 우리는 지금까지 생성자 주입만을 사용했다는 점 참고바란다. 목차 다양한 의존관계 주입 방법 생성자 주입을 선택해야하는 이유 1. 다양한 의존관계 주입 방법 의존관계 주입은 크게 3가지 방법이 있다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 생성자 주입 위에서 언급한대로 우리가 지금까지 사용했던 방법이다. 이름 그대로..
인프런 강의 中 김영한 강사님의 '스프링 핵심 원리' 내용을 정리했습니다. 이전 시간에 우리는 스프링 컨테이너가 자동으로 구성해주는 Singleton에 대해서 공부했다. 이번 섹션에서는 또!! 스프링에서 제공하는 강력한 기능을 공부할 예정이다. 바로 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능이다. 김영한 강사님의 명강을 들으며 오늘도 열심히 달려보자! 목차 컴포넌트 스캔과 의존관계 자동 주입 시작하기 탐색 위치와 기본 스캔 대상 1. 컴포넌트 스캔과 의존관계 자동 주입 시작하기 우리는 지금까지 빈 등록을 위해서 클래스 파일이나 XML 파일로 빈 설정 정보를 작성했다. 빈을 수동으로 설정했던 내용이 기억이 나지 않는다면 아래 포스팅 글 참조! Section4(1편) 스프링 ..
인프런 강의 中 김영한 강사님의 '스프링 핵심 원리' 내용을 정리했습니다. DIP, OCP 법칙을 준수하며 Dependency Injection을 사용해 개발을 진행해보고, 스프링 빈을 사용해 스프링 컨테이너에서 인스턴스들을 관리하는 코드를 작성해보았다. 그리고 빈이 어떻게 설정되는지까지 배워보았다. Section4까지의 강의를 학습해보면 딱히 왜 스프링 컨테이너를 사용하는지 이유를 찾을 수 없었다. 왜냐하면 순수 자바 코드로 작성해도 같은 결과를 가져왔다고 생각했기 때문이다. 하지만! 사실 스프링 컨테이너를 사용했을 때 엄청난 차이가 있었다. 바로 Singleton 패턴을 자동으로 적용해준다는 것이다. 물론 자바 코드로도 Singleton 패턴을 적용할 수 있다. 하지만 자동! 으로 해준다는건 그만큼 ..