Spring/핵심원리 8

[스프링 핵심원리 - 기본편] 요약 정리

인프런 김영한님의 강의를 듣고, 내용을 정리하며 저의 생각도 정리하였습니다. 영한님의 스프링 핵심원리 - 기본편을 정리해본다. 사실 오래전에 강의를 들었지만, 제대로 정리하지 않아서 그런지 자꾸 잊혀진다. 강의를 듣는것이 중요한 것이 아니라, 강의를 듣고 내것으로 만드는 것이 중요함을 새삼 깨닫는다. 스프링을 제대로 공부해본 적이 없어서 이 강의는 충격으로 다가왔다. 처음 회사를 갔을때, 무엇인지도 모르고 사용했던 것들을 하나씩 알아가는 즐거움이란...ㅎㅎ 배워야하는것 이 강의에서 내가 배워야하는건 명확하다 바로 스프링의 핵심원리의 기본적인 내용을 이해하는 것 먼저 목차를 살펴보면 객체지향설계와 스프링 스프링 핵심 원리 이해 1 - 예제 만들기 스프링 핵심 원리 이해 2 - 객체 지향 원리 적용 스프링 ..

Spring/핵심원리 2023.09.11

[스프링 핵심원리 - 기본편] 내용 정리7 - 빈 스코프

빈 스코프빈이 존재할 수 있는 범위 싱글톤기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입@Scope("prototype")빈의 생성과 의존관계 주입까지만 관여하고, 소멸은 신경쓰지 않는다(짧은 범위의 스코프)조회한 클라이언트쪽에서 관리해야한다(@PreDestroy같은 종료 메소드 호출 x) 프로토타입 스코프 - 싱글톤 빈과 함께 사용할때 문제프로토타입 스코프의 빈은 스프링 컨테이너에 요청하면 항상 새로운 객체를 생성해서 반환한다.그렇지만, 프로토타입을 싱글톤 빈과 함께 사용하는 경우 싱글톤 빈이 스프링 컨테이너에 등록되는 순간 프로토타입도 생성되면서 유지되는 문제가 있다싱글톤빈에서 프로토타입을 의존관계로 주입하는 순간, 그 프로토타입은 스프링 컨테이너의 관리..

Spring/핵심원리 2023.09.04

[스프링 핵심원리 - 기본편] 내용 정리6 - 빈 생명주기

빈 생명주기 콜백스프링 빈 객체의 초기화와 종료 작업스프링 빈은 객체 생성 → 의존관계 주입이라는 라이프 사이클을 가짐초기화 작업은 의존관계 주입 이후에 호출해야한다스프링은 의존관계 주입이 끝나면 스프링 빈에게 콜백 메소드를 통해 초기화 시점을 알려주는 기능을 제공한다스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 실행한다 스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸전 콜백 → 스프링 종료 ※ 객체의 생성과 초기화 작업을 분리하자생성자는 필수정보를 받고, 메모리를 할당해서 객체를 생성하는 책임초기화는 생성된 값을 활용해서 외부 커넥션 등의 무거운 동작 수행생성자 안에서 무거운 초기화 작업을 하는것 보다, 명확하게 역할을 구분하는 것이 유지보수 관점..

Spring/핵심원리 2023.08.30

[스프링 핵심원리 - 기본편] 내용 정리5 - 컴포넌트 스캔

컴포넌트 스캔과 의존관계 자동주입드디어 의존관계 자동주입을 공부했다처음 입문했을때, 스프링을 들어봤지만 제대로 공부하지 않았을때는 이 개념이 이해되지 않았다스프링이 편하다고는 하지만, 개념적으로 어려워 그냥 '그렇구나~' 하고 넘어갔었다그때 제대로 공부하고, 이해했다면...적용하면서 업무를 진행했으면 달라졌을까 싶다지금이라도 이렇게 공부하여 정리할 수 있어서 다행이다. 이번 파트는 기존 시간에 배웠던 @Configuration, @Bean을 활용한 방법(스프링 컨테이너에 직접 등록)에서발생하는 문제점(불편한점)을 제시하고, 그에 따른 해결책으로 '컴포넌트 스캔'과 '의존관계 자동주입'을 설명한다. Java 코드에 @Bean 애노테이션을 활용하여 직접 스프링 빈을 등록 할 수 있다.그렇지만, 직접 등록할 ..

