14.springboot+mybatis+dubbo+zookeeper全套工程

1.构建普通maven工程

New→Project→Maven

 

 

2.编写父级工程名

 

 

 3.maven资源的存储位置

 

4.核对工程名和模块名称第一次需要时同一个

 

 

5.完成项目后,需要将工程下的src文件夹删掉,然后选择wf-0302工程构建module了模块

 

 

 6.因为module里存放的时pojo和service,因此我们只需要构建普通工程即可

 

 

 

7.编写公共模块名称

 

 

 

 

 

 

 

 

 

 

 

8. 构建提供者provider模块,该模块时springboot的工程,选中wf-0302,new→module

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9.和构建提供者provider一样的方式去构建调用者consumer,构建结束后的项目结构如下

 

 

 10.在common工程中的java文件夹下的com.bcsp.pojo包下构建实体类Dept,该类必须进行实例化

 

 

 

文件按内容如下:

 1 package com.bcsp.pojo;
 2 
 3 import java.io.Serializable;
 4 /*
 5  * 微服工程必须实现序列化
 6  */
 7 public class Dept implements Serializable {
 8     private Integer deptno;
 9     private String dname;
10     private String loc;
11 
12     public Dept() {
13     }
14 
15     public Dept(Integer deptno, String dname, String loc) {
16         this.deptno = deptno;
17         this.dname = dname;
18         this.loc = loc;
19     }
20 
21     public Integer getDeptno() {
22         return deptno;
23     }
24 
25     public void setDeptno(Integer deptno) {
26         this.deptno = deptno;
27     }
28 
29     public String getDname() {
30         return dname;
31     }
32 
33     public void setDname(String dname) {
34         this.dname = dname;
35     }
36 
37     public String getLoc() {
38         return loc;
39     }
40 
41     public void setLoc(String loc) {
42         this.loc = loc;
43     }
44 
45     @Override
46     public String toString() {
47         return "Dept{" +
48                 "deptno=" + deptno +
49                 ", dname='" + dname + '\'' +
50                 ", loc='" + loc + '\'' +
51                 '}';
52     }
53 }
Dept.java

 

11.在common工程中的java文件夹下的com.bcsp.service包下构建接口DeptService,内容如下

package com.bcsp.service;
import com.bcsp.pojo.Dept;
import java.util.List;
public interface DeptService {
    List<Dept> findDept(Dept dept);
    Integer addDept(Dept dept);
    Integer updateDept(Dept dept);
    Integer deleteDept(Dept dept);
}
DeptSerivce.java

 

12.配置provider工程的pom文件,替换掉原来的<dependencies>节点的内容,替换后的pom文件内容如下

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4     <modelVersion>4.0.0</modelVersion>
  5     <parent>
  6         <groupId>org.springframework.boot</groupId>
  7         <artifactId>spring-boot-starter-parent</artifactId>
  8         <version>2.4.3</version>
  9         <relativePath/> <!-- lookup parent from repository -->
 10     </parent>
 11     <groupId>com.bcsp</groupId>
 12     <artifactId>provider</artifactId>
 13     <version>0.0.1-SNAPSHOT</version>
 14     <name>provider</name>
 15     <description>Demo project for Spring Boot</description>
 16     <properties>
 17         <java.version>1.8</java.version>
 18     </properties>
 19     <dependencies>
 20         <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
 21         <dependency>
 22             <groupId>com.github.pagehelper</groupId>
 23             <artifactId>pagehelper-spring-boot-starter</artifactId>
 24             <version>1.2.3</version>
 25         </dependency>
 26 
 27         <!--引入公共模块项目-->
 28         <dependency>
 29             <groupId>com.bcsp</groupId>
 30             <artifactId>common</artifactId>
 31             <version>1.0-SNAPSHOT</version>
 32         </dependency>
 33         <!--这是微服dubbo的核心服务包-->
 34         <dependency>
 35             <groupId>com.alibaba</groupId>
 36             <artifactId>dubbo</artifactId>
 37             <version>2.5.3</version>
 38             <exclusions>
 39                 <exclusion>
 40                     <artifactId>spring</artifactId>
 41                     <groupId>org.springframework</groupId>
 42                 </exclusion>
 43             </exclusions>
 44         </dependency>
 45         <!--这是zookeeper的服务操作包 但主要这里的版本最好和你的zookeeper版本一致-->
 46         <dependency>
 47             <groupId>org.apache.zookeeper</groupId>
 48             <artifactId>zookeeper</artifactId>
 49             <version>3.4.6</version>
 50             <exclusions>
 51                 <exclusion>
 52                     <artifactId>slf4j-log4j12</artifactId>
 53                     <groupId>org.slf4j</groupId>
 54                 </exclusion>
 55             </exclusions>
 56         </dependency>
 57         <!--这里是zookeeper的zkCli的操作包 我们读写服务全靠这个包-->
 58         <dependency>
 59             <groupId>com.github.sgroschupf</groupId>
 60             <artifactId>zkclient</artifactId>
 61             <version>0.1</version>
 62         </dependency>
 63 
 64 
 65         <dependency>
 66             <groupId>org.springframework.boot</groupId>
 67             <artifactId>spring-boot-starter-jdbc</artifactId>
 68         </dependency>
 69         <dependency>
 70             <groupId>org.springframework.boot</groupId>
 71             <artifactId>spring-boot-starter-web</artifactId>
 72         </dependency>
 73         <dependency>
 74             <groupId>org.mybatis.spring.boot</groupId>
 75             <artifactId>mybatis-spring-boot-starter</artifactId>
 76             <version>1.3.2</version>
 77         </dependency>
 78 
 79         <dependency>
 80             <groupId>mysql</groupId>
 81             <artifactId>mysql-connector-java</artifactId>
 82             <version>5.1.38</version>
 83         </dependency>
 84         <dependency>
 85             <groupId>org.springframework.boot</groupId>
 86             <artifactId>spring-boot-starter-test</artifactId>
 87             <scope>test</scope>
 88         </dependency>
 89     </dependencies>
 90 
 91     <build>
 92         <plugins>
 93             <plugin>
 94                 <groupId>org.springframework.boot</groupId>
 95                 <artifactId>spring-boot-maven-plugin</artifactId>
 96             </plugin>
 97         </plugins>
 98     </build>
 99 
