inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

토비의 스프링 부트 - 이해와 원리

@Conditional 학습테스트

@Conditional 학습테스트 << 강의중 질문있습니다!

해결된 질문

340

김경현

작성한 질문수 4

0

 안녕하세요 토비님. 수업 잘 듣고있습니다

다름이 아니라,

학습테스트 강의 중에, @Conditional() 괄호 안에 있는 클래스의 리턴값에 따라 true/false를 반환하는 void conditional() 테스트 메서드에 대해 질문이 있습니다.

 

true를 리턴하는 경우 코드가

AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext();

ac.register(Config1.class);

ac.refresh();

MyBean bean = ac.getBean(MyBean.class);

이고, false를 리턴하는 경우는

AnnotationConfigApplicationContext ac2 = new AnnotationConfigApplicationContext();

ac2.register(Config2.class);

ac2.refresh();

MyBean bean2 = ac2.getBean(MyBean.class);

인데요..

여기서 true 테스트는 성공하고 false테스트는 실패를 합니다.

여기서 생긴 의문점은, ac와 ac2 둘다 스프링 컨테이너를 가리키는 것인데, ac.getBean의 결과와 ac2.getBean의 결과가 다르다는것은 앞서 ac.register()해서 등록한 MyBean이 ac2 스프링 컨테이너에는 없다는 것으로 해석이 되는데요..

 

스프링에서는 스프링 컨테이너라는것이 하나 존재하고 그 안에 여러 빈들이 들어있다고 지금까지 생각하고 있었습니다.

그래서 ac에서 bean을 등록했기때문에 ac2.getBean을 해도 똑같이 MyBean이 존재해야 하는것이 아닌가?? 라는 의문점이 듭니다.

Q1. ac와 ac2 는 다른 스프링 컨테이너인가요 ??

Q2.다른것이라면 , 스프링에서는 스프링컨테이너가 여러개 존재하는 것인가요??

읽어주셔서 감사합니다. 새해 복 많이 받으세요

spring spring-boot spring-jdbc

답변 1

0

토비

서버 애플리케이션으로 동작할 때는 컨테이너는 일반적으로 하나인 게 맞습니다.

 

그런데 스프링의 컨테이너에 해당하는 ApplicationContext 오브젝트는 그냥 자바 오브젝트일 뿐입니다. 그래서 여러 개 만들고 제 각각 다른 빈을 등록해서 다른 구성을 가지게 할 수 있습니다. 마치 List를 여러개 만들 수 있는 것처럼요.

위에 적어주신 코드를 봐서는 ac, ac2는 완전히 다른 컨테이너이고, 각각 등록된 빈이 다른 게 정상입니다.


이 학습 테스트에서는 여러가지 다른 상황을 만들고 그에 따라 빈 구성이 어떻게 달라지는지를 확인해보는게 목적이라 의도적으로 여러 개 컨테이너를 만든 것입니다.

0

김경현

답변 감사합니다!

11강에서 cmd에서 spring shell에 $ init 하면 Fail 메세지

0

75

2

TestRestTemplate 을 통해 테스트 실행시 웹 요청 정보가 콘솔에 표시되지 않습니다.

0

85

1

섹션7. 자동구성 정보파일분리 강의 질문(@MyAutoConfiguration 붙힌 이유)

0

202

2

WebApplicationContext를 DispatcherServlet에 this로 넘기는 것

0

279

2

인프라 빈 구성 정보의 분리에서 EnableMyAutoConfiguration 질문드립니다.

0

211

2

질문드립니다.

0

233

2

spring boot 3.3.7로 학습중입니다.

0

371

2

Serverproperties 객체 생성 후 @Impor 어노테이션 사용 이유 용도

0

162

2

spring start io 에서 이제더이상 2.x버전은 지원하지 않는 것 같습니다.

1

298

2

Springboot 3.2 이상에서 파라미터 추론관련

0

918

4

binding error

0

222

3

Arrays.copyOf 메서드의 타입 세이프

1

156

2

MyOnClassCondition에 있는 matches method의 Invoke 횟수

1

233

3

인용구의 출처가 궁금합니다.

0

259

1

프로퍼티 빈의 후처리기 도입 AnnotationUtils의 사용

0

236

2

SimpleCacheConfiguration과 빈 등록

0

169

2

MyAutoConfigImportSelector 에서 생성자로 ClassLoader를 주입받을 수 있는 점

0

244

1

IntelliJ project jenerator spring initailizr

0

150

1

강의 자료 레퍼지토리에 업로드

0

216

1

강의자료

0

388

1

Hikari 라이브러리가 없으면 오류가 나는거 아닌가요

0

314

2

Tomcat 포트 프로퍼티 미설정시 랜덤 포트 설정 문의

0

476

5

@Import 로 Bean을 등록해야하는 기준이 뭔지 궁금합니다.

0

343

2

application.properties파일내 프로퍼티 이름

0

214

1