Spring/핵심원리 2023.08.27

[스프링 핵심원리 - 기본편] 내용 정리4 - 싱글톤

인프런 김영한님의 강의를 듣고,내용을 정리하며 저의 생각도 정리하였습니다. 웹 애플리케이션과 싱글톤스프링은 그 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다.웹 애플리케이션은 보통 여러 고객이 동시에 요청한다.지난시간에 만들었던 AppConfig는 요청시마다 객체를 새로 생성한다. 이는 메모리의 낭비가 심하다※ 참고: 객체 생성에 드는 비용이 1000이라고 하면, 참조로 가져오는 비용은 1정도보다 낮다 이를 해결하기 위해서, 해당 객체가 딱 1개만 생성되고 공유되도록 하는 싱글톤 패턴을 적용한다= 매번 생성하지 않으므로 메모리의 낭비를 줄일 수 있다 싱글톤 패턴싱글톤 패턴이란, 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다객체 인스턴스를 2개 이상 생성하지 못하도록..

Spring/핵심원리 2023.08.27

[스프링 핵심원리 - 기본편] 내용 정리3 - 스프링 컨테이너

인프런 김영한님의 강의를 듣고,내용을 정리하며 저의 생각도 정리하였습니다. 스프링 컨테이너와 스프링 빈스프링 컨테이너를 공부하면서 가장 먼저 눈에 들어온 몇가지 개념이 있다.'스프링 컨테이너' 자체와, '스프링 빈', '@Configuration' 그리고 '@Bean'과 '@Component'다양한 단어들이 있어서 항상 헷갈렸는데, 이번 기회에 정리할 수 있었다. ApplicationContext- '스프링 컨테이너'라고 불리는 인터페이스( 다형성 적용 )- 사실은 'BeanFactory'가 스프링 컨테이너의 최상위 인터페이스이다 Spring Bean- 스프링 DI 컨테이너에 의해 관리되는 POJO- 즉, 스프링이 관리하는 객체라고 보면 된다 @Configuration- '스프링의 설정'을 담당하는 클래..

Spring/핵심원리 2023.08.22

[스프링 핵심원리 - 기본편] 내용 정리2 - AppConfig(관심사의 분리)

인프런 김영한님의 강의를 듣고,내용을 정리하며 저의 생각도 정리하였습니다. 관심사의 분리를 통한 DI와 IoC 이해하기강의를 듣기 전부터 스프링을 공부해본 사람이라면 꼭 들어봤을 DI와 IoC에 대한 내용이 등장하기 시작한다.의존관계 주입? 제어의 역전? 의존관계를 주입한다는게 무슨의미이고, 제어를 역전한다는게 무슨뜻인지 그 뜻이 제대로 이해가 되지 않았던 적이 많다. 이번에 강의를 들으면서 해당 개념의 이해를 하는것이 가장 큰 목적중 하나였다. 먼저 DI는 의존관계를 외부에서 주입(결정)해주는 것을 의미한다.스프링에서는 DI 컨테이너가 이러한 역할을 담당한다.이번 쳅터에서는 DI 컨테이너를 설명하기 위해 AppConfig가 등장한다 영한님의 강의는 무조건 이해시키려는 느낌이 아니라 이 개념을 아주 자..

Spring/핵심원리 2022.02.21

[스프링 핵심원리 - 기본편] 내용 정리1 - 스프링과 객체지향

스프링과 객체지향스프링 = 자바 기반의 프레임워크자바의 가장 큰 특징은 객체지향이다스프링은 객체지향언어가 가진 가장 강력한 특징을 살려내는 프레임워크스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 스프링의 핵심을 이해하기 위해서는 먼저 객체지향의 특징을 알아야하는 이유를 명확히 설명해주고 있다.객체지향의 특징 중 특히 다형성이 핵심! 객체 지향 개발을 하려고 OCP, DIP 원칙을 지키면서 개발 = 할일이 너무 많다 = 프레임워크로 만듬순서하게 자바로 DIP, OCP 원칙을 지키면서 개발을 해보면, 결국 스프링 프레임워크와 같은 방식으로 개발하게 된다 객체지향 프로그래밍- 컴퓨터 프로그래밍을 명령어의 목록에서 벗어나 여러개의 독립된 단위, 즉 객체들의 모임으로 파악하고자 하는..

Spring/핵심원리 2022.02.21