2014-09-29 3 views
0

저는 봄 보안 (일반적으로 스프링 보안이 관련되었지만이 질문의 태그에 언급 된 다른 기술)을 처리했습니다. @Configuration 주문이 "너무 일찍"또는 "너무 늦게"초기화되었습니다. 스프링 보안 및 @ 구성 순서

는 예를 이름을 지정하려면 : When customizing Tomcat: A ServletContext is required to configure default servlet handling

대답은 일반적으로 작동하기 시작 후 콩의 일부에 대해 별도의 @Configuration 파일을 만들이었다. 내가 겪고 있던 오류 (stacktraces)의 본질은 보통 내 잘못이었던 종소리를 울리지 않았다. :)

다른 사람이 왜 @Configuration 클래스를 만드는 데 도움이되는지에 대한 정보를 찾을 수있는 곳과 순서 @Configuration 클래스가 결정됩니까?

이 유형의 문제를 식별하기 위해 스택 추적에서주의해야 할 사항에 대해 알려 주시면 감사하겠습니다.

답변

1

가끔 도움이되는 이유는 빈 작성 순서에 대해 Spring 대체 옵션을 제공하기 때문입니다. 간단히 살펴보면 모든 파일을 하나의 파일에 저장하면 파일의 내용에 따라 순서가 결정됩니다. 반면, 당신이 그것을 해체한다면, 봄은 다른 옵션들을 탐험 할 수 있고, 또 다른 것들은 적당한 순서로 떨어질 수 있습니다. @Configuration에 대해 내부 클래스 및 패키지 보호 클래스를 사용할 수 있으므로 (정적 인 한) 새 파일을 만들 필요가 없습니다.

@Configuration 클래스는 또한 자기 모순 될 수 있습니다 (예 : @Autowired 동일한 단위로 생성되는 항목 - 때로는 작동하고 때로는 그렇지 않음). 또한, 이러한 상황에서보다 더 자주, 당신의 코드에 의해 명시 적으로 생성되지 않고 Spring에 의해 생성 된 컴포넌트가 일찍 인스턴스화 될 필요가 있습니다. 스프링 부트는 반드시 이 완전히 초기화되기 전에 ServletsFilters을 생성해야하므로 악화됩니다.

스택 추적이가는 한, @Autowired 종속성은 null입니다. 또한 로그에서 특정 빈이 '사후 처리에 적합하지 않음'을 나타내는 INFO 레벨 로그를 볼 수 있습니다. 그것은 치명적일 수는 없으므로 (따라서 INFO 레벨), 많은 정보를 볼 수 있다면 문제가 될 수 있습니다.

나는 이런 종류의 추론에 대한 표준적인 참조를 모른다.