100 </project>
pom.xml

 

13.编写在provider工程的java文件夹下的com.bcsp.mapper的包下,编写DeptMapper.java数据访问层接口,内容如下:

 1 package com.bcsp.mapper;
 2 
 3 import com.bcsp.pojo.Dept;
 4 import org.apache.ibatis.annotations.Delete;
 5 import org.apache.ibatis.annotations.Insert;
 6 import org.apache.ibatis.annotations.Select;
 7 import org.apache.ibatis.annotations.Update;
 8 
 9 import java.util.List;
10 
11 public interface DeptMapper {
12     @Select("<script>" +
13             "    select * from dept where 1=1" +
14             "    <if test='dname!=null'>" +
15             "       and dname=#{dname}" +
16             "    </if>" +
17             "    <if test='deptno!=null'>" +
18             "       and deptno=#{deptno}" +
19             "    </if>" +
20             "</script>")
21     List<Dept> selectDept(Dept dept);
22 
23     @Insert("insert into dept(dname,loc) values(#{dname},#{loc})")
24     Integer insertDept(Dept dept);
25 
26     @Update("update dept set dname=#{dname},loc=#{loc} where deptno=#{deptno}")
27     Integer updateDept(Dept dept);
28 
29     @Delete("delete from dept where deptno=#{deptno}")
30     Integer deleteDept(Dept dept);
31 }
DeptMapper.java

 

14.编写在provider工程的java文件夹下的com.bcsp.service的包下,编写DeptServiceImpl.java业务层接口的实现类,内容如下:

 1 package com.bcsp.service;
 2 import com.bcsp.mapper.DeptMapper;
 3 import com.bcsp.pojo.Dept;
 4 import org.springframework.beans.factory.annotation.Autowired;
 5 import org.springframework.stereotype.Service;
 6 import org.springframework.transaction.annotation.Transactional;
 7 
 8 import java.util.List;
 9 @Service
10 @Transactional
11 public class DeptServiceImpl implements DeptService {
12     @Autowired
13     private DeptMapper deptMapper;
14 
15     @Override
16     public List<Dept> findDept(Dept dept) {
17         return deptMapper.selectDept(dept);
18     }
19 
20     @Override
21     public Integer addDept(Dept dept) {
22         return deptMapper.insertDept(dept);
23     }
24 
25     @Override
26     public Integer updateDept(Dept dept) {
27         return deptMapper.updateDept(dept);
28     }
29 
30     @Override
31     public Integer deleteDept(Dept dept) {
32         return deptMapper.deleteDept(dept);
33     }
34 }
DeptServiceImpl.java

 

