inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 핵심 원리 - 기본편

다음으로

스프링 컨테이너와 빈 스코프

348

pbs0216

작성한 질문수 24

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]스프링 컨테이너가 사용되면, 스프링 구성정보(Configuration) 을 활용해서 아래처럼 스프링 빈 저장소에 빈 이름과 빈 객체가 저장된다고 배웠는데요. 싱글톤 컨테이너의 경우에는 AppConfig 파일에서 @Bean으로 수동등록된 것이나, 혹은 컴포넌트 스캔을 통하여 스프링 컨테이너에 객체를 생성하여 등록하는 것으로 알고 있습니다.

그런데 프로토타입 스코프와 웹 스코프의 경우에는 스프링 빈 저장소에 빈 객체의 주소값을 저장하는지 궁금합니다.예를 들어, 프로토타입 스코프를 스프링 컨테이너에 조회하면 스프링 컨테이너는 항상 새로운 인스턴스를 생성해서 반환하는데, 그럼 스프링 컨테이너가 생성되는 시점에서 ' 빈 이름 ' 만 등록되고, 빈 객체는 생성되지 않은 채 주소값이 등록되지 않는 것일까요??
같은 맥락으로, 웹 스코프에서 request scope은 HTTP 요청이 들어오고 나갈 때까지만 유지되는 스코프입니다.@Component @Scope(value = "request") public class MyLogger {
.. }
MyLogger 클래스는 위처럼 @Component 로 되어 있기 때문에 컴포넌트 스캔의 대상인데, 그러면 스프링 컨테이너에 등록 될 때 빈 이름만 등록되고 객체는 생성되지 않은 채 등록되는 것일까요?그리고 이후에 @Controller @RequiredArgsConstructorpublic class LogDemoController { private final MyLogger myLogger;... }LogDemoController에서 의존관계 주입으로 MyLogger가 필요할 때, 그 때 비로소 객체가 생성되어서 스프링 컨테이너에 등록되어야 하는데, request scope이기 때문에 오류가 났던 것인가요?? 답변 주시면 감사하겠습니다.

spring 객체지향

답변 2

1

David

안녕하세요. pbs0216님, 공식 서포터즈 David입니다.

  1. 빈 메타데이터라는 게 있습니다. 이 정보를 가지고 있다가 필요할 때 빈을 생성하게 되고 생성된 빈은 스코프에 따라 컨테이너에서 보관할지 호출된 쪽으로 반환할지를 결정합니다.

빈 메타데이터에 대한 부분은 본 강의의 스프링 빈 설정 메타 정보 - BeanDefinition편을 참고해 주세요.

  1. Request 스코프 빈은 요청이 들어왔을 때만 생성이 가능합니다. 요청이 들어오지 않은 상태인데 생성을 시도해서 오류가 발생한 것입니다.

감사합니다🙂

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

pbs0216님의 질문과 유사한 내용으로 설명되어 있는 게시물을 찾았습니다. 프로토타입 스코프 빈의 경우 스프링 컨테이너가 생성된 이후, 스프링 빈 저장소에 빈 이름만 있고, 빈 객체는 비어 있으며 요청이 와야 객체를 생성하여 클라이언트에게 반환하는 것에 대해 궁금해 하셨던 다른 수강생의 질문에 대한 답변을 참고하시면 도움이 될 것 같습니다.

게시글 제목: “프로토타입 스코프 빈의 스프링 빈 저장소에서의 상태”
링크: 프로토타입 스코프 빈의 스프링 빈 저장소에서의 상태

이 답변을 통해 pbs0216님의 궁금증을 해소할 수 있기를 바랍니다.

코드 자료

0

47

2

구현체가 동적으로 정해질 때, 팩토리 기법을 사용하나요?

0

55

2

MemberService의 인터페이스를 왜 사용하는지 궁금합니다.

0

76

1

롬복 @Setter를 써야 하는 상황이 있는건가요?

0

91

1

빈 등록 메서드의 파라미터가 빈이 아니어도 되나요?

0

81

1

테스트 속도가 나중에 영향이 있을까요?

0

77

1

gradle 설정 안떠서 질문 남깁니다!

0

121

2

build.gradle로 프로젝트를 여는 이유

0

86

1

provider 사용하는 이유

0

90

1

다음 강의 뭘 들어야 할까요

0

126

2

프로토타입 빈, 직접 destroy 호출 안 할 경우

0

66

1

beanB

0

82

2

퀴즈다시풀기

0

68

1

Gradle로 바꿔도 오류가 똑같이 발생하네요 ㅠㅠ

0

92

2

"중복 등록과 충돌" 강의에서 강사님과 다른 에러가 발생합니다.

0

67

3

run 실행했는데 결과창이 이렇게 뜨네요 왜 그런건가요>

0

106

2

도메인의 정의?

0

59

1

ApplicationContext 질문입니다.

0

63

1

@Scope의 proxyMode를 사용할때 단위 테스트 방법

0

89

2

ai api 선정하기 관련 질문

0

118

2

생성자 자동주입 관련해서

0

65

1

생성자 직접 호출 vs 팩토리 메서드 패턴

0

97

2

Spring에서 SessionScope와 RequestScope는 함께 사용되나요?

1

66

1

12:25

0

79

2