inflearn logo
강의

Course

Instructor

Spring Core Principles - Basic Edition

Create a request scope example

제가 이해한바가 맞을까요.. ?

488

gomdole030581

108 asked

1

이해가 안되서 강의를 돌려보다가 따로 정리해봤는데,


1번. CoreApplication의 main메서드를 실행시키면 현재로서는 에러가 나는게 맞지만, 동작순서만 보자면 CoreApplication의 main메서드를 실행시키면 실행될때 스프링컨테이너가 생성되고 컴포넌트스캔이 되서 @Controller, @Service에 의해 각각LogDemoController, LogDemoService 빈 등록이 일어난다.

그리고 또, main메서드가 실행되고있는동안(런타임동안=프로그램이 실행되고있는동안) DI가 일어난다. 그리고나서 고객이 localhost:8080/log-demo로 url을 입력하면 http요청이 들어온것이므로 이때 컴포넌트 스캔이되서 @Component에 의해 자동으로 MyLogger빈이 등록되고 초기화메소드가 실행된다. 그러고난후 @RequestMapping("log-demo")로 되어있으므로 logDemo()메소드를 실행하고, return "OK"로 응답을 준 후에 종료 메소드가 실행된다.

 

2번. 오류가 나는 이유를 3가지로 정리해봤는데 어떤게 더 적절한 이유일까요..?

 

이렇게 이해하면 될까요 ..?

spring oop

Answer 2

3

David

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

  1. @ComponentScan은 컨테이너가 생성되는 과정에서 진행됩니다. 따라서 아래 내용은 잘못 이해하고 계신 것 같습니다.

그리고 또, main메서드가 실행되고있는동안(런타임동안=프로그램이 실행되고있는동안) DI가 일어난다. 그리고나서 고객이 localhost:8080/log-demo로 url을 입력하면 http요청이 들어온것이므로 이때 컴포넌트 스캔이되서 @Component에 의해 자동으로 MyLogger빈이 등록되고 초기화메소드가 실행된다

 

  1. 오류가 발생하는 이유는 Request Scope를 가지는 빈을 생성하여 해당 빈을 사용하고 있는 곳에 의존관계 주입을 진행해야 하는데, 현재 request scope가 active된 상황(요청이 서버로 유입된 상황)이 아니기 때문입니다. 이 결과로 컨테이너는 reqeust scope 빈을 생성할 수 없는 상황이라고 예외를 발생시키는 것입니다.

감사합니다.

0

shong5096384

1번 질문에 대한 추가 답변을 해보자면

컨테이너가 생성되는 과정에서 @ComponentScan 이 진행되고 이 때 스코프와 상관없이 BeanDefinition 정보가 등록됩니다

그리고 싱글톤 스코프의 경우에는 BeanDefinition 정보가 등록되면서 동시에 BeanDefinition 을 근거로 빈 생성이 이루어지고

프로토타입 스코프는 컨테이너에 요청할 때, 리퀘스트 스코프는 http 요청이 들어올 때

미리 등록된 BeanDefinition 을 근거로 빈 생성이 이루어집니다

 

혹시 잘못된 부분 있으면 지적 부탁드립니다.

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

0

43

2

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

0

72

1

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

0

87

1

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

0

79

1

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

0

75

1

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

0

116

2

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

0

81

1

provider 사용하는 이유

0

82

1

다음 강의 뭘 들어야 할까요

0

123

2

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

0

62

1

beanB

0

79

2

퀴즈다시풀기

0

63

1

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

0

90

2

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

0

63

3

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

0

102

2

도메인의 정의?

0

57

1

ApplicationContext 질문입니다.

0

60

1

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

0

86

2

ai api 선정하기 관련 질문

0

115

2

생성자 자동주입 관련해서

0

60

1

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

0

91

2

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

1

62

1

12:25

0

74

2

appConfig.xml 오류

0

123

1