1.首先IDEA中创建SpringBoot项目
只勾选web
2.导入数据库数据源配置Application.yml
#SpringBoot\u670D\u52A1\u7AEF\u53E3\u914D\u7F6E
server:
port: 6060
#\u6570\u636E\u6E90\u914D\u7F6E
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/springvue?serverTimezone=UTC
username: root
password: 123456
#SpringMVC JSP\u76EE\u5F55\u914D\u7F6E
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
mybatis:
mapper-locations: mapper/*.xml
3.pom文件中相关的依赖
<?xml version="1.0" encoding="UTF-8"?>
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.vue</groupId>
<artifactId>dev_log</artifactId>
<version>1.0-SNAPSHOT</version>
<name>dev_log</name>
<description>dev_log</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--webservice 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version>1.6.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.2.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.启动类Starter
package com.vue;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Starter {
public static void main(String[] args) {
SpringApplication.run(Starter.class, args);
}
}
5.实体类(使用Lombok,如果使用Lombok需要导入相应的依赖包org.projectlombok,下篇主要讲解Lombok)
package com.vue.dto;
import lombok.*;
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@ToString
@EqualsAndHashCode
public class StudentInfo {
private Integer id;
private Integer age;
private String name;
private String province;
private String city;
private String county;
}
6.Mapper接口
package com.vue.mapper;
import com.vue.dto .StudentInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface TestMapper {
StudentInfo findStudentById(@Param("id") String id);
}
7.Mapper.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vue.mapper.TestMapper">
<select id="findStudentById" resultType="com.vue.dto.StudentInfo">
select s.* from t_student s where s.name=#{id}
</select>
</mapper>
8.WebService接口
package com.vue.service;
import com.vue.dto.StudentInfo;
import javax.jws.*;
@WebService(name = "TestService",//暴露服务名称
targetNamespace = "http://impl.service.vue.com/")
public interface TestService {
@WebMethod
@WebResult(name = "String",targetNamespace = "")
StudentInfo findStudentById(@WebParam(name = "id") String id );
}
WebService对发布服务的服务名称定我的服务名称是TestService,targetNamespace 是对发布接口位置的定义,到接口的上一级,我的是http://impl.service.vue.com/ ,@WebMethod该注解用于用@WebService注解的类或接口的方法上,表示要发布的方法
@WebResult 表示返回地结果是以字符串返回
@WebParam 表示传递参数名称,我的是以String类型数据id
9.WebServive接口实现类
package com.vue.service.impl;
import com.vue.dto.StudentInfo;
import com.vue.mapper.TestMapper;
import com.vue.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.jws.WebService;
@WebService(serviceName = "TestService" ,
targetNamespace = "http://impl.service.vue.com/",
endpointInterface = "com.vue.service.TestService")
@Component
public class TestServiceImpl implements TestService {
@Autowired
private TestMapper testMapper;
@Override
public StudentInfo findStudentById(String id) {
StudentInfo studentById = testMapper.findStudentById(id);
return studentById;
}
}
@WebService中serviceName\targetNamespace与接口中用法一致需要对应,endpointInterface 对应实现接口的具体地址
10.接口发布文件
package com.vue.service;
import com.vue.service.impl.TestServiceImpl;
import org.apache.cxf.Bus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.xml.ws.Endpoint;
@Configuration
public class CxfConfig {
@Autowired
private Bus bus;
@Autowired
private TestServiceImpl servicePort;
@Bean
public Endpoint endpoint(){
EndpointImpl endpoint = new EndpointImpl(bus, servicePort);
endpoint.publish("/TestService");
System.out.println("=======================webservice接口发布成功!====================");
return endpoint;
}
}
@Configuration 将类中的对象依赖注入在项目加载时首先加载
11.Sql导入
/*
Navicat Premium Data Transfer
Source Server : mysql
Source Server Type : MySQL
Source Server Version : 50528
Source Host : localhost:3306
Source Schema : springvue
Target Server Type : MySQL
Target Server Version : 50528
File Encoding : 65001
Date: 14/10/2019 17:20:32
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for t_student
-- ----------------------------
DROP TABLE IF EXISTS `t_student`;
CREATE TABLE `t_student` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`age` int(11) NULL DEFAULT NULL,
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`province` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`city` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`county` varchar(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Compact;
-- ----------------------------
-- Records of t_student
-- ----------------------------
INSERT INTO `t_student` VALUES (1, 120, 'Java', '130000', '130100', '130102');
INSERT INTO `t_student` VALUES (2, 20, 'C++', '130000', '130100', '130102');
INSERT INTO `t_student` VALUES (3, 20, 'Android', '130000', '130100', '130102');
INSERT INTO `t_student` VALUES (4, 20, 'Python', '130000', '130100', '130102');
INSERT INTO `t_student` VALUES (5, 20, '刘建', '130000', '130100', '130102');
INSERT INTO `t_student` VALUES (6, 20, '二傻', '130000', '130100', '130102');
INSERT INTO `t_student` VALUES (7, 20, '刘建', '130000', '130100', '130102');
INSERT INTO `t_student` VALUES (8, 20, '庸俗', '130000', '130100', '130102');
SET FOREIGN_KEY_CHECKS = 1;
12.最终创建结构
14.利用SoapUI测试
传入参数右边出现查询结果成功!WebService创建完成