org.apache.maven.plugins
maven-compiler-plugin
${java.version}${java.version}
UTF-8
org.apache.maven.plugins
maven-resources-plugin
UTF-8
parent父工程到这里就可以不动他了,如果你的子模块有变动再更新
三、创建common模块
对parent项目创建cmmon子模块,common模块一般用于存放公共的实体类、工具类等公用信息。
此处用于仅用于测试所以只创建一个user对象以及userservice
最终结构如下图(此处有个不影响使用的问题,应该时domain,结果拼成了domin了,当然也可自行更改为entity之类的 看个人习惯)
User.java(需要实现Serializable 接口)
package com.demo.common.domin;
import java.io.Serializable;
/**
@ClassName: User
@Package: com.demo.common.domin
@Description:
@Datetime: 2020/7/10 17:04
@author: kaishun.zhou
*/
public class User implements Serializable {
private String id;
private String username;
private String password;
private Integer age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
UserService.java
package com.demo.common.service;
import com.demo.common.domin.User;
import java.util.List;
/**
@ClassName: UserService
@Package: com.demo.common.service
@Description:
@Datetime: 2020/7/10 17:05
@author: kaishun.zhou
*/
public interface UserService {
List findAll();
}
common模块到此结束。pom以及application默认即可,此案例中可以不使用。
四、创建provider模块
创建provider模块去具体实现common下的服务。实际开发中会有多个provider模块以及多种服务以及实现。
首先修改pom文件
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”> 4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.1.RELEASE com.demo provider 0.0.1-SNAPSHOT provider jar Demo project for Spring Boot com.demo common 0.0.1-SNAPSHOT org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-test test com.alibaba dubbo 2.5.5 log4j log4j com.101tec zkclient ${zkclient.version} org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.1 org.springframework.boot spring-boot-starter-jdbc mysql mysql-connector-java 5.1.35 com.alibaba druid 1.0.11 org.springframework.boot spring-boot-starter-tomcat provided org.springframework.boot spring-boot-maven-plugin 创建service的实现impl、创建mapper、修改application.yml、创建spring-dubbo.xml 结构如图(application.properties为默认带的,可删除,也可直接修改后缀为yml) UserMapper.java package com.demo.provider.mapper; import com.demo.common.domin.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; import java.util.List; /** @ClassName: UserMapper @Package: com.demo.provider.mapper @Description: @Datetime: 2020/7/10 17:10 @author: kaishun.zhou */ @Mapper public interface UserMapper { @Results(id = “userMap”, value = { @Result(column = “id”, property = “id”), @Result(column = “username”, property = “username”), @Result(column = “age”, property = “age”), @Result(column = “password”, property = “password”)}) @Select(“SELECT * FROM user”) List getAll(); } 添加mapper后对应的启动类需要添加扫描后面会贴代码 UserServiceImpl.java package com.demo.provider.service.impl; import com.alibaba.dubbo.config.annotation.Service; import com.demo.common.domin.User; import com.demo.common.service.UserService; import com.demo.provider.mapper.UserMapper; import javax.annotation.Resource; import java.util.List; /** @ClassName: UserImpl @Package: com.demo.provider.service.impl @Description: @Datetime: 2020/7/10 17:09 @author: kaishun.zhou */ @Service(version = “1.0.0”) public class UserImpl implements UserService { @Resource private UserMapper userMapper; @Override public List findAll() { System.out.println(“进入提供者实现体”); List list = userMapper.getAll(); System.out.println(“用户数量:”+list.size()); return list; } } 注意: 此处的@Service为com.alibaba.dubbo.config.annotation.Service; 而不是org.springframework.stereotype.Service 此处的demo测试中版本号可加可不加 application.yml server: port: 8082 spring: datasource: name: dubbo_demo url: jdbc:mysql://127.0.0.1:3306/dubbo_demo username: root password: 123456 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver mybatis: type-aliases-package: domain 此处provider模块为8082端口,后面customer模块为8081端口 创建spring-dubbo.xml xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:dubbo=“http://code.alibabatech.com/schema/dubbo” 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"> 此文件中配置参数路径根据自己配置路径修改。 修改启动类ProviderApplication.java package com.demo.provider; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource; @SpringBootApplication @ImportResource({“classpath:spring-dubbo.xml”}) @MapperScan(“mapper”) public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); System.out.println(“服务端启动成功!!!”); } } provider模块至此结束 五、创建customer模块 创建customer模块去调用provider模块下服务。 修改pom文件 xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”> 4.0.0 org.springframework.boot spring-boot-starter-parent 2.3.1.RELEASE com.demo customer 0.0.1-SNAPSHOT customer jar Demo project for Spring Boot com.demo common 0.0.1-SNAPSHOT org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test com.alibaba dubbo 2.5.5 log4j log4j com.101tec zkclient ${zkclient.version} org.springframework.boot spring-boot-maven-plugin 创建UserController,创建application.yml或者直接修改application.properties文件,此处用于测试选择的直接修改application.properties,至于为何不新建ym原因在下面、创建spring-dubbo.xml 最终结构如下图: UserController.java package com.demo.customer.controller; import com.alibaba.dubbo.config.annotation.Reference; import com.demo.common.domin.User; import com.demo.common.service.UserService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; /** @ClassName: UserController @Package: com.demo.customer.controller @Description: @Datetime: 2020/7/10 17:15 @author: kaishun.zhou */ @RestController public class UserController { @Resource @Reference(version = “1.0.0”) private UserService userService; @GetMapping(“getUser”) public List user(){ System.out.println(“进入消费者方法”); return userService.findAll(); } } application.properties(这就是为啥不新建yml的原因) server.port=8081 spring-dubbo.xml xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:dubbo=“http://code.alibabatech.com/schema/dubbo” 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"> 同理,配置参数根据自己的路径进行修改 修改启动类CustomerApplication.java package com.demo.customer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ImportResource; @SpringBootApplication @ImportResource({“classpath:spring-dubbo.xml”}) public class CustomerApplication { public static void main(String[] args) { SpringApplication.run(CustomerApplication.class, args); System.out.println(“消费端启动成功!!!”); } } customer模块结束 创建数据库dubbo-demo,并创建user表,字段与上述domain一致即可 CREATE TABLE PRIMARY KEY ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 添加模拟数据 INSERT INTO 至此即可启动项目测试。 首先确保zookeeper,根据上述博客安装完毕后进入bin目录下,打开zkServer.cmd和zkCli.cmd
使用druid数据源
user
(id
varchar(32) NOT NULL,username
varchar(100) DEFAULT NULL,password
varchar(100) DEFAULT NULL,age
int(3) DEFAULT NULL,id
)dubbo_demo
.user
(id
, username
, password
, age
) VALUES (‘1’, ‘tom’, ‘123456’, ‘22’);