15.编写在provider工程的resouces文件夹下的application.properties的内容:

server.port=9090

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456

mybatis.type-aliases-package=com.bcsp.pojo

pagehelper.helper-dialect=mysql
application.properties

 

 

16.编写在provider工程的resouces文件夹下的spring-provider.xml的内容:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4        xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
 5        xsi:schemaLocation="http://www.springframework.org/schema/beans
 6                           http://www.springframework.org/schema/beans/spring-beans.xsd
 7                           http://code.alibabatech.com/schema/dubbo
 8                           http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
 9 
10     <!-- 提供方应用信息,用于计算依赖关系 -->
11     <dubbo:application name="myprovider" />
12 
13     <!-- 使用zookeeper注册中心暴露服务地址,我的zookeeper是架在本地的 -->
14     <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" timeout="60000"/>
15 
16     <!-- 用dubbo协议在20880端口暴露服务 -->
17     <dubbo:protocol name="dubbo" port="20880" />
18 
19     <!-- 用户服务接口 -->
20     <dubbo:service interface="com.bcsp.service.DeptService" ref="deptService"/>
21     <bean id="deptService" class="com.bcsp.service.DeptServiceImpl"/>
22 
23 </beans>
spring-provider.xml

 

 17.编辑在provider工程的项目首启项的ProviderApplication.java的内容:

 1 package com.bcsp;
 2 
 3 import org.mybatis.spring.annotation.MapperScan;
 4 import org.springframework.boot.SpringApplication;
 5 import org.springframework.boot.autoconfigure.SpringBootApplication;
 6 import org.springframework.context.annotation.ImportResource;
 7 
 8 @MapperScan("com.bcsp.mapper")
 9 @ImportResource("classpath:spring-provider.xml")
10 @SpringBootApplication
11 public class ProviderApplication {
12 
13     public static void main(String[] args) {
14         SpringApplication.run(ProviderApplication.class, args);
15     }
16 
17 }
ProviderApplication.java

 

18. 在consumer子模块中的com.bcsp.controller包下构建CenterController.java文件

 1 package com.bcsp.controller;
 2 
 3 import com.bcsp.pojo.Dept;
 4 import com.bcsp.service.DeptService;
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.web.bind.annotation.RequestMapping;
 7 import org.springframework.web.bind.annotation.RestController;
 8 
 9 import java.util.List;
10 
11 @RestController
12 public class CenterController {
13     @Autowired
14     private DeptService deptService;
15 
16     @RequestMapping("/data.do")
17     public List<Dept> findDept(Dept dept) {
18         return deptService.findDept(dept);
19     }
20 
21     @RequestMapping("/add.do")
22     public Integer addDept(Dept dept) {
23         return  deptService.addDept(dept);
24     }
25 
26     @RequestMapping("/upd.do")
27     public Integer updateDept(Dept dept) {
28         return  deptService.updateDept(dept);
29     }
30 
31     @RequestMapping("/del.do")
32     public Integer deleteDept(Dept dept) {
33         return  deptService.deleteDept(dept);
34     }
35 
36 
37 }
CenterController.java

 

19.在consumer子模块的resouces文件夹下编辑application.properties文件

1 server.port=9091
2 
3 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
4 spring.datasource.url=jdbc:mysql://localhost:3306/test
5 spring.datasource.username=root
6 spring.datasource.password=123456
7 
8 
9 pagehelper.helper-dialect=mysql
application.properties

 

20.编写调用者的xml文件spring-consumer.xml

1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
4        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
5 
6     <dubbo:application name="dubbo-consumer"/>
7     <dubbo:registry check="false" address="zookeeper://127.0.0.1:2181"/>
8     <dubbo:reference interface="com.bcsp.service.DeptService" id="deptService"/>
9 </beans>
spring-consumer.xml

 

21.编写consumer子模块的启动项,ConsumerApplication.java

 1 package com.bcsp;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 import org.springframework.context.annotation.ImportResource;
 6 
 7 @ImportResource("classpath:spring-consumer.xml")
 8 @SpringBootApplication
 9 public class ConsumerApplication {
10 
11     public static void main(String[] args) {
12         SpringApplication.run(ConsumerApplication.class, args);
13     }
14 
15 }
ConsumerApplication.java

 

22.启动zookeeper服务端

 

 

 

 

21.启动提供者provider的服务

 

 

22.启动消费者consumer

 

 

23.数据测试

 

posted @ 2021-03-02 11:53  红酒人生  阅读(341)  评论(0编辑  收藏  举报