前提搭建好zookeeper以及dubbo-admin(docker搭建zookeeper以及dubbo-admin )
一、需要提前准备的项目以及相关依赖
服务的消费者manage-service服务的提供者manage-service-client服务依赖的公共对象类以及接口manage-service-dao
消费者以及提供者需要依赖的pom
![9856ba404139aa8e6537b898f22023f5.png](https://i-blog.csdnimg.cn/blog_migrate/95b785ce269ebfe989fa24f806b40842.jpeg)
pom.xml
manage-service-dao创建公共接口
/** * AuthService * * @author kiki * @create 2020/10/5 */public interface UserService { void addUser(UserModel model); void updateUser(UserModel model);}
二、服务的提供者展示
1、服务的提供者manage-service-client application.yml配置
dubbo: application: registry: #注册zookeeper address: zookeeper://127.0.0.1:2181 protocol: port: 20881 name: dubbo #扫描当前存放service的包路径 scan: base-packages: manage.service.client.service.impl
2、manage-service-client实现UserService接口
import com.alibaba.dubbo.config.annotation.Service;import manage.service.common.UserService;/** * 用戶表服務層 * * @author kiki * @create 2020/10/5 */@Service(interfaceClass = UserService.class, version = "1.0.0")@org.springframework.stereotype.Servicepublic class UserServiceImpl implements UserService { @Autowired AuthMapper authMapper; /** * 添加用戶 * * @param model 模型 * @author kiki * @since 2020/10/5 11:36 上午 */ @Override public void addUser(UserModel model) { authMapper.insert(model); } /** * 更新模型 * * @param model 模型 * @author kiki * @since 2020/10/5 11:36 上午 */ @Override public void updateUser(UserModel model) { authMapper.update(model); }}
3、服务的提供者manage-service-client Application.class
/** * 管理客户端启动 * * @author kiki * @create 2020/10/1 */@EnableDubbo@MapperScan("manage.service.client.mapper")@SpringBootApplicationpublic class ManageServiceClientApplication { public static void main(String[] args) { SpringApplication.run(ManageServiceClientApplication.class, args); }}
启动后在dubbo-admin会注册成功
![ca3b8e3c790dc0d729f49b0e2f53f030.png](https://i-blog.csdnimg.cn/blog_migrate/23c49bea569f89473652c22cef512743.jpeg)
注册成功的服务
三、服务的消费者
1、manage-service application.yml配置
dubbo: application: registry: address: zookeeper://127.0.0.1:2181
2、manage-service AuthServiceImpl.java
package manage.service.service.impl;import com.alibaba.dubbo.config.annotation.Reference;import data.util.IdSequenceUtils;import manage.service.common.UserService;import manage.service.dao.UserModel;import manage.service.model.user.AddUserModel;import manage.service.model.user.UpdateUserModel;import manage.service.service.AuthService;import org.springframework.stereotype.Service;/** * 权限管理 * * @author kiki * @create 2020/10/1 */@Servicepublic class AuthServiceImpl extends AuthService { private static IdSequenceUtils idUtil; static { idUtil = new IdSequenceUtils(); } @Reference(version = "1.0.0",url = "dubbo://localhost:20881") private UserService userService; /** * 插入用戶模型 * * @param model 模型 * @author kiki * @since 2020/10/5 11:58 上午 */ @Override public void addUser(AddUserModel model) { UserModel userModel = generateUserModel(model); userModel.setId(idUtil.nextId()); userService.addUser(userModel); } /** * 更新用戶模型 * * @param model 模型 * @author kiki * @since 2020/10/5 11:58 上午 */ @Override public void updateUser(UpdateUserModel model) { UserModel userModel = generateUserModel(model); userModel.setId(model.getId()); userService.updateUser(userModel); } /** * 通用模型 * * @param model 模型 * @return manage.service.dao.UserModel * @author kiki * @since 2020/10/5 11:58 上午 */ private UserModel generateUserModel(AddUserModel model) { UserModel userModel = new UserModel(); userModel.setUsername(model.getUsername()); userModel.setPassword(model.getPassword()); userModel.setNickname(model.getNickname()); return userModel; }}
### 踩坑注意事项:
1、UserServiceImpl.java中@Service是引用dubbo的注释的
2、ManageServiceClientApplication.java 需要加入@EnableDubbo
3、AuthServiceImpl.java中@Reference需要指定dubbo不然会提示NullException异常