Spring自定义配置Schema可扩展(一)

网友投稿 205 2023-07-22


Spring自定义配置Schema可扩展(一)

简述

本教程主要介绍如何扩展Spring的xml配置,让Spring能够识别我们自定义的Schema和Annotation。

这里我们要实现的功能如下,首先让Spring能够识别下面的配置。

这个配置的要实现的功能是,配置完后能够让Spring扫描我们自定义的@Endpoint注解。并且根据注解自动发布WebService服务。功能未完全实现,作为扩展Spring的教程,起一个抛砖引玉的作用。

创建项目

首先需要创建一个java项目,这里使用Maven创建一个quickstart项目(普通Java项目)。

POM文件内容如下

4.0.0

com.codestd

spring-cxf-annotatiohttp://n-support

1.0.0-SNAPSHOT

${project.artifactId}

使您的项目可以通过注解的方式发布WebService,基于Spring+CXF封装,无API侵入。

https://github.com/CodeSTD/spring-cxf-annotation-support

The Apache License, Version 2.0

http://apache.org/licenses/LICENSE-2.0.txt

jaune(WangChengwei)

jaune162@126.com

developer

GMT+8

https://github.com/CodeSTD/spring-cxf-annotation-support.git

https://github.com/CodeSTD/spring-cxf-annotation-support.git

</developerConnection>

4.12

4.2.4.RELEASE

3.1.3

junit

junit

${junit.version}

test

org.springframework

spring-context

${spring.version}

org.apache.cxf

cxf-rt-frontend-jaxws

${cxf.version}

org.apache.cxf

cxf-rt-transports-http-jetty

${cxf.version}

org.springframework

spring-test

${spring.version}

log4j

log4j

1.2.14

test

org.slf4j

slf4j-log4j12

1.7.7

test

定义Schema

xmlns:xsd="http://w3.org/2001/XMLSchema"

xmlns:beans="http://springframework.org/schema/beans"

targetNamespace="http://codestd.com/schema/std/ws"

elementFormDefault="qualified"

attributeFormDefault="unqualified">

<![CDATA[ Namespace support for the annotation provided by cxf framework. ]]>

<![CDATA[ http://Name of bean. Insted of id ]]>

<![CDATA[ Pakeage to scan. ]]>

xmlns:xsd="http://w3.org/2001/XMLSchema"

xmlns:beans="http://springframework.org/schema/beans"

targetNamespace="http://codestd.com/schema/std/ws"

elementFormDefault="qualified"

attributeFormDefault="unqualified">

<![CDATA[ Namespace support for the annotation provided by cxf framework. ]]>

<![CDATA[ http://Name of bean. Insted of id ]]>

<![CDATA[ Pakeage to scan. ]]>

关于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}注解实现服务暴露的目的。

*

扩展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://codestd.com/schema/std/ws/stdws-1.0.xsd。即Sechma中定义的targetNamespace+文件名。

在Spring中加入命名空间,并使用标签,如下。这里要用到Spring的注解扫描功能。

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:std="http://codestd.com/schema/std/ws"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans-4.0.xsd

http://codestd.com/schema/std/ws

http://codestd.com/schema/std/ws/stdws-1.0.xsd">

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xmlns:std="http://codestd.com/schema/std/ws"

xsi:schemaLocation="http://springframework.org/schema/beans

http://springframework.org/schema/beans/spring-beans-4.0.xsd

http://codestd.com/schema/std/ws

http://codestd.com/schema/std/ws/stdws-1.0.xsd">

在配置中定义了要扫描的包,不依赖与context的配置。

以上所述是给大家分享的Spring自定义配置Schema可扩展(一),希望对大家有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MyBatis批量添加、修改和删除
下一篇:Java随机密码生成并和邮箱、手机号匹配
相关文章

 发表评论

暂时没有评论,来抢沙发吧~