Spring自界說設置裝備擺設Schema可擴大(一)。本站提示廣大學習愛好者:(Spring自界說設置裝備擺設Schema可擴大(一))文章只能為提供參考,不一定能成為您想要的結果。以下是Spring自界說設置裝備擺設Schema可擴大(一)正文
簡述
本教程重要引見若何擴大Spring的xml設置裝備擺設,讓Spring可以或許辨認我們自界說的Schema和Annotation。
這裡我們要完成的功效以下,起首讓Spring可以或許辨認上面的設置裝備擺設。
<std:annotation-endpoint />
這個設置裝備擺設的要完成的功效是,設置裝備擺設完後可以或許讓Spring掃描我們自界說的@Endpoint注解。而且依據注解主動宣布WebService辦事。功效未完整完成,作為擴大Spring的教程,起一個拋磚引玉的感化。
創立項目
起首須要創立一個Java項目,這裡應用Maven創立一個quickstart項目(通俗Java項目)。
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"> <modelVersion>4.0.0</modelVersion> <groupId>com.codestd</groupId> <artifactId>spring-cxf-annotation-support</artifactId> <version>1.0.0-SNAPSHOT</version> <name>${project.artifactId}</name> <description>使您的項目可以經由過程注解的方法宣布WebService,基於Spring+CXF封裝,無API侵入。</description> <url>https://github.com/CodeSTD/spring-cxf-annotation-support</url> <licenses> <license> <name>The Apache License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> </license> </licenses> <developers> <developer> <name>jaune(WangChengwei)</name> <email>[email protected]</email> <roles> <role>developer</role> </roles> <timezone>GMT+8</timezone> </developer> </developers> <scm> <connection> https://github.com/CodeSTD/spring-cxf-annotation-support.git </connection> <developerConnection> https://github.com/CodeSTD/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> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>${cxf.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</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.7</version> <scope>test</scope> </dependency> </dependencies> </project>
界說Schema
<?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" targetNamespace="http://www.codestd.com/schema/std/ws" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xsd:import namespace="http://www.springframework.org/schema/beans"/> <xsd:annotation> <xsd:documentation><![CDATA[ Namespace support for the annotation provided by cxf framework. ]]></xsd:documentation> </xsd:annotation> <xsd:element name="annotation-endpoint"> <xsd:complexType> <xsd:complexContent> <xsd:extension base="beans:identifiedType"> <xsd:attribute name="name" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation><![CDATA[ Name of bean. Insted of id ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="package" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation><![CDATA[ Pakeage to scan. ]]></xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> </xsd:schema>
關於Sechma的常識此處不再贅述,不會用的小同伴們須要先去懂得下。sechma地位在src/main/resources/META-INF/schema/stdws-1.0.xsd。
界說注解
package com.codestd.spring.cxf.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * 用於裸露WebService辦事,經由過程在類上參加{@code @Endpoint}注解完成辦事裸露的目標。 * <p>擴大Spring的Bean掃描功效,在Bean上參加此注解後會主動注冊到Spring容器中。 * @author jaune(WangChengwei) * @since 1.0.0 */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Endpoint { /** * 此Endpoint在Spring容器中的ID * @return */ String id(); /** * 辦事宣布的地址,應神略辦事器地址及端標語和項目途徑 * @return */ String address(); }
在Spring中的設置裝備擺設
翻開“Window”–“Preferences”–“XML”–“XML Catalog”。點擊“Add”,然後在Location當選擇我們下面創立的xsd。“Key type”選擇Namespace Name,key輸出http://www.codestd.com/schema/std/ws/stdws-1.0.xsd。即Sechma中界說的targetNamespace+文件名。
在Spring中參加定名空間,並應用標簽,以下。這裡要用到Spring的注解掃描功效。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:std="http://www.codestd.com/schema/std/ws" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.codestd.com/schema/std/ws http://www.codestd.com/schema/std/ws/stdws-1.0.xsd"> <std:annotation-endpoint package="com.codestd.spring.cxf.ws"/> </beans>
在設置裝備擺設中界說了要掃描的包,不依附與context的設置裝備擺設。
以上所述是小編給年夜家分享的Spring自界說設置裝備擺設Schema可擴大(一),願望對年夜家有所贊助。