[SPRING] Spring XML 네임 스페이스 : 구현 클래스가 무엇인지 어떻게 알 수 있습니까?
SPRINGSpring XML 네임 스페이스 : 구현 클래스가 무엇인지 어떻게 알 수 있습니까?
스프링 3.1 응용 프로그램에서는 내 컨텍스트 파일에서 일부 스프링 네임 스페이스의 기본 동작을 변경해야 할 때가 있습니다. 이를 위해, 일부 인터페이스를 구현하거나 Spring이 사용하는 기본 클래스를 확장하는 사용자 정의 클래스를 작성합니다.
하지만 Spring이 네임 스페이스 뒤에 사용하는 클래스가 무엇인지 정확하게 알기가 어렵습니다. 그것들을 찾는 데 필요한 단계는 무엇입니까?
예를 들어, 보안 네임 스페이스는 다음과 같습니다.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:sec="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
그리고 뭔가 :
<sec:http>
...
<sec:logout />
</sec:http>
"
어디를 봐야합니까?
해결법
-
==============================
1.모든 Spring 네임 스페이스에는 연결된 NamespaceHandler 구현이 있습니다. 네임 스페이스 스키마는 다양한 spring.schemas 파일의 Spring JAR 내부의 스키마 파일에 매핑된다 (Spring DI applicationContext.xml에서 xsi : schemaLocation은 정확히 어떻게 사용 되는가? 참조).
모든 Spring 네임 스페이스에는 연결된 NamespaceHandler 구현이 있습니다. 네임 스페이스 스키마는 다양한 spring.schemas 파일의 Spring JAR 내부의 스키마 파일에 매핑된다 (Spring DI applicationContext.xml에서 xsi : schemaLocation은 정확히 어떻게 사용 되는가? 참조).
XML 스키마 네임 스페이스는 spring.handlers 파일의 핸들러 클래스에도 매핑된다 (각 Spring JAR이 다른 네임 스페이스를 도입 할 때마다 여러 개). 여기에 가장 일반적인 네임 스페이스 목록이 있습니다.
이러한 각 클래스의 소스를 탐색하면 실제 XML 정의를 구문 분석하는 다양한 BeanDefinitionParser 구현을 신속하게 발견하게됩니다.
-
==============================
2.거의 모두 BeanDefinitionParser로 명명됩니다. 첫 번째 단계는 브라우저를 사용하여 Spring JavaDoc을 시작하고
-F (또는 -F)를 누르는 것입니다. BeanDefinitionParser를 검색하십시오. 일치하는 클래스 중에서 하나 또는 두 개는 이름에 따라 연구중인 네임 스페이스 요소를 처리하는 것처럼 보입니다. 이러한 클래스의 소스 코드를 살펴 보는 데 약간의 시간이 걸릴 수 있지만 궁극적으로 원하는 것을 찾을 수 있습니다. 거의 모두 BeanDefinitionParser로 명명됩니다. 첫 번째 단계는 브라우저를 사용하여 Spring JavaDoc을 시작하고
-F (또는 -F)를 누르는 것입니다. BeanDefinitionParser를 검색하십시오. 일치하는 클래스 중에서 하나 또는 두 개는 이름에 따라 연구중인 네임 스페이스 요소를 처리하는 것처럼 보입니다. 이러한 클래스의 소스 코드를 살펴 보는 데 약간의 시간이 걸릴 수 있지만 궁극적으로 원하는 것을 찾을 수 있습니다. 또는 IDE에서 BeanDefinitionParser.java로 이동 한 다음 "Find Usages"(IntelliJ) 또는 "Type Hierarchy"(Eclipse)를 수행하여 해당 인터페이스의 모든 구현자를 찾을 수 있습니다. * BeanDefinitionParser 명명 규칙을 따르지 않는 소수의 클래스가 있습니다. IDE가 포괄적 인 목록을 제공합니다.
나는 Spring이 실제로 참조 문서의 네임 스페이스 섹션에 각 요소를 처리하는 클래스의 이름을 문서화해야한다고 생각한다.
-
==============================
3.모든 XML 이름 공간은 NamespaceHandler에 의해 구문 분석됩니다. 보안 네임 스페이스의 핸들러 클래스는 SecurityNamespaceHandler이며, 이는 spring-security-config-XXX.jar 파일의 META-INF 안에있는 spring.handlers 파일에 명시되어있다.
모든 XML 이름 공간은 NamespaceHandler에 의해 구문 분석됩니다. 보안 네임 스페이스의 핸들러 클래스는 SecurityNamespaceHandler이며, 이는 spring-security-config-XXX.jar 파일의 META-INF 안에있는 spring.handlers 파일에 명시되어있다.
http 요소는 HttpSecurityBeanDefinitionParser에 의해 구문 분석되고 자식 요소 로그 아웃은 org.springframework.security.config.http.LogoutBeanDefinitionParser (패키지 보호)에 의해 구문 분석됩니다.
또한 NamespaceHandler 코딩에 대한 주석과 스프링 보안 네임 스페이스에 의해 등록 된 bean은 무엇입니까? 당신이 그것을 사용자 정의 할 계획이라면.
-
==============================
4.Spring Security의 경우 잘 설명되어 있습니다 : 부록 B. 보안 네임 스페이스를 참조하십시오.
Spring Security의 경우 잘 설명되어 있습니다 : 부록 B. 보안 네임 스페이스를 참조하십시오.
이 블로그 게시물을 참조하십시오 : SPRING SECURITY NAMESPACE BEHIND
from https://stackoverflow.com/questions/11174286/spring-xml-namespaces-how-do-i-find-what-are-the-implementing-classes-behind-t by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 MVC : 인덱스 페이지에 대한 기본 컨트롤러를 만드는 방법? (0) | 2019.03.01 |
---|---|
[SPRING] 간단한 영어로 AOP, Dependency Injection 및 Inversion Of Control이란 무엇입니까? (0) | 2019.03.01 |
[SPRING] OSGI를 시작하는 가장 좋은 방법은 무엇입니까? [닫은] (0) | 2019.03.01 |
[SPRING] 스프링 프레임 워크를 구성하는 방법은 몇 가지가 있습니까? 그 (것)들의 차이는 기술적으로 무엇입니까? (장단점이 아니다 ..) (0) | 2019.02.28 |
[SPRING] Spring MVC에서 인터셉터와 필터의 차이점 (0) | 2019.02.28 |