Breve descrição
Este tutorial apresenta principalmente como estender a configuração XML da Spring para que a Spring possa reconhecer nosso esquema e anotação personalizados.
As funções que queremos implementar aqui são as seguintes: Primeiro, vamos reconhecer a configuração a seguir.
<std: anotação-endpoint />
A função a ser implementada nesta configuração é que, após a configuração, a Spring pode digitalizar nossa anotação @ENDPoint personalizada. E publique automaticamente os serviços de serviço da web de acordo com as anotações. A função não está totalmente implementada e, como tutorial para estender a primavera, ela desempenha um papel na atração de Jade.
Criar um projeto
Primeiro, você precisa criar um projeto Java e aqui você usa o Maven para criar um projeto rápido (projeto Java Normal).
O conteúdo do arquivo POM é o seguinte
<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 "> <ModelVersion> 4.0.0 </modelversion> <puerpiD> com.codestd </groupId> <TRORFACTID> Spring-CXF-ANOTAÇÃO-SUPORPO </ARTIFACTID> <Versão> 1.0.0-SNAPSHOT </versão> <name> $ {Project.artifactId} </name> <cription> Permite que seu projeto publique o WebService por meio de anotações, com base no encapsulamento Spring+CXF, sem intrusão de API. </cription> <url> https://github.com/codestd/spring-cxf-annotation-support </url> <iclenses> <iculture> <name> A licença do Apache, versão 2.0 </name> <url> http://www.apache.org/license/license-2.0.txt </url> </conomic. /role></roles><TimeZone>gmt+8</timezone></developer></developers><scm><connection>https://github.com/codestd/spring-cxf-annotation-support.git<Git</connection><deconnection> estd/spring-cxf-annotation-support.git </sengenderConnection> </scm> <Properts> <nunit.version> 4.12 </junit.version> <pring.version> 4.2.4.release </spring.version> <cxf.version> 3.1.3 </cxf.version.version> rties> <pendências> <pendency> <puperid> junit </frupid> <TRAFACTID> JUNIT </STIFACTID> <Versão> $ {Junit.version} </sipers> <cope> test </cope> </dependence> <pendence> <purgid> org.springFramework </grog UPID> <TRARFACTID> Spring-Context </stutifactId> <versão> $ {spring.version} </version> </dependency> <pendence> <puroupid> org.apache.cxf </groupid> <Artifactid> cxf-rt-frontend-jaxws </ArtifactId> <versão f.version}</version></dependency><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-transports-http-jetty</artifactId><version>${cxf.version}</version></dependency><dependency><groupId> org.springframework </frugiD> <stifactId> primavera-teste </storkactid> <versão> $ {spring.version} </version> </dependency> <pendence> <puperid> log4j </groupiD> <TifactId> log4j </stifactid> <versão> 1.2.14 </v Ersion> <cope> teste </cope> </dependency> <pendency> <voundid> org.slf4j </groupid> <stifactId> slf4j-log4j12 </artifactId> <Versão> 1.7.7 </versão </scope> test </cope> </ipendence> </Project>Esquema de definição
<? xml versão = "1.0" coding = "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" Namespac e = "http://www.codestd.com/schema/std/ws" elementFormDefault = "qualificado" attributeFormDefault = "não qualificado"> <xsd: importar namespace = "http://www.springframework.org/schema/beans"/> <xsd: anotação> <xsd: documentação> <! [CDATA [suporte para o nome da annOtation fornecido pela estrutura CXF. ]]> </xsd: documentação> </xsd: anotação> <xsd: elemento name = "anotação-endpoint"> <xsd: complextype> <xsd: complexContent> <xsd: extensão base = "beans: identificouTtype"> <xsd: atribui name = "name" "tipo =" use = "Opcional"> <xsd: anotação> <xsd: documentação> <! [CDATA [nome do feijão. Instalado de ID]]> </xsd: Documentação> </xsd: anotação> </xsd: attribute> <xsd: atributo name = "package" type = "xsd: string" use = "opcional"> <xsd: annotation> <xsd: documentação> <! [CDATA [pakeage para scange. ]]> </xsd: documentação> </xsd: anotação> </xsd: attribute> </xsd: extension> </xsd: complexContent> </xsd: complextype> </xsd: elemento> </xsd: esquema>
O conhecimento sobre Sechma não será descrito aqui. Amigos que não sabem como usá -lo precisam aprender primeiro. A localização do Sechma está em SRC/Main/Recursos/Meta-Inf/Schema/STDWS-1.0.XSD.
Anotação de definição
pacote com.codestd.spring.cxf.annotation; importar java.lang.annotation.documented; import java.lang.annotation.ElementType; importação java.lang.annotation.rettion; import java.lang.annotation.retgetgetypolicy; importação java.la.lanice; O objetivo da exposição ao serviço adicionando {@code @endpoint} anotação à classe. * <p> estender a função de varredura de feijão da primavera. Depois de adicionar esta anotação ao feijão, ele será registrado automaticamente no contêiner de mola. *@Author Jaune (Wangchengwei)*@since 1.0.0*/ @Target (ElementType.Type) @retention (retentionPolicy.Runtime) @DocumentEdPublic @Interface endpoint {/*** O ID deste endpoint no spring recipiente* @retorno*/string (); @return*/string endereço ();}Configuração na primavera
Abrir "Janela", "Preferências", "XML", "Catálogo XML". Clique em "Adicionar" e selecione o XSD que criamos acima no local. "Tipo de chave" Selecione o nome de namespace e insira a chave em http://www.codestd.com/schema/std/ws/stdws-1.0.xsd. Isto é, o Nome do arquivo TargetNamespace+ definido em Sechma.
Adicione namespaces na primavera e use tags da seguinte maneira. Aqui precisamos usar a função de digitalização de anotação da primavera.
<? xml versão = "1.0" coding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-in postura "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>
O pacote a ser digitalizado é definido na configuração e não depende da configuração com o contexto.
O acima é o esquema de configuração personalizado da primavera extensível (1) compartilhado pelo editor. Espero que seja útil para todos.