一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Spring自定義配置Schema可擴展(一)

Spring自定義配置Schema可擴展(一)

2020-03-25 13:18王成委 JAVA教程

本教程主要介紹如何擴展Spring的xml配置,讓Spring能夠識別我們自定義的Schema和Annotation,,需要的朋友可以參考下

簡述

本教程主要介紹如何擴展Spring的xml配置,讓Spring能夠識別我們自定義的Schema和Annotation。

這里我們要實現的功能如下,首先讓Spring能夠識別下面的配置。

<std:annotation-endpoint />

這個配置的要實現的功能是,配置完后能夠讓Spring掃描我們自定義的@Endpoint注解。并且根據注解自動發布WebService服務。功能未完全實現,作為擴展Spring的教程,起一個拋磚引玉的作用。

創建項目

首先需要創建一個Java項目,這里使用Maven創建一個quickstart項目(普通Java項目)。
POM文件內容如下

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<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>jaune162@126.com</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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?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。

定義注解

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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的注解掃描功能。

?
1
2
3
4
5
6
7
8
9
10
<?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可擴展(一),希望對大家有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 公妇乱淫 | 国产日本免费 | 红楼梦黄色小说 | 特黄特a级特别特级特毛片 特黄a级三级三级野战 | 欧美一级片在线视频 | 97热久久免费频精品99国产成人 | 欧美xxxxx69| 黄www片| 国产午夜精品久久理论片 | 消息称老熟妇乱视频一区二区 | 青青青青青国产免费手机看视频 | 美女国内精品自产拍在线播放 | 国产青草亚洲香蕉精品久久 | 久久视频在线视频观看天天看视频 | 日本www午夜色在线视频 | 久久久久久久久女黄 | 秋葵丝瓜茄子草莓榴莲樱桃 | 草莓香蕉榴莲丝瓜秋葵绿巨人在线看 | 大桥未久一区二区 | 国产香蕉一区二区在线观看 | 236z最新伦理 | 国产精品一区二区在线观看完整版 | 色先锋 影音先锋a 资源站 | 亚洲精品视 | 翁公与小莹在客厅激情 | 香蕉人人超人人超碰超国产 | 涩色爱 | 国产91在线九色 | 国产不卡视频一区二区在线观看 | 香蕉久久综合 | 国内在线播放 | 男人把j放进女人的p里视频 | 女同xx美女放 | 丰满大乳欲妇三级k8 | 久久久WWW免费人成精品 | 手机在线免费观看高清 | 国产精品亚洲一区二区 | 欧美伦乱 | 69罗莉视频在线观看 | 羞羞麻豆国产精品1区2区3区 | 亚洲国产精品一区二区三区久久 |