김영한

Spring/스프링 핵심 원리 - 기본편

[스프링 핵심 원리] 06. 컴포넌트 스캔 - 중복 등록과 충돌

(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 4. 자동 등록과 충돌 1. 자동 빈 등록 vs 자동 빈 등록 컴포넌트 스캔에 의해 자동으로 스피링 빈이 등록되었는데, 이름이 같은 경우 스프링은 ConflictingBeanDefinitionException 예외 발생시킨다.(자동 빈 등록끼리 충돌할 일은 거의 없음) 1) MemberServiceImpl & OrderServiceImpl의 빈이름을 Service로 수정 예외가 발생하는 것을 확인하고자 빈 이름을 같게 수정한다. (테스트 후에는 원상 복귀해야함) package hello.core.member; @Component("service") public class MemberServiceImpl implements Memb..

Spring/스프링 핵심 원리 - 기본편

[스프링 핵심 원리] 06. 컴포넌트 스캔 - 탐색 위치와 기본 스캔 대상 & 필터

(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 2. 탐색 위치와 기본 스캔 대상 1. 탐색할 패키지의 시작 위치 지정 모든 자바 클래스를 컴포넌트 스캔하면 시간이 오래걸리므로 꼭 필요한 위치부터 탐색하도록 시작 위치를 지정할 수 있다. 1) basePackages: 탐색할 패키지의 시작 위치 지정(해당 패키지 + 하위 패키지) - 시작 위치를 여러개로 지정할 수 있음 (e.g basePackages = {"hello.core", "hello.service"} ) package hello.core; @Configuration @ComponentScan// 탐색 시작 위치 = hello.core public class AutoAppConfig { basePackages = "he..

Spring/스프링 핵심 원리 - 기본편

[스프링 핵심 원리] 06. 컴포넌트 스캔 - 컴포넌트 스캔과 의존관계 자동 주입 시작하기

(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 1. 컴포넌트 스캔과 의존관계 자동 주입 시작하기 지금까지는 자바 코드의 @Bean이나 XML의 을 통해서 설정 정보에 직접 스프링 빈을 등록했다. 예제에서는 등록해야할 스프링 빈이 몇 개가 안됐지만 규모가 커지면 반복과 누락의 문제가 있다... 그래서, 1) 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 2) 의존관계도 자동으로 주입하는 @Autowired 라는 기능도 제공한다. 기존 AppConfig.java는 과거 코드, 테스트를 유지하기 위해 남겨두고 새로운 AutoAppConfig.java를 만들자. 1. AutoAppConfig.java - @ComponentScan 1..

Spring/스프링 핵심 원리 - 기본편

[스프링 핵심 원리] 05. 싱글톤 컨테이너 - @Configuration과 싱글톤 & @Configuration과 바이트코드 조작의 마법

인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 5. @Configuration과 싱글톤 1. AppConfig의 의문점 // 애플리케이션 설정(구성) 정보 @Configuration public class AppConfig { // @Bean memberService -> new MemoryMemberRepository() // @Bean orderService -> new MemoryMemberRepository() // MemberService 역할 스프링 빈 등록 @Bean public MemberService memberService() { System.out.println("call AppConfig.memberService"); // 생성자 주입 return new ..

Spring/스프링 핵심 원리 - 기본편

[스프링 핵심 원리] 05. 싱글톤 컨테이너 - 싱글톤 컨테이너 & 싱글톤 방식의 주의점(중요★)

(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 3. 싱글톤 컨테이너 스프링 컨테이너는 싱글톤 패턴의 문제점을 해결하고 객체 인스턴스를 싱글톤(1개만 생성)으로 관리한다. 지금까지 우리가 학습한 스프링 빈은 싱글톤으로 관리되는 빈이다. 1. 싱글톤 컨테이너 - 스프링 컨테이너는 싱글톤 패턴을 적용하지 않아도 객체 인스턴스를 싱글톤으로 관리한다. - 스프링 컨테이너는 싱글톤 컨테이너 역할을 하고 싱글톤 객체를 생성, 관리하는 기능을 싱글톤 레지스트리라고 한다. - 스프링 컨테이너는 싱글톤 패턴의 모든 단점을 해결하면서 객체를 싱글톤으로 유지할 수 있다. 싱글톤 패턴을 위한 지저분한 코드X DIP, OCP, 테스트, private 생성자로부터 자유롭게 자유롭게 싱글톤 사용O 2. ..

Spring/스프링 핵심 원리 - 기본편

[스프링 핵심 원리] 05. 싱글톤 컨테이너 - 웹 애플리케이션과 싱글톤 & 싱글톤 패턴

(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 1. 웹 애플리케이션과 싱글톤 1) 스프링: 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. 2) 대부분의 스프링 애플리케이션 = 웹 애플리케이션 (웹이 아닌 애플리케이션 개발도 가능함) 3) 웹 애플리케이션: 보통 여러 고객이 동시에 요청을 한다. 고객이 요청할 때마다 새로운 객체가 생성되는 문제 1. 스프링 없는 순수한 DI 컨테이너 테스트 우리가 만든 스프링 없는 순수한 DI 컨테이너(AppConfig)는 요청을 할 때 마다 새로운 객체를 생성한다. - 고객 트래픽이 초당 100이 나오면 초당 100개의 객체가 생성, 소멸된다 -> 메모리 낭비 심함 (해결방안) 해당 객체를 1개만 생성, 공유하도록 설계 -> 싱글톤 패..

Spring/스프링 핵심 원리 - 기본편

[스프링 핵심 원리] 04. 스프링 컨테이너와 스프링 빈 - 스프링 빈 설정 메타 정보(BeanDefinition)

BeanDefinition (인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 8. 스프링 빈 설정 메타 정보(BeanDefinition) Q. 스프링이 다양한 설정 형식을 지원할 수 있는 이유는? 그 중심에는 바로 BeanDefinition이라는 추상화가 있다. 즉, 설정 정보의 역할과 구현을 개념적으로 분리한 것으로 설정 정보를 추상화시켰다. 스프링 컨테이너는 BeanDefinition(역할)만 알고 자바 코드인지, XML 인지(구현)은 몰라도 된다. XML 을 읽어 BeanDefinition 만듦 자바 코드를 읽어 BeanDefinition 만듦 ● BeanDefinition = 빈 설정 메타정보 - @Bean / 하나당 하나씩 메타 정보가 생성된다. - 스프링 컨테이너는 이..

Spring/스프링 핵심 원리 - 기본편

[스프링 핵심 원리] 04. 스프링 컨테이너와 스프링 빈 - BeanFactory와 ApplicationContext & 다양한 설정 형식 지원(자바 코드, XML)

(인프런) 김영한님의 스프링 핵심 원리-기본편을 공부하고 리뷰한 글입니다. 6. BeanFactory와 ApplicationContext 1. BeanFactory BeanFactory는 스프링 컨테이너의 최상위 인터페이스다. - 스프링 빈을 관리, 조회하는 역할을 담당한다. - 지금까지 우리가 사용했던 대부분의 기능은 BeanFactory가 제공하는 기능이다. e.g. getBean() 2. ApplicationContext - BeanFactory 기능을 모두 상속받아 제공한다. - 빈을 관리, 조회하는 기능에 추가로 부가 기능을 제공한다. 3. ApplicationContext가 제공하는 부가기능 1) 메시지소스를 활용한 국제화 기능(MessageSource) e.g. 한국에서 들어오면 한국어로, ..

HSY_mumu
'김영한' 태그의 글 목록 (6 Page)