В моей Весна приложения 3.1, я когда-нибудь понадобится, чтобы изменить поведение по умолчанию некоторые из весенних пространств имен в моем контексте файлов. Для этого я создаю пользовательские классы, которые реализуют интерфейсы или продлить классов по умолчанию пружины.
Но мне трудно точно знать, каковы те классы, которые весной использует за его имен! Что такое шаги, необходимые, чтобы найти их?
Например, пространство безопасности :
<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>
Как мне найти, какие классы используются в "&ЛТ;сек:выход />" и пространства имен? Я не'т найти информацию, глядя на http://www.springframework.org/schema/security/spring-security-3.1.xsd !
Где я должен посмотреть?
Каждую весну пространства имен, связанный NamespaceHandler
реализации. Схемы пространства сопоставляются с файлами схемы внутри Весна банок в различных весна.файлы схем (см. Также https://stackoverflow.com/questions/10768873).
Пространства имен XML-схемы также сопоставлен обработчик классов весна.файлы хендлера (несколько как каждую весну банку может привести к различным пространствам имен). Для вашего удобства вот список самых распространенных имен:
АОП
- AopNamespaceHandler
SimpleConstructorNamespaceHandler
кэш
- CacheNamespaceHandler
ContextNamespaceHandler
с JDBC
- JdbcNamespaceHandler
Джи
- JeeNamespaceHandler
ОМС
- JmsNamespaceHandler
LangNamespaceHandler
в MVC
- MvcNamespaceHandler
сайт oxm
- OxmNamespaceHandler
п
- SimplePropertyNamespaceHandler
задача
- TaskNamespaceHandler
Техас
- TxNamespaceHandler
утиль
- UtilNamespaceHandler
SecurityNamespaceHandler
с OAuth
- OAuthSecurityNamespaceHandler
инт
- IntegrationNamespaceHandler
протокол AMQP
- AmqpNamespaceHandler
EventNamespaceHandler
кормить
- FeedNamespaceHandler
FileNamespaceHandler
FTP
- FtpNamespaceHandler
gemfire
- GemfireIntegrationNamespaceHandler
заводной
- GroovyNamespaceHandler
НТТР
- HttpNamespaceHandler
ИС
- IpNamespaceHandler
с JDBC
- JdbcNamespaceHandler
ОМС
- JmsNamespaceHandler
протокола
- JmxNamespaceHandler
MailNamespaceHandler
в Redis
- RedisNamespaceHandler
МСД
- RmiNamespaceHandler
скрипт
- ScriptNamespaceHandler
IntegrationSecurityNamespaceHandler
по SFTP
- SftpNamespaceHandler
StreamNamespaceHandler
TwitterNamespaceHandler
с WS
- WsNamespaceHandler
IntegrationXmlNamespaceHandler
протокол XMPP
- XmppNamespaceHandler
Если вы просмотрите источника каждого из этих классов вы быстро обнаружите, реализации различных BeanDefinitionParser, ответственные за анализ фактического определения XML.Почти все они названы *BeanDefinitionParser
. Первым шагом является, используя браузер, довести до весны документации и нажмите <клавиши Ctrl> По-Ф
(или в <команда> По-Ф
). Поиск BeanDefinitionParser. Классы, которые совпадают, один или два, их имена, смотреть как они обрабатывают элементы пространства имен, которое вы исследуете. Это может занять немного, глядя на исходный код для этих классов, но вы'будете в конечном итоге найти то, что вы хотите.
Кроме того, в вашей IDE, вы можете перейти к BeanDefinitionParser.java и тогда вообще-то "найти обычаи и" (IntelliJ) или "иерархия типа„ (Затмение), чтобы найти всех исполнителей этого интерфейса. Есть несколько классов, которые Дон'т следовать конвенции
*BeanDefinitionParser` именования. Вашей IDE даст вам полный список.
Я думаю, что весна должна на самом деле документ, в разделе пространства имен их справочные документы, имена классов, которые обрабатывают каждый элемент.
Каждое пространство имен XML парсится его NamespaceHandler. Класс обработчик пространства имен безопасности SecurityNamespaceHandler, который определяется весной.файл обработчики внутри мета-инф файла spring-security-config-xxx.jar .
Элемент HTTP-это парсится HttpSecurityBeanDefinitionParser и ее дочерний элемент "выход" анализируется орг.springframework.безопасности.конфиг.протоколу HTTP.LogoutBeanDefinitionParser
(защищенным от пакета).
Также см. Примечания в разделе кодирование NamespaceHandler и советы в разделе какие бобы зарегистрированы к весне пространства безопасности? Если вы планируете настроить его.
В случае с весны безопасности, это'ы хорошо документированы: см. приложение В. безопасность пространства имен
Смотрите также в этом блоге: за весной пространство безопасности