From 92aeb797c2040579a4722ddf8a29ee16e745d6e5 Mon Sep 17 00:00:00 2001
From: YunaiV <>
Date: Thu, 18 Jun 2020 07:46:57 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=A7=8B=20WebService=20=E5=85=A5?=
=?UTF-8?q?=E9=97=A8=E7=A4=BA=E4=BE=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 2 +-
.../lab-15-spring-data-elasticsearch/pom.xml | 1 -
.../lab65/demo/config/CXFConfig.java | 2 +-
.../lab65/demo/controller/DemoController.java | 2 +-
.../src/main/resources/wsdl/user.wsdl | 86 ++++++++---------
.../lab65/userservice/config/CXFConfig.java | 2 +-
.../userservice/service/UserServiceImpl.java | 2 +-
lab-65/lab-65-ws-feign-client/pom.xml | 6 --
.../《芋道 Spring Boot Web Services 入门》.md | 1 +
lab-66/lab-66-spring-data-solr/pom.xml | 49 ++++++++++
.../lab15/springdatasolr/Application.java | 7 ++
.../dataobject/SolrProductDO.java | 93 +++++++++++++++++++
.../repository/ProductRepository.java | 8 ++
.../src/main/resources/application.yml | 6 ++
.../repository/ProductRepositoryTest.java | 60 ++++++++++++
lab-66/pom.xml | 19 ++++
16 files changed, 291 insertions(+), 55 deletions(-)
create mode 100644 lab-65/《芋道 Spring Boot Web Services 入门》.md
create mode 100644 lab-66/lab-66-spring-data-solr/pom.xml
create mode 100644 lab-66/lab-66-spring-data-solr/src/main/java/cn/iocoder/springboot/lab15/springdatasolr/Application.java
create mode 100644 lab-66/lab-66-spring-data-solr/src/main/java/cn/iocoder/springboot/lab15/springdatasolr/dataobject/SolrProductDO.java
create mode 100644 lab-66/lab-66-spring-data-solr/src/main/java/cn/iocoder/springboot/lab15/springdatasolr/repository/ProductRepository.java
create mode 100644 lab-66/lab-66-spring-data-solr/src/main/resources/application.yml
create mode 100644 lab-66/lab-66-spring-data-solr/src/test/java/cn/iocoder/springboot/lab15/springdatasolr/repository/ProductRepositoryTest.java
create mode 100644 lab-66/pom.xml
diff --git a/README.md b/README.md
index b57d66c5..f4af41ad 100644
--- a/README.md
+++ b/README.md
@@ -58,9 +58,9 @@
* [《芋道 Spring Boot Dubbo 入门》](http://www.iocoder.cn/Spring-Boot/Dubbo/?github) 对应 [lab-30](https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-30)
* [《芋道 Spring Boot 声明式调用 Feign 入门》](http://www.iocoder.cn/Spring-Boot/Feign/?github) 对应 [lab-58](https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-58)
* [《芋道 Spring Boot gRPC 入门》](http://www.iocoder.cn/Spring-Boot/gRPC/?github) 对应 [lab-64](https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-64)
+* [《芋道 Spring Boot Web Services 入门》](http://www.iocoder.cn/Spring-Boot/Web-Services/?github) 对应 [lab-65](https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-65)
* [《芋道 Spring Boot SOFARPC 入门》](http://www.iocoder.cn/Spring-Boot/SOFARPC/?github) 对应 [lab-62](https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-62)
* [《芋道 Spring Boot Motan 入门》](http://www.iocoder.cn/Spring-Boot/Motan/?github) 对应 [lab-63](https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-63)
-* 《芋道 Spring Boot gRPC 入门》计划中...
* 《芋道 Spring Boot RSocket 入门》计划中...
## 数据访问
diff --git a/lab-15/lab-15-spring-data-elasticsearch/pom.xml b/lab-15/lab-15-spring-data-elasticsearch/pom.xml
index df7e8f22..fda7103b 100644
--- a/lab-15/lab-15-spring-data-elasticsearch/pom.xml
+++ b/lab-15/lab-15-spring-data-elasticsearch/pom.xml
@@ -25,7 +25,6 @@
spring-boot-starter-test
test
-
diff --git a/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/config/CXFConfig.java b/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/config/CXFConfig.java
index 997c73b4..08defc3c 100644
--- a/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/config/CXFConfig.java
+++ b/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/config/CXFConfig.java
@@ -1,6 +1,6 @@
package cn.iocoder.springboot.lab65.demo.config;
-import https.github_com.yunaiv.springboot_labs.tree.master.lab_65.lab_65_spring_ws_demo.UserService;
+import https.github_com.yunaiv.springboot_labs.tree.master.lab_65.lab_65_cxf_ws_demo.UserService;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
diff --git a/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/controller/DemoController.java b/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/controller/DemoController.java
index 52ce4bc6..a47fa99f 100644
--- a/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/controller/DemoController.java
+++ b/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-application/src/main/java/cn/iocoder/springboot/lab65/demo/controller/DemoController.java
@@ -1,6 +1,6 @@
package cn.iocoder.springboot.lab65.demo.controller;
-import https.github_com.yunaiv.springboot_labs.tree.master.lab_65.lab_65_spring_ws_demo.*;
+import https.github_com.yunaiv.springboot_labs.tree.master.lab_65.lab_65_cxf_ws_demo.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-application/src/main/resources/wsdl/user.wsdl b/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-application/src/main/resources/wsdl/user.wsdl
index 3baac207..f6ff60d5 100644
--- a/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-application/src/main/resources/wsdl/user.wsdl
+++ b/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-application/src/main/resources/wsdl/user.wsdl
@@ -1,10 +1,31 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -27,62 +48,32 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
@@ -92,10 +83,19 @@
+
+
+
+
+
+
+
+
+
-
+
diff --git a/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/config/CXFConfig.java b/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/config/CXFConfig.java
index e8aac5fd..2ad37024 100644
--- a/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/config/CXFConfig.java
+++ b/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/config/CXFConfig.java
@@ -11,7 +11,7 @@ import javax.xml.ws.Endpoint;
@Configuration
public class CXFConfig {
- public static final String NAMESPACE_URI = "https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-65/lab-65-spring-ws-demo";
+ public static final String NAMESPACE_URI = "https://github.com/YunaiV/SpringBoot-Labs/tree/master/lab-65/lab-65-cxf-ws-demo";
@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
diff --git a/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/service/UserServiceImpl.java b/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/service/UserServiceImpl.java
index dd67c0d2..e7510be5 100644
--- a/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/service/UserServiceImpl.java
+++ b/lab-65/lab-65-cxf-ws-demo/lab-65-cxf-ws-demo-user-service/src/main/java/cn/iocoder/springboot/lab65/userservice/service/UserServiceImpl.java
@@ -12,7 +12,7 @@ import javax.jws.WebService;
@Service
@WebService(
serviceName = "userService", // 服务名称
- targetNamespace = CXFConfig.NAMESPACE_URI // WSDL 命名空间
+ targetNamespace = CXFConfig.NAMESPACE_URI // Namespace 命名空间
)
public class UserServiceImpl implements UserService {
diff --git a/lab-65/lab-65-ws-feign-client/pom.xml b/lab-65/lab-65-ws-feign-client/pom.xml
index 26206e2b..2fdeedb5 100644
--- a/lab-65/lab-65-ws-feign-client/pom.xml
+++ b/lab-65/lab-65-ws-feign-client/pom.xml
@@ -39,12 +39,6 @@
spring-boot-starter-web
-
-
- io.github.openfeign
- feign-core
- 11.0
-
io.github.openfeign
diff --git a/lab-65/《芋道 Spring Boot Web Services 入门》.md b/lab-65/《芋道 Spring Boot Web Services 入门》.md
new file mode 100644
index 00000000..47e13e1c
--- /dev/null
+++ b/lab-65/《芋道 Spring Boot Web Services 入门》.md
@@ -0,0 +1 @@
+
diff --git a/lab-66/lab-66-spring-data-solr/pom.xml b/lab-66/lab-66-spring-data-solr/pom.xml
new file mode 100644
index 00000000..30e851cf
--- /dev/null
+++ b/lab-66/lab-66-spring-data-solr/pom.xml
@@ -0,0 +1,49 @@
+
+
+
+ lab-66
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ lab-66-spring-data-solr
+
+
+
+ 2.2.4.RELEASE
+
+ 1.8
+ 1.8
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ ${spring.boot.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-solr
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
diff --git a/lab-66/lab-66-spring-data-solr/src/main/java/cn/iocoder/springboot/lab15/springdatasolr/Application.java b/lab-66/lab-66-spring-data-solr/src/main/java/cn/iocoder/springboot/lab15/springdatasolr/Application.java
new file mode 100644
index 00000000..fcb13bb3
--- /dev/null
+++ b/lab-66/lab-66-spring-data-solr/src/main/java/cn/iocoder/springboot/lab15/springdatasolr/Application.java
@@ -0,0 +1,7 @@
+package cn.iocoder.springboot.lab15.springdatasolr;
+
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application {
+}
diff --git a/lab-66/lab-66-spring-data-solr/src/main/java/cn/iocoder/springboot/lab15/springdatasolr/dataobject/SolrProductDO.java b/lab-66/lab-66-spring-data-solr/src/main/java/cn/iocoder/springboot/lab15/springdatasolr/dataobject/SolrProductDO.java
new file mode 100644
index 00000000..e7f87583
--- /dev/null
+++ b/lab-66/lab-66-spring-data-solr/src/main/java/cn/iocoder/springboot/lab15/springdatasolr/dataobject/SolrProductDO.java
@@ -0,0 +1,93 @@
+package cn.iocoder.springboot.lab15.springdatasolr.dataobject;
+
+import org.springframework.data.annotation.Id;
+import org.springframework.data.solr.core.mapping.Indexed;
+import org.springframework.data.solr.core.mapping.SolrDocument;
+
+@SolrDocument(collection = "new_core")
+public class SolrProductDO {
+
+ /**
+ * ID 主键
+ */
+ @Id
+ private Integer id;
+
+ /**
+ * SPU 名字
+ */
+ @Indexed(value = "name")
+ private String name;
+ /**
+ * 描述
+ */
+ @Indexed(value = "description")
+ private String description;
+ /**
+ * 分类编号
+ */
+ @Indexed(value = "cid")
+ private Integer cid;
+ /**
+ * 分类名
+ */
+ @Indexed(value = "category_name")
+ private String categoryName;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public SolrProductDO setId(Integer id) {
+ this.id = id;
+ return this;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public SolrProductDO setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public SolrProductDO setDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+ public Integer getCid() {
+ return cid;
+ }
+
+ public SolrProductDO setCid(Integer cid) {
+ this.cid = cid;
+ return this;
+ }
+
+ public String getCategoryName() {
+ return categoryName;
+ }
+
+ public SolrProductDO setCategoryName(String categoryName) {
+ this.categoryName = categoryName;
+ return this;
+ }
+
+ @Override
+ public String toString() {
+ return "SolrProductDO{" +
+ "id=" + id +
+ ", name='" + name + '\'' +
+ ", description='" + description + '\'' +
+ ", cid=" + cid +
+ ", categoryName='" + categoryName + '\'' +
+ '}';
+ }
+
+}
diff --git a/lab-66/lab-66-spring-data-solr/src/main/java/cn/iocoder/springboot/lab15/springdatasolr/repository/ProductRepository.java b/lab-66/lab-66-spring-data-solr/src/main/java/cn/iocoder/springboot/lab15/springdatasolr/repository/ProductRepository.java
new file mode 100644
index 00000000..0dd8f9ed
--- /dev/null
+++ b/lab-66/lab-66-spring-data-solr/src/main/java/cn/iocoder/springboot/lab15/springdatasolr/repository/ProductRepository.java
@@ -0,0 +1,8 @@
+package cn.iocoder.springboot.lab15.springdatasolr.repository;
+
+import cn.iocoder.springboot.lab15.springdatasolr.dataobject.SolrProductDO;
+import org.springframework.data.solr.repository.SolrCrudRepository;
+
+public interface ProductRepository extends SolrCrudRepository {
+
+}
diff --git a/lab-66/lab-66-spring-data-solr/src/main/resources/application.yml b/lab-66/lab-66-spring-data-solr/src/main/resources/application.yml
new file mode 100644
index 00000000..afc2af0c
--- /dev/null
+++ b/lab-66/lab-66-spring-data-solr/src/main/resources/application.yml
@@ -0,0 +1,6 @@
+spring:
+ data:
+ solr:
+ host: 'http://127.0.0.1:8983/solr'
+ repositories:
+ enabled: true
diff --git a/lab-66/lab-66-spring-data-solr/src/test/java/cn/iocoder/springboot/lab15/springdatasolr/repository/ProductRepositoryTest.java b/lab-66/lab-66-spring-data-solr/src/test/java/cn/iocoder/springboot/lab15/springdatasolr/repository/ProductRepositoryTest.java
new file mode 100644
index 00000000..c41d3dd5
--- /dev/null
+++ b/lab-66/lab-66-spring-data-solr/src/test/java/cn/iocoder/springboot/lab15/springdatasolr/repository/ProductRepositoryTest.java
@@ -0,0 +1,60 @@
+package cn.iocoder.springboot.lab15.springdatasolr.repository;
+
+import cn.iocoder.springboot.lab15.springdatasolr.Application;
+import cn.iocoder.springboot.lab15.springdatasolr.dataobject.SolrProductDO;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.Arrays;
+import java.util.Optional;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = Application.class)
+public class ProductRepositoryTest {
+
+ @Autowired
+ private ProductRepository productRepository;
+
+ @Test // 插入一条记录
+ public void testInsert() {
+ SolrProductDO product = new SolrProductDO();
+ product.setId(1); // 一般 Solr 的 ID 编号,使用 DB 数据对应的编号。这里,先写死
+ product.setName("芋道源码");
+ product.setDescription("我只是一个描述");
+ product.setCid(2);
+ product.setCategoryName("技术");
+ productRepository.save(product);
+ }
+
+ // 这里要注意,如果使用 save 方法来更新的话,必须是全量字段,否则其它字段会被覆盖。
+ // 所以,这里仅仅是作为一个示例。
+ @Test // 更新一条记录
+ public void testUpdate() {
+ SolrProductDO product = new SolrProductDO();
+ product.setId(1);
+ product.setCid(2);
+ product.setCategoryName("技术-Java");
+ productRepository.save(product);
+ }
+
+ @Test // 根据 ID 编号,删除一条记录
+ public void testDelete() {
+ productRepository.deleteById(1);
+ }
+
+ @Test // 根据 ID 编号,查询一条记录
+ public void testSelectById() {
+ Optional userDO = productRepository.findById(1);
+ System.out.println(userDO.isPresent());
+ }
+
+ @Test // 根据 ID 编号数组,查询多条记录
+ public void testSelectByIds() {
+ Iterable users = productRepository.findAllById(Arrays.asList(1, 4));
+ users.forEach(System.out::println);
+ }
+
+}
diff --git a/lab-66/pom.xml b/lab-66/pom.xml
new file mode 100644
index 00000000..70f574cc
--- /dev/null
+++ b/lab-66/pom.xml
@@ -0,0 +1,19 @@
+
+
+
+ labs-parent
+ cn.iocoder.springboot.labs
+ 1.0-SNAPSHOT
+
+ 4.0.0
+
+ lab-66
+ pom
+
+ lab-66-spring-data-solr
+
+
+
+