- 浏览: 513957 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (563)
- 工作经验 (12)
- 数据库 (13)
- Servlet (10)
- Struts2 (1)
- Spring (25)
- Eclipse (5)
- Hibernate (5)
- Eclips (8)
- HTTP (7)
- J2EE (21)
- EHcache (1)
- HTML (11)
- 工具插件使用 (20)
- JPA (2)
- 杂谈 (17)
- 数据结构与算法 (3)
- Cloud Foundry (1)
- 安全 (10)
- J2SE (57)
- SQL (9)
- DB2 (6)
- 操作系统 (2)
- 设计模式 (1)
- 版本代码管理工具 (13)
- 面试 (10)
- 代码规范 (3)
- Tomcat (12)
- Ajax (5)
- 异常总结 (11)
- REST (2)
- 云 (2)
- RMI (3)
- SOA (1)
- Oracle (12)
- Javascript (20)
- jquery (7)
- JSP自定义标签 (2)
- 电脑知识 (5)
- 浏览器 (3)
- 正则表达式 (3)
- 建站解决问题 (38)
- 数据库设计 (3)
- git (16)
- log4j (1)
- 每天100行代码 (1)
- socket (0)
- java设计模式 耿祥义著 (0)
- Maven (14)
- ibatis (7)
- bug整理 (2)
- 邮件服务器 (8)
- Linux (32)
- TCP/IP协议 (5)
- java多线程并发 (7)
- IO (1)
- 网页小工具 (2)
- Flash (2)
- 爬虫 (1)
- CSS (6)
- JSON (1)
- 触发器 (1)
- java并发 (12)
- ajaxfileupload (1)
- js验证 (1)
- discuz (2)
- Mysql (14)
- jvm (2)
- MyBatis (10)
- POI (1)
- 金融 (1)
- VMWare (0)
- Redis (4)
- 性能测试 (2)
- PostgreSQL (1)
- 分布式 (2)
- Easy UI (1)
- C (1)
- 加密 (6)
- Node.js (1)
- 事务 (2)
- zookeeper (3)
- Spring MVC (2)
- 动态代理 (3)
- 日志 (2)
- 微信公众号 (2)
- IDEA (1)
- 保存他人遇到的问题 (1)
- webservice (11)
- memcached (3)
- nginx (6)
- 抓包 (1)
- java规范 (1)
- dubbo (3)
- xwiki (1)
- quartz (2)
- 数字证书 (1)
- spi (1)
- 学习编程 (6)
- dom4j (1)
- 计算机系统知识 (2)
- JAVA系统知识 (1)
- rpcf (1)
- 单元测试 (2)
- php (1)
- 内存泄漏cpu100%outofmemery (5)
- zero_copy (2)
- mac (3)
- hive (3)
- 分享资料整理 (0)
- 计算机网络 (1)
- 编写操作系统 (1)
- springboot (1)
最新评论
-
masuweng:
亦论一次OutOfMemoryError的定位与解错 -
变脸小伙:
引用[color=red][/color]百度推广中运用的技术 ...
Spring 3 mvc中返回pdf,json,xml等不同的view -
Vanillva:
不同之处是什么??
Mybatis中的like查询 -
thrillerzw:
转了。做个有理想的程序员
有理想的程序员必须知道的15件事 -
liujunhui1988:
觉得很有概括力
15 个必须知道的 Java 面试问题(2年工作经验)
源:http://kyfxbl.iteye.com/blog/1481330
评:
这次开发web service对接,用的是cxf2.0.13
本来只用了cxf的框架,没有使用cxf提供的工具,比如wsdl2java等
这种方式比较简单,主要是根据得到的wsdl文件,手工写接口类以及model类。详细说明见另外一篇博客:http://kyfxbl.iteye.com/blog/1432952
不过发现这种方式生成的wsdl,和原始的wsdl文件有些不一样,担心真正联调的时候跑不通,所以准备了另一套替代方案,就是用wsdl2java工具,来生成代码,保证wsdl完全一致
1、首先用wsdl2java命令,生成所需的java文件,当然前提是已经得到了wsdl文件
wsdl2java -p com.huawei.wfm.czekh.webservice.remedy -d ../../src/remedy -all fileName.wsdl
用上面这个命令,就可以根据wsdl文件,生成所需的所有java文件,参数说明如下:
-p 指定生成java文件的package name
-d 生成java文件的存放路径
-all 生成客户端和服务端代码,这里还可以用-client生成客户端,用-server生成服务端,不过实际上区别不大,只要用-all就可以了
最后一个参数就是目标wsdl文件
2、查看生成的文件列表,可以看到有以下文件:
[点击查看原始大小图片]
大部分都是model类,可以不管。以下文件是比较特殊的:
ObjectFactory.java
package-info.java
这2个文件我也不知道是干嘛的,不过反正是不能删的
以_Client结尾的那个文件,是一个客户端,没有用,可以删除
以_Server结尾的那个文件,是启动服务端(貌似是内置的jetty),没有用,可以删除
以Service结尾的那个文件,不但没有用,还要坏事,因为其中有以下代码:
Java代码 收藏代码
@WebServiceClient(name = "CIP-B2B_ServiceAssuranceWorkForceClientManagementService", wsdlLocation = "file:CIP-B2B_ServiceAssuranceWorkForceClientManagement.wsdl", targetNamespace = "http://cz.o2.com/systems/integrationinfrastructure/CIP-B2B/CIP-B2B_ServiceAssuranceWorkForceClientManagement/1.0")
里面有一个"file:CIP-B2B_ServiceAssuranceWorkForceClientManagement.wsdl",因为这些类是根据一个本地的wsdl文件生成的,但是实际部署的时候一般不会放这个文件,所以在加载cxf配置的时候,是会出错的
实际上试验发现,这个文件可以直接删掉
以PortType结尾的文件,很关键,是接口类
以PortTypeImpl结尾的文件,是接口类的实现类,其中也有一行注解:
Java代码 收藏代码
@javax.jws.WebService(
serviceName = "CIP-B2B_ServiceAssuranceWorkForceClientManagementService",
portName = "CIP-B2B_ServiceAssuranceWorkForceClientManagementPort",
targetNamespace = "http://cz.o2.com/systems/integrationinfrastructure/CIP-B2B/CIP-B2B_ServiceAssuranceWorkForceClientManagement/1.0",
wsdlLocation = "file:CIP-B2B_ServiceAssuranceWorkForceClientManagement.wsdl",
endpointInterface = "com.huawei.wfm.czekh.webservice.remedy.CIPB2BServiceAssuranceWorkForceClientManagementPortType")
要把这里的
Java代码 收藏代码
wsdlLocation = "file:CIP-B2B_ServiceAssuranceWorkForceClientManagement.wsdl",
删除
所以在用wsdl2java命令生成java类之后,只需要把XXXService.java、XXX_Client.java、XXX_Server.java删除,把XXXPortTypeImpl.java改一下,就能用了
然后如果是要做客户端的话,就把除了XXXPortTypeImpl.java以外的所有文件拷贝到工程里;如果是做服务端的话,就把所有文件拷贝到工程里,然后根据实际情况修改XXXPortTypeImpl.java就可以了
3、最后是cxf的配置文件,这里和http://kyfxbl.iteye.com/blog/1432952提到的方式是一样的,没有区别
首先是服务端:
Xml代码 收藏代码
<?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:context="http://www.springframework.org/schema/context"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<context:component-scan base-package="com.huawei.wfm.czekh" />
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxws:endpoint id="remedy" implementor="#MyWebserviceServer"
address="/RemedyWebService" />
</beans>
Java代码 收藏代码
@Component("MyWebserviceServer")
@WebService(serviceName = "CIP-B2B_ServiceAssuranceWorkForceClientManagementService", portName = "CIP-B2B_ServiceAssuranceWorkForceClientManagementPort", targetNamespace = "http://cz.o2.com/systems/integrationinfrastructure/CIP-B2B/CIP-B2B_ServiceAssuranceWorkForceClientManagement/1.0", endpointInterface = "com.huawei.wfm.czekh.webservice.remedy.CIPB2BServiceAssuranceWorkForceClientManagementPortType")
public class CIPB2BServiceAssuranceWorkForceClientManagementPortTypeImpl
implements CIPB2BServiceAssuranceWorkForceClientManagementPortType {
@Autowired
private Test test;
// 省略无关方法
public AcknowledgeResponse acknowledge(
AcknowledgeRequest body) {
test.sayHi("somebody");
AcknowledgeResponseBody responseBody = new AcknowledgeResponseBody();
responseBody.setStatus(true);
responseBody.setErrorDescription("wcnm");
AcknowledgeResponse result = new AcknowledgeResponse();
result.setResponseBody(responseBody);
return result;
}
}
可以看到,配置方式没有变化,也可以用spring进行依赖注入
然后是客户端:
Xml代码 收藏代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:webservice_address.properties</value>
</list>
</property>
</bean>
<jaxws:client id="client"
serviceClass="com.huawei.wfm.remedy.CIPB2BServiceAssuranceWorkForceClientManagementPortType"
address="${remedy_address}" />
</beans>
Java代码 收藏代码
public class Main {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"cxf.xml");
CIPB2BServiceAssuranceWorkForceClientManagementPortType client = (CIPB2BServiceAssuranceWorkForceClientManagementPortType) context
.getBean("client");
AcknowledgeRequestBody body = new AcknowledgeRequestBody();
body.setCustSysId("123456");
AcknowledgeRequest request = new AcknowledgeRequest();
request.setRequestBody(body);
AcknowledgeResponse response = client.acknowledge(request);
String desc = response.getResponseBody().getErrorDescription();
System.out.println(desc);
}
}
客户端的配置也是一样的。有一点要注意,好像只能通过getBean("client")拿到实例化的bean,通过@Autowired可能是搞不定的
4、自动生成的代码,当然是冗余很多的。有时间的话,可以手工进行清理
评:
这次开发web service对接,用的是cxf2.0.13
本来只用了cxf的框架,没有使用cxf提供的工具,比如wsdl2java等
这种方式比较简单,主要是根据得到的wsdl文件,手工写接口类以及model类。详细说明见另外一篇博客:http://kyfxbl.iteye.com/blog/1432952
不过发现这种方式生成的wsdl,和原始的wsdl文件有些不一样,担心真正联调的时候跑不通,所以准备了另一套替代方案,就是用wsdl2java工具,来生成代码,保证wsdl完全一致
1、首先用wsdl2java命令,生成所需的java文件,当然前提是已经得到了wsdl文件
wsdl2java -p com.huawei.wfm.czekh.webservice.remedy -d ../../src/remedy -all fileName.wsdl
用上面这个命令,就可以根据wsdl文件,生成所需的所有java文件,参数说明如下:
-p 指定生成java文件的package name
-d 生成java文件的存放路径
-all 生成客户端和服务端代码,这里还可以用-client生成客户端,用-server生成服务端,不过实际上区别不大,只要用-all就可以了
最后一个参数就是目标wsdl文件
2、查看生成的文件列表,可以看到有以下文件:
[点击查看原始大小图片]
大部分都是model类,可以不管。以下文件是比较特殊的:
ObjectFactory.java
package-info.java
这2个文件我也不知道是干嘛的,不过反正是不能删的
以_Client结尾的那个文件,是一个客户端,没有用,可以删除
以_Server结尾的那个文件,是启动服务端(貌似是内置的jetty),没有用,可以删除
以Service结尾的那个文件,不但没有用,还要坏事,因为其中有以下代码:
Java代码 收藏代码
@WebServiceClient(name = "CIP-B2B_ServiceAssuranceWorkForceClientManagementService", wsdlLocation = "file:CIP-B2B_ServiceAssuranceWorkForceClientManagement.wsdl", targetNamespace = "http://cz.o2.com/systems/integrationinfrastructure/CIP-B2B/CIP-B2B_ServiceAssuranceWorkForceClientManagement/1.0")
里面有一个"file:CIP-B2B_ServiceAssuranceWorkForceClientManagement.wsdl",因为这些类是根据一个本地的wsdl文件生成的,但是实际部署的时候一般不会放这个文件,所以在加载cxf配置的时候,是会出错的
实际上试验发现,这个文件可以直接删掉
以PortType结尾的文件,很关键,是接口类
以PortTypeImpl结尾的文件,是接口类的实现类,其中也有一行注解:
Java代码 收藏代码
@javax.jws.WebService(
serviceName = "CIP-B2B_ServiceAssuranceWorkForceClientManagementService",
portName = "CIP-B2B_ServiceAssuranceWorkForceClientManagementPort",
targetNamespace = "http://cz.o2.com/systems/integrationinfrastructure/CIP-B2B/CIP-B2B_ServiceAssuranceWorkForceClientManagement/1.0",
wsdlLocation = "file:CIP-B2B_ServiceAssuranceWorkForceClientManagement.wsdl",
endpointInterface = "com.huawei.wfm.czekh.webservice.remedy.CIPB2BServiceAssuranceWorkForceClientManagementPortType")
要把这里的
Java代码 收藏代码
wsdlLocation = "file:CIP-B2B_ServiceAssuranceWorkForceClientManagement.wsdl",
删除
所以在用wsdl2java命令生成java类之后,只需要把XXXService.java、XXX_Client.java、XXX_Server.java删除,把XXXPortTypeImpl.java改一下,就能用了
然后如果是要做客户端的话,就把除了XXXPortTypeImpl.java以外的所有文件拷贝到工程里;如果是做服务端的话,就把所有文件拷贝到工程里,然后根据实际情况修改XXXPortTypeImpl.java就可以了
3、最后是cxf的配置文件,这里和http://kyfxbl.iteye.com/blog/1432952提到的方式是一样的,没有区别
首先是服务端:
Xml代码 收藏代码
<?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:context="http://www.springframework.org/schema/context"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<context:component-scan base-package="com.huawei.wfm.czekh" />
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxws:endpoint id="remedy" implementor="#MyWebserviceServer"
address="/RemedyWebService" />
</beans>
Java代码 收藏代码
@Component("MyWebserviceServer")
@WebService(serviceName = "CIP-B2B_ServiceAssuranceWorkForceClientManagementService", portName = "CIP-B2B_ServiceAssuranceWorkForceClientManagementPort", targetNamespace = "http://cz.o2.com/systems/integrationinfrastructure/CIP-B2B/CIP-B2B_ServiceAssuranceWorkForceClientManagement/1.0", endpointInterface = "com.huawei.wfm.czekh.webservice.remedy.CIPB2BServiceAssuranceWorkForceClientManagementPortType")
public class CIPB2BServiceAssuranceWorkForceClientManagementPortTypeImpl
implements CIPB2BServiceAssuranceWorkForceClientManagementPortType {
@Autowired
private Test test;
// 省略无关方法
public AcknowledgeResponse acknowledge(
AcknowledgeRequest body) {
test.sayHi("somebody");
AcknowledgeResponseBody responseBody = new AcknowledgeResponseBody();
responseBody.setStatus(true);
responseBody.setErrorDescription("wcnm");
AcknowledgeResponse result = new AcknowledgeResponse();
result.setResponseBody(responseBody);
return result;
}
}
可以看到,配置方式没有变化,也可以用spring进行依赖注入
然后是客户端:
Xml代码 收藏代码
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:webservice_address.properties</value>
</list>
</property>
</bean>
<jaxws:client id="client"
serviceClass="com.huawei.wfm.remedy.CIPB2BServiceAssuranceWorkForceClientManagementPortType"
address="${remedy_address}" />
</beans>
Java代码 收藏代码
public class Main {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"cxf.xml");
CIPB2BServiceAssuranceWorkForceClientManagementPortType client = (CIPB2BServiceAssuranceWorkForceClientManagementPortType) context
.getBean("client");
AcknowledgeRequestBody body = new AcknowledgeRequestBody();
body.setCustSysId("123456");
AcknowledgeRequest request = new AcknowledgeRequest();
request.setRequestBody(body);
AcknowledgeResponse response = client.acknowledge(request);
String desc = response.getResponseBody().getErrorDescription();
System.out.println(desc);
}
}
客户端的配置也是一样的。有一点要注意,好像只能通过getBean("client")拿到实例化的bean,通过@Autowired可能是搞不定的
4、自动生成的代码,当然是冗余很多的。有时间的话,可以手工进行清理
发表评论
-
Axis1.x WebService开发指南—目录索引
2015-11-30 15:54 641源:http://www.cnblogs.com/hoojo/ ... -
CXF WebService整合Spring
2015-11-30 15:50 503源:http://www.cnblogs.com/hoojo/ ... -
几种常用的webservice客户端和spring集成的方法
2015-11-30 15:47 561源:http://my.oschina.net/zimingf ... -
如何使用webservice
2015-04-09 15:47 5251:到http://cxf.apache.org/downlo ... -
webservice例子
2015-03-13 15:58 4051:到http://cxf.apache.org/downlo ... -
Java RMI与RPC,JMS的比较
2014-12-09 21:38 645源:http://blog.csdn.net/keda8997 ... -
cxf集成spring,精简版
2014-12-08 17:52 499源:http://kyfxbl.iteye.com/blog/ ... -
用cxf发布和调用web service
2014-12-08 17:48 412源:http://kyfxbl.iteye.com/b ... -
cxf和spring mvc的集成
2014-12-08 17:46 741源:http://kyfxbl.iteye.com/blog/ ... -
webservice 客户端生成命令
2014-10-21 17:48 372wsdl2java -frontend jaxws21 -c ...
相关推荐
本实例将深入探讨如何使用CXF来开发Web Service。 首先,让我们了解CXF的核心功能。CXF支持两种主要的Web Service规范:SOAP(简单对象访问协议)和REST(代表性状态转移)。SOAP是基于WSDL(Web服务描述语言)的,...
"Apache CXF开发Web Service - 开发Web Service之Kick Start"的主题意味着我们将深入探讨如何快速入门使用CXF进行Web服务开发。 首先,我们来看一下CXF的主要功能。CXF支持多种Web服务规范,如SOAP、RESTful(基于...
通过深入研究提供的资源,开发者不仅可以学习到Web服务的基本概念,还能掌握CXF框架的高级功能,从而提升在企业级应用开发中的能力。无论是新手还是有经验的开发者,都能从这个主题中获益良多。
Ⅰ)开发web service业务接口,该接口用@WebService修饰; Ⅱ)开发web service业务接口的实现类,也要用@WebService修饰; Ⅲ)使用EndPoint类的静态方法publish()来发布web service。 2、客户端 Ⅰ)调用CXF...
这个压缩包"apache-cxf-2.4.0(Web Service代码生成)"显然包含了关于如何使用Apache CXF 2.4.0版本来生成Web服务代码的相关资料。在这个版本中,CXF提供了丰富的功能,包括SOAP、RESTful服务的支持,以及WSDL到Java...
**实战Web Service —— 使用Apache CXF开发Web服务的教程** Apache CXF是一个开源的Java框架,用于构建和部署Web服务。本教程将带你深入理解如何利用CXF来开发高效、灵活的Web服务。我们将从基础概念开始,逐步...
本篇文章将深入探讨如何使用Apache CXF生成Web服务客户端。 首先,我们需要了解CXF的核心功能。CXF提供了一套工具和服务,支持多种Web服务标准,如SOAP、RESTful、WSDL(Web Service Description Language)和WS-I...
本篇文章将深入探讨如何使用CXF作为客户端框架,通过MyEclipse集成开发环境自动生成Web服务客户端。 首先,我们要理解CXF的基本概念。CXF,全称“CXF:Confusing eXtensible Framework”,它提供了多种方式来创建...
3. **WSDL(Web服务描述语言)**:如何使用WSDL定义服务接口,并通过CXF生成服务实现。 4. **数据绑定**:了解XML到Java对象的映射,如JAXB和Aegis绑定。 5. **拦截器和终结点**:利用拦截器增强服务功能,定制化...
在本项目中,我们主要探讨如何使用SpringBoot、MyBatis和CXF框架来开发Web Service接口,并且数据库选用MySQL。这是一个完整的后端服务开发流程,涵盖了从数据存储到服务暴露的所有关键步骤。 首先,SpringBoot是...
Spring MVC、CXF和Web Service是企业级Java应用开发中的三个关键组件,它们分别在不同的层面上服务于构建高效、可扩展的Web应用程序。 Spring MVC,全称Spring Model View Controller,是Spring框架的一部分,专为...
- **WSDL(Web Service Definition Language)**:在CXF中,你可以基于WSDL文件生成服务端代码,也可以先编写Java接口和服务实现,然后由CXF自动生成WSDL。WSDL定义了服务的接口、消息格式和绑定方式。 - **JAX-WS...
在IT行业中,Spring Boot是一个非常流行的...4. 使用CXF生成客户端代码。 5. 在客户端应用中创建代理对象并调用服务。 通过这种方式,你可以构建安全、可靠的Web服务,并在Spring Boot环境中轻松地进行客户端调用。
【标题】"CXF 整合 Spring 搭建Web Service"的知识点解析 在Web服务领域,CXF(CXF:曹操,CXF=Confusing eXtreme Flexibility)是一个广泛使用的开源框架,它提供了创建、部署和管理SOAP和RESTful Web服务的能力。...
本文将深入探讨Apache CXF的Code-First开发模式,以及如何使用此框架来创建和理解Web服务。 首先,我们需要了解CXF的Code-First工作流程。在Code-First中,我们从编写Java类开始,这些类定义了服务的业务逻辑。CXF...
在Java开发领域,Web服务(Web Service)是一种用于应用程序之间进行通信的标准协议,它使得不同系统之间能够交换数据。在JDK 5环境下,Apache CXF是一个常用的框架,用于开发和消费Web服务,无论是作为服务提供者...
在"Apache CXF开发Web Service理解CXF Frontends之Contract-First"的主题中,我们将深入探讨以下几个关键知识点: 1. **Web服务基础**:Web服务是一种通过网络进行通信的应用程序接口,使用标准协议如SOAP(简单...
Spring是一个全面的企业级应用开发框架,提供了依赖注入(DI)和面向切面编程(AOP)等核心特性。Spring还有一套丰富的模块,如Spring MVC用于构建Web应用程序,Spring JDBC和Spring JPA用于数据库操作,以及Spring ...