본문 바로가기
728x90
반응형

스프링/핵심 원리60

[Spring] 스코프와 프록시 이번에는 프록시 방식을 사용해보자. MyLogger.java @Component @Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS) public class MyLogger { private String uuid; private String requestURL; public void setRequestURL(String requestURL) { this.requestURL = requestURL; } public void log(String message) { System.out.println("[" + uuid + "]" + "[" + requestURL + "] " + message); } @PostConstruct public vo.. 2022. 3. 7.
[Spring] 스코프와 Provider 첫번째 해결 방안은 앞서 배운 Provider를 사용하는 것이다. 간단히 ObjectProvider를 사용해보자. LogDemoController.java package hello.core.web; import hello.core.common.MyLogger; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.ObjectProvider; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotat.. 2022. 3. 7.
[Spring] request 스코프 예제 만들기 웹 환경 추가 웹 스코프는 웹 환경에서만 동작하므로 web 환경이 동작하도록 라이브러리를 추가하자 "build.gradle에 추가" // web 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-web' 이제 CoreApplication.java에서 main 메서드를 실행하면 다음과 같이 나온다 이제 주소창에 "localhost:8080"을 입력하면 다음과 같은 오류 페이지가 뜨면 된다 "참고" : spring-boot-starter-web 라이브러리를 추가하면 스프링 부트는 내장 톰켓 서버를 활용해서 웹 서버와 스프링을 함께 실행시킨다. "참고" : 스프링 부트는 웹 라이브러리가 없으면 우리가 지금까지 학습한 'Annotatio.. 2022. 3. 7.
[Spring] 웹 스코프 지금까지 싱글톤과 프로토타입 스코프를 학습했다. 싱글톤은 스프링 컨테이너의 시작과 끝까지 함께하는 매우 긴 스코프이고, 프로토타입 생성과 의존관계 주입, 그리고 초기화까지만 진행하는 특별한 스코프이다. 이번에는 웹 스코프에 대해서 알아보자. "웹 스코프의 특징" 웹 스코프는 웹 환경에서만 동작한다. 웹 스코프는 프로토타입과 다르게 스프링이 해당 스코프의 종료시점까지 관리한다. 따라서 종료 메서드가 호출된다. "웹 스코프 종류" "request" : HTTP 요청 하나가 들어오고 나갈 때까지 유지되는 스코프, 각각의 HTTP 요청마다 별도의 빈 인스턴스가 생성되고, 관리된다. "session" : HTTP Session과 동일한 생명주기를 가지는 스코프 "application" : 서블릿 컨텍스트("Ser.. 2022. 3. 7.
[Spring] 프로토타입 스코프 - 싱글톤 빈과 함께 사용 시 Provider로 문제 해결 싱글톤 빈과 프로토 타입 빈을 함께 사용할 때, 어떻게 하면 사용할 때마다 항상 새로운 프로토타입 빈을 생성할 수 있을까? 스프링 컨테이너에 요청 가장 간단한 방법은 싱글톤 빈이 프로토타입을 사용할 때마다 스프링 컨테이너에 새로 요청하는 것이다. package hello.core.scope; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;.. 2022. 3. 6.
[Spring] 프로토타입 스코프 - 싱글톤 빈과 함께 사용시 문제점 스프링 컨테이너에 프로토타입 스코프의 빈을 요청하면 항상 새로운 객체 인스턴스를 생성해서 반환한다. 하지만 싱글톤 빈과 함께 사용할 때는 의도한 대로 잘 동작하지 않으므로 주의해야한다. 먼저 스프링 컨테이너에 프로토타입 빈을 직접 요청하는 예제를 보자. 프로토타입 빈 직접 요청 "스프링 컨테이너에 프로토타입 빈 직접 요청1" 1. 클라이언트 A는 스프링 컨테이너에 프로토타입 빈을 요청한다. 2. 스프링 컨테이너는 프로토타입 빈을 새로 생성해서 반환("x01") 한다. 해당 빈의 count 필드 값은 0이다. 3. 클라이언트는 조회한 프로토타입 빈에 'addCount()'를 호출하면서 count 필드를 +1 한다. 결과적으로 프로토타입 빈("x01")의 count는 1이 된다. "스프링 컨테이너에 프로토타.. 2022. 3. 6.
728x90
반응형