inflearn logo
강의

講義

知識共有

スプリングフレームワークコア技術

IoCコンテナパート2:ApplicationContextとさまざまな空の設定方法

Bean 을 특정 Application...Event 발생 후, 등록하는 방법이 궁금합니다

解決済みの質問

611

Truestar

投稿した質問数 68

0

`App 초기화 이후 App..Event 발생시점에 Bean 등록이 가능할까요?`

이런 방법이 필요한 배경은 이렇습니다.
DB 데이터가 초기화 된 이후, S.Security 에서 URL 리소스를 불러들이는 클래스가 있는데,


이 클래스(Filter)가
@Bean 으로 되어 있으면, DB 에 데이터가 INSERT 되기 전에
Bean 등록과 동시에 Security 설정이 완료가 되버려 DB에 없는 URL 인가정보를 SELECT 해서 인가처리가 불가능 하더라구요. 그래서 사용한 방법이 Filter POJO화 입니다.

Filter @Bean 등록 메서드에 @Bean 주석처리 후
 POJO 화 시킨다음 초기화시 POJO 를 사용하고,

러닝타임(ContextRefreshedEvent 발생이후) 부터 기존 POJO 를 Bean 으로 등록하여 사용하려는 목적 때문에
이런 방법을 시도해보게 되었습니다.

강의영상에서 가능 할 듯한 내용을 확인한 부분은

즉, context 를 통해 Filter 가 빈으로 등록되는 Config 를 만들어 등록하려는데요,


질문입니다

   @EventListener(ContextRefreshedEvent.class)
public void onContextRefreshedEvent() {
...
...
}
  1. 이렇게, 핸들러 안에서 AppConfigAppContext 를 생성하여 등록하는 방법이 가능한가요?

  2. 불가능하다면, 가능한 방법이 있을까요?

이런 부분에 대해 조언을 구합니다.
읽어주셔서 감사해요

java spring

回答 3

0

Truestar

강사님.
전혀 다른 방법으로 해결을 봤어요..
@Bean 이나, Data INSERT 시점을 변경하는 것은
무모했지만, 학습효과는 대단했습니다 ㅎㅎㅎ

Data 를 reload 하는 메서드를 Filter 내부에 작성하고/
App..ReadyEvent 핸들러에서 호출 하는 것으로 해결되었습니다.

질문과 자문자답으로, 실마리를 찾은거 같아 참 다행인것같습니다.
관심가져주셔서 감사드려요.. 고맙습니다.

0

Truestar

강사님 답변 감사드립니다.

알려주신 BFPP 의 postProcessBeanFactory() 메서드가 발동 되도록 적용해보면
JPA 를 통해 데이터 INSERT 가  되기 이전에 실행되는것으로 판단이 되었어요.
( 테이블 생성 전 )


저도 이 부분을 이전에도 시도해 봤었지만,  ContextRefreshedEvent   가 발생하는 시점이
데이터 INSERT 가  끝나기 때문에, @Bean 을 재등록 해야 하는 상황이 필요하게 되었습니다

어떻게 해야 BFPP 를 Query 실행 이후 작동되게 할 수 있을까요?

Query 실행이 된 이후, Bean 전/후처리가 가능하거나,
Query 실행을 Bean 등록보다 먼저 되게 해야 할것 같은데요..
방법을 도무지 모르겠어요ㅠ

혹시 제가 놓치고 있는게 있는지 궁금합니다
읽어주셔서 감사해요

0

whiteship

안녕하세요. BeanFactoryPostProcessor 라는 인터페이스가 있습니다. 아마 빈 라이브사이클에서 제가 잠시 언급했을 텐데 이 인터페이스의 구현체를 사용하시면 빈 팩토리가 만들어진 이후에 원하는 일들을 하실 수 있을겁니다. 스프링 @AOP를 생각해 보시면 특정 빈을 감싼 프록시 빈을 만들어 등록해 주는 일을 하는데 그때도 역시 BFPP의 구현체가 사용됩니다.

BeanFactory와 ApplicationContext 중 사용하고 싶은 컨테이너를 설정 할 수 있나요?

0

378

1

프로젝트 생성에 관련한 질문

0

374

1

안녕하세요 강의 내용을 듣다가 궁금점이 생겨 글을 남기게 되었습니다.

0

371

1

HttpServeltRequest 객체의 빈 스코프에 대해 질문 드립니다.

0

304

0

PropertyEditor non thread-safe 한 이유

0

490

1

빈의 초기화 시점이 궁금합니다.

0

393

1

이 강의 예제소스 없나요?

0

345

1

릴로딩 기능에 대해

0

404

1

IoC/DI와 POJO의 관계

1

747

2

기선님 RetentionPolicy에 대해서 질문이 있습니다.

0

291

1

안녕하세요 기선님!

3

486

3

비동기적으로 실행할때

0

313

2

"Prototype/프록시"로 설정했는데 동일한 객체로 나옵니다

0

529

4

@Autowired 로 가져오는 Bean은 ?

2

280

1

Type-Safety 의미

0

537

1

Null Point

0

318

1

WebDataBinder를 특별히 쓰는 이유가 있나요?

0

383

1

안녕하세요?

0

335

2

애노테이션이 없습니다(?)

0

278

3

코드 중 변수 앞에 적는 것이 무엇인지 알고 싶습니다.

0

292

2

강의 하시면서 사용하는 resolving 이란 단어는 어떤 의미인가요?

1

1495

1

IOC컨테이너관련 질문입니다

0

243

3

인터페이스가 있는 경우 인터페이스 타입으로 주입하는 추가 질문입니다.

0

258

1

백기선님 , 강좌 순서 때문에 고민드립니다.

0

458

4