Краткое описание
Этот урок в основном представляет, как расширить конфигурацию XML Spring, чтобы Spring могла распознавать нашу индивидуальную схему и аннотацию.
Функции, которые мы хотим реализовать здесь, следующие: во -первых, пусть Spring распознает следующую конфигурацию.
<Std: Annotation-endpoint />
Функция для реализации в этой конфигурации заключается в том, что после конфигурации пружина может сканировать наше настраиваемое аннотацию @endpoint. И автоматически публиковать услуги веб -сервиса в соответствии с аннотациями. Функция не полностью реализована, и в качестве учебника для расширения весны она играет роль в привлечении нефрита.
Создать проект
Во -первых, вам нужно создать проект Java, и здесь вы используете Maven для создания проекта QuickStart (обычный Java Project).
Содержание файла POM выглядит следующим образом
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <dolidyversion> 4.0.0 </modelversion> <groupid> com.codestd </GroupId> <ratifactid> Spring-CXF-Annotation-support </artifactid> <sersive> 1.0.0-snapshot </version> <mame> $ {project.artifactid} </name> <description> Позволяет вашему проекту публиковать веб -сервис через аннотации, основанные на инкапсуляции Spring+CXF, без вторжения API. </description> <url> https://github.com/codestd/spring-cxf-annotation-support </url> <licelenses> <license> <mame> Лицензия Apache, версия 2.0 /Role></Roles><timeZone>gmt+88</timezone></developer></developers><scm><connection>https://github.com/codestd/spring-cxf-annotation-support.git! ESTD/Spring-CXF-Annotation-support.git </developerConnection> </scm> <properties> <junit.version> 4.12 </junit.version> <Spring.version> 4.2.4.Release </spring.version> <cxf.version> 3.1.3 </cxf.version> </prope rties> <dependencies> <dehyedency> <groupid> junit </groupid> <artifactid> junit </artifactid> <serse> $ {junit.version} </version> <scope> test </scope> </depertive> <DeyEdency> <groupId> org.spramework </rob upid> <artifactid> spring-context </artifactid> <sersion> $ {spring.version} </version> </depertive> <DeyEdency> <groupId> org.apache.cxf </GroupId> <ratifactId> cxf-rt-frontend jaxws </artifactid> <seriate> $ {cx F.Version} </version> </dependency> <Dependency> <groupid> org.apache.cxf </GroupId> <artifactid> cxf-rt-transports-http-jetty </artifactid> <seriate> $ {cxf.version} </version> </dependency> <Verity> <groupD> org.springframework </groupid> <artifactid> Spring-test </artifactid> <sersion> $ {spring.version} </version> </vehyederiation> <dehydency> <groupid> log4j </GroupId> <artifactId> log4j </artifactid> <sersion> 1.2.14 </v ersion> <cracpe> test </scope> </depertive> <Dependency> <groupId> org.slf4j </GroupId> <artifactid> slf4j-log4j12 </artifactid> <serse> 1.7.7 </version> <scope> test </scope> </vehifactid> </project>Определение Схема
<? xml version = "1.0" Encoding = "utf-8" standalone = "no"?> <xsd: schema xmlns = "http://www.codestd.com/schema/std/ws" xmlns: xsd = "http://www.w3.org/2001/xmlschema" xmlns: beans = "http://www.springframework.org/schema/beans" targetNamespac e = "http://www.codestd.com/schema/std/ws" elementFormDefault = "Clevified" attributeFormDefault = "uncalified"> <xsd: import namespace = "http://www.springframework.org/schema/beans"/> <xsd: аннотация> <xsd: документация> <! [CDATA [поддержка пространства имен для аннотации, предоставленной CXF Framework. ]]> </xsd: документация> </xsd: аннотация> <xsd: name = name = "andotation-endpoint"> <xsd: specbledtype> <xsd: complexcontent> <xsd: endension base = "beans: indifiedtype"> <xsd: atmy name = "name" xsd: строка " Использовать = "Необязательно"> <xsd: аннотация> <xsd: документация> <! [cdata [имя бобов. Insted of id]]> </xsd: документация> </xsd: аннотация> </xsd: атрибут> <xsd: атрибут name = "package" type = "xsd: string" use = "Необязательно"> <xsd: аннотация> <xsd: документация> <! [Cdata [pakegege to scan. ]]> </xsd: документация> </xsd: аннотация> </xsd: атрибут> </xsd: endension> </xsd: ComplexContent> </xsd: ComplexType> </xsd: element> </xsd: schema>
Знание о SEHMA не будет описано здесь. Друзья, которые не знают, как его использовать, должны сначала узнать об этом. Местоположение SECHMA находится в SRC/Main/Resources/Meta-Inf/Schema/STDWS-1.0.xsd.
Определение аннотации
пакет com.codestd.spring.cxf.annotation; import java.lang.annotation.documed Цель экспозиции обслуживания путем добавления {@code @endpoint} аннотации в класс. * <p> расширить функцию сканирования бобов весны. После добавления этой аннотации в фасоль он будет автоматически зарегистрирован в пружинном контейнере. * @author jaune(WangChengwei)* @since 1.0.0*/@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Endpoint {/*** The ID of this Endpoint in the Spring container* @return*/String id();/*** The address of the service is published, the server address, port number and project path* @return*/string address ();}Конфигурация весной
Откройте «окно», «предпочтения», «XML», «Каталог XML». Нажмите «Добавить», а затем выберите XSD, который мы создали выше в месте. «Тип клавиши» выберите имя пространства имен и введите ключ в http://www.codestd.com/schema/std/ws/stdws-1.0.xsd. То есть имя файла TargetNamesPace+, определенное в SECHMA.
Добавьте пространства имен весной и используйте теги следующим образом. Здесь нам нужно использовать функцию сканирования аннотации весны.
<? xml version = "1.0" Encoding = "UTF-8"?> <фасоль xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-in Стока "xmlns: std =" http://www.codestd.com/schema/std/ws "xsi: schemalocation =" http: //www.springframew ork.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.cod estd.com/schema/std/wshttp://www.codestd.com/schema/std/ws/stdws-1.0.xsd">std:annotation-endpoint package = "com.codestd.spring.cxf.ws"/> </beans>
Пакет, который должен быть отсканирован, определяется в конфигурации и не зависит от конфигурации с контекстом.
Выше приведено схема Presn Custom Configuration, расширяющуюся (1), разделенную редактором. Я надеюсь, что это будет полезно для всех.