Spring/Spring 핵심 원리 - 기본
![[Spring] 빈 스코프](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoZjDn%2Fbtrul4lOnUp%2FhZEDmKRcErDEZXG706q2R1%2Fimg.png)
[Spring] 빈 스코프
출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 빈 스코프란? 빈이 존재할 수 있는 범위로 이때까지의 스프링 빈은 싱글톤 스코프를 가진 스프링 컨테이너의 시작과 함께 생성되고 종료화 함께 소멸되었다. 싱글톤 스코프 : 기본 스코프로 생명주기가 스프링 컨테이너와 같은 가장 긴 스코프이다. 프로토타입 스코프 : 스프링 컨테이너가 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 신경 안쓰는 짧은 스코프 웹 관련 스코프 request : http 고객 요청이 오고 나서 최..
![[Spring] 빈 생명주기 콜백](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA34rf%2FbtrujJh94Ib%2F6RyBdne9bvNEAZ4bsyJkZK%2Fimg.png)
[Spring] 빈 생명주기 콜백
출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 빈 생명주기 콜백 데이터베이스 커넥션 풀, 네트워크 소켓 등 애플리케이션 시작 시점에 필요한 연결을 미리 해두고 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료 작업이 필요하다. 데이터베이스 커넥션 풀 : 애플리케이션은 보통 관계형 DB를 사용하는데 TCP/IP 핸드쉐이킹 작업이 오래 걸리기 때문에 애플리케이션 서버가 올라올 때 DB랑 미리 연결을 맺어놓는다. 이렇게 하면 고객의 요청이 올..
![[Spring] 의존관계 자동 주입](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdm4x0h%2FbtruhvwXd79%2FslSExKBbRUkPc0ZqgF9a5k%2Fimg.png)
[Spring] 의존관계 자동 주입
출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 다양한 의존관계 주입 방법 1. 생성자 주입 지금까지 했던 방법으로 생성자에 @Autowired를 붙여 의존관계를 주입하는 방법이다. 생성자 호출 시점에 딱 1번만 호출되는 것이 보장되고 불변, 필수 의존관계에서 사용한다. 생성자 호출 시점에 모든 연관 관계 그림을 다 만들고 끝내놓으려는 의도 -> 공연 전 배우 미리 다 캐스팅해둔다. 배우는 무조건 있어야 하고(필수) 바뀌어선 안된다(불변). 불변 : 처음 1번 호출될 때를 ..
![[Spring] 컴포넌트 스캔](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8dFLz%2FbtrucasGAuv%2FdDTgjpw6T5KrUhbzWmhmx0%2Fimg.png)
[Spring] 컴포넌트 스캔
출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 컴포넌트 스캔과 의존관계 자동 주입 지금까지는 @Bean으로 직접 설정 정보 AppConfig로 스프링 빈을 나열했다. 하지만 등록해야할 스프링 빈이 많아지면 설정 정보도 커지고 누락되기도 쉬운 문제가 발생한다. 그래서 스프링은 이런 문제를 해결하기 위해 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또한 의존관계도 자동으로 주입해주는 @Autowired도 제공한다. @Component..
![[Spring] 싱글톤 컨테이너](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkQWQS%2FbtrtYVjC9z3%2FK8W22g6pjnO706Pk54wtgk%2Fimg.png)
[Spring] 싱글톤 컨테이너
출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 웹 어플리케이션과 싱글톤 스프링은 대부분 웹 애플리케이션을 개발하는 데 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 따라서 스프링 컨테이너에 등록된 스프링 빈 객체에 동시다발적으로 많은 요청이 몰리게 될텐데 그럴때마다 객체를 생성해서 요청에 대한 응답을 한다면 메모리 낭비와 더불어 매우 비효율적인 설계가 될 것이다. 스프링 컨테이너가 아닌 순수 자바 코드로 설계된 애플리케이션을 먼저 살펴보면 기존의 순수 DI 컨테..
![[Spring] 스프링 컨테이너와 스프링 빈](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdivgpo%2FbtrtYdc51t2%2FipxCqqBFFXnkalPgvFZ7b0%2Fimg.png)
[Spring] 스프링 컨테이너와 스프링 빈
출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 스프링 컨테이너 생성 스프링 컨테이너라 불리는 ApplicationContext가 생성되는 과정에 대해 생각해보자 //스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext의 코드를 까보면 다음과 같다. public interface ApplicationC..
![[Spring] 객체 지향 원리 적용](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOckGJ%2FbtrtQpynT1c%2F3Ybs1xsAEv9S4SaROVVH3k%2Fimg.png)
[Spring] 객체 지향 원리 적용
출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 새로운 할인 정책 개발 개발이 거의 끝나가고 서비스 오픈 직전일 때 기획자가 갑자기 할인 정책을 기존의 정액 할인이 아닌 정률 할인으로 변경하고 싶다고 했을 경우를 가정하자 이전에 우리는 DiscountPolicy라는 인터페이스와 FixDiscountPolicy라는 구현체를 통해 역할과 구현을 분리해서 설계했다. 따라서 여기에 정률 할인 정책인 RateDiscountPolicy 구현체를 추가하여 사용하면 DiscountPoli..
![[Spring] 순수 자바 코드로 설계하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGKiYE%2FbtrtRWijr4O%2FNza2IREC0tYDvigY590yR0%2Fimg.png)
[Spring] 순수 자바 코드로 설계하기
출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 비즈니스 요구사항과 설계 회원 회원 가입, 조회 일반, VIP 두가지 회원 등급 DB 미확정 주문과 할인 정책 회원은 상품을 주문 VIP에게 1000원 할인 (변경 가능) 할인 정책 미확정 미확정인 요구사항이 있어 결정이 어렵다. 하지만 결정이 될 때까지 개발을 미룰수도 없기 때문에 인터페이스를 만들고 구현체를 갈아끼울 수 있도록 설계하는 객체 지향 설계를 적용하여 개발을 시작한다. 회원 도메인 설계 회원 객체 다이어그램 : ..
[Spring 핵심 원리] 객체 지향 설계와 스프링
출처 : 김영한님의 스프링 핵심 원리 - 기본편 인프런 강의 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 스프링의 역사 EJB(Enterprise Java Beans) 기술은 컨테이너, 설정에 의한 트랜잭션 관리, 분산 기술 ORM 등의 좋은 장점들이 있었지만 사용하기가 너무 복잡하고 느리고 라이프 사이클이 어떻게 돌아가는지도 알기 힘들었다. 그래서 로드 존슨이라는 개발자가 EJB의 문제점을 지적하면서 EJB 없이도 충분히 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 3만줄 이상의 예제 코드로 선보였다. 이 코드에 Bea..