본문 바로가기
728x90
반응형

스프링 Spring85

[빈 스코프] 스코프와 프록시 @Scope 의 proxyMode = ScopedProxyMode.TARGET_CLASS) 를 설정하면 스프링 컨테이너는 CGLIB 라는 바이트코드를 조작하는 라이브러리를 사용해서, MyLogger를 상속받은 가짜 프록시 객체를 생성한다. 가짜 프록시 객체는 요청이 오면 그때 내부에서 진짜 빈을 요청하는 위임 로직이 들어있다. 가짜 프록시 객체는 내부에 진짜 myLogger를 찾는 방법을 알고 있다. 클라이언트가 myLogger.logic() 을 호출하면 사실은 가짜 프록시 객체의 메서드를 호출한 것이다. 가짜 프록시 객체는 request 스코프의 진짜 메서드를 호출한다. 특징 정리 프록시 객체 덕분에 클라이언트는 마치 싱글톤 빈을 사용하듯이 편리하게 request scope를 사용할 수 있다. 사실 P.. 2022. 3. 30.
[빈 스코프] 스코프와 Provider 아래와 같이 ObjectProvider를 사용하면 getObject() 호출시에 request scope빈의 생성이 정상 처리된다. private final ObjectProvider myLoggerObjectProvider; MyLogger myLogger = myLoggerObjectProvider.getObject(); 인프런 강의 "스프링 핵심 원리 - 기본편"을 정리한 것 입니다. 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 2022. 3. 28.
[빈 스코프] request 스코프 예제 만들기 웹 환경 추가 - 웹 스코프는 웹 환경에서만 동작하므로 웹 환경이 동작하도록 라이브러리 추가 build.gradle 아래와 같이 추가된 것을 확인할 수 있다. hello.core.CoreApplication의 main을 실행하면 아래와 같이 웹 애플리케이션이 실행되는 것을 확인할 수 있으며 접속하면 에러 페이지가 나오게 된다. 만약 기본 포트인 8080 포트를 다른곳에서 사용중이어서 오류가 발생하면 포트를 변경해야 한다. 9090 포트로 변경하려면 다음 설정을 추가하자. main/resources/application.properties server.port=9090 request 스코프 예제 개발 동시에 여러 HTTP 요청이 오면 어떤 요청이 남긴 로그인지 구분이 어려울 때 사용하기 좋은것이 reque.. 2022. 3. 27.
[빈 스코프] 웹 스코프 싱글톤 : 스프링 컨테이너의 시작과 끝까지 함께하는 스코프 프로토타입 : 생성과 의존관계 주입, 초기화까지만 진행하는 스코프 웹 스코프 특징 1. 웹 환경에서만 동작한다. 2. 스프링이 해당 스코프의 종료시점까지 관리되며 종료 메서드가 호출된다. 웹 스코프 종류 request : HTTP 요청 하나가 들어오고 나갈 때 까지 유지되는 스코프, 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고, 관리된다. session : HTTP Session과 동일한 생명주기를 가지는 스코프 application : 서블릿 컨텍스트( ServletContext )와 동일한 생명주기를 가지는 스코프 websocket : 웹 소켓과 동일한 생명주기를 가지는 스코프 인프런 강의 "스프링 핵심 원리 - 기본편"을 정리한 .. 2022. 3. 26.
[빈 스코프] 프로토타입 스코프 - 싱글톤 빈과 함께 사용시 Provider로 문제 해결 사용할 때 마다 항상 새로운 프로토타입 빈을 생성하려면 프로토타입을 사용할 때 마다 스프링 컨테이너에 새로 요청하면 된다. 의존관계를 외부에서 주입(DI) 받는 것이 아닌 직접 필요한 의존관계를 찾는 것을 Dependency Lookup(DL) 의존관계 조회(탐색) 이라 한다. 프로토타입 빈을 컨테이너에서 대신 찾아주는 DL 정도의 기능을 사용하려면 아래 두가지 방법이 있다. ObjectProvider 특징 ObjectFactory : 기능이 단순, 별도의 라이브러리 필요 없음, 스프링에 의존 ObjectProvider : ObjectFactory 상속, 옵션, 스트림 처리등 편의 기능이 많고, 별도의 라이브러리 필요 없음, 스프링에 의존 JSR-330 Provider 특징 get() 메서드 하나로 기능.. 2022. 3. 25.
[빈 스코프] 프로토타입 스코프 - 싱글톤 빈과 함께 사용시 문제점 프로토타입 빈 직접 요청 아래와 같이 각 클라이언트의 count 값은 공유되지 않는다. 싱글톤 빈에서 프로토타입 빈 사용 clientBean 은 싱글톤이므로, 보통 스프링 컨테이너 생성 시점에 함께 생성되고, 의존관계 주입도 발생한다. 1. clientBean 은 의존관계 자동 주입을 사용한다. 주입 시점에 스프링 컨테이너에 프로토타입 빈을 요청한다. 2. 스프링 컨테이너는 프로토타입 빈을 생성해서 clientBean 에 반환한다. 프로토타입 빈의 count 필드 값은 0이다. 이제 clientBean 은 프로토타입 빈을 내부 필드에 보관한다. (정확히는 참조값을 보관한다.) 클라이언트 A는 clientBean 을 스프링 컨테이너에 요청해서 받는다.싱글톤이므로 항상 같은 clientBean 이 반환된다... 2022. 3. 24.
[빈 스코프] 프로토타입 스코프 싱글톤 스코프의 빈을 조회 : 스프링 컨테이너는 항상 같은 인스턴스의 스프링 빈을 반환 프로토타입 스코프를 스프링 컨테이너에 조회 : 스프링 컨테이너는 항상 새로운 인스턴스를 생성하여 반환 싱글톤 빈 요청 1. 싱글톤 스코프의 빈을 스프링 컨테이너에 요청한다. 2. 스프링 컨테이너는 본인이 관리하는 스프링 빈을 반환한다. 3. 이후에 스프링 컨테이너에 같은 요청이 와도 같은 객체 인스턴스의 스프링 빈을 반환한다. 프로토타입 빈 요청 1. 프로토타입 스코프의 빈을 스프링 컨테이너에 요청한다. 2. 스프링 컨테이너는 이 시점에 프로토타입 빈을 생성하고, 필요한 의존관계를 주입한다. 3. 스프링 컨테이너는 생성한 프로토타입 빈을 클라이언트에 반환한다. 4. 이후에 스프링 컨테이너에 같은 요청이 오면 항상 새로.. 2022. 3. 23.
[빈 스코프] 빈 스코프란? 스프링 빈 : 스프링 컨테이너의 시작과 함께 생성되어 스프링 컨테이너가 종료될 때 까지 유지되는 이유는 스프링 빈이 기본적으로 싱글톤 스코프(빈이 존재할 수 있는 범위)로 생성되기 때문이다. 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프 웹 관련 스코프 request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프 session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프 application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프 인프런 강의 "스프링 핵심 원리 - 기본편"을 정리한 것 입니다. 스프.. 2022. 3. 22.
728x90
반응형