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 + + + +