Dubbo 3 Dubbo 快速入门 3.2 Dubbo 快速入门 3.2.1 Spring和 SpringMvc 整合

news2024/11/17 10:03:53

Dubbo

【黑马程序员Dubbo快速入门,Java分布式框架dubbo教程】

3 Dubbo 快速入门

文章目录

      • Dubbo
      • 3 Dubbo 快速入门
        • 3.2 Dubbo 快速入门
          • 3.2.1 Spring和 SpringMvc 整合

3.2 Dubbo 快速入门

3.2.1 Spring和 SpringMvc 整合

依然拿着 架构图来比着搞

在这里插入图片描述

【实现步骤】

在这里插入图片描述

①创建服务提供者Provider模块

②创建服务消费者Consumer模块

③在服务提供者模块编写 UserServiceImpl 提供服务

④在服务消费者中的 UserController 远程调用UserServiceImpl 提供的服务

⑤分别启动两个服务,测试

【直接非常 快速的开干】

先来一个空的项目

在这里插入图片描述

直接创建

在这里插入图片描述

现在的IDEA 版本 默认 会给我们搞成 一个模块 出来

我们不要

在这里插入图片描述

直接干掉

在这里插入图片描述

OK, 干净 了

现在再来创建 模块

在这里插入图片描述

OK,直接创建

在这里插入图片描述

OK,这是第一个模块

再来一个

在这里插入图片描述

直接创建

在这里插入图片描述

OK,这样两个 模块都有 了

【配置依赖】

dubbo-web

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.dingjiaxiong</groupId>
    <artifactId>dubbo-web</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <spring.version>5.1.9.RELEASE</spring.version>
        <dubbo.version>2.7.4.1</dubbo.version>
        <zookeeper.version>4.0.0</zookeeper.version>

    </properties>

    <dependencies>
        <!-- servlet3.0规范的坐标 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <!--spring的坐标-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--springmvc的坐标-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--日志-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.21</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.21</version>
        </dependency>



        <!--Dubbo的起步依赖,版本2.7之后统一为rg.apache.dubb -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>${dubbo.version}</version>
        </dependency>
        <!--ZooKeeper客户端实现 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>${zookeeper.version}</version>
        </dependency>
        <!--ZooKeeper客户端实现 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>${zookeeper.version}</version>
        </dependency>


    </dependencies>


    <build>
        <plugins>
            <!--tomcat插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <port>8000</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

dubbo-service

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.dingjiaxiong</groupId>
    <artifactId>dubbo-service</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <spring.version>5.1.9.RELEASE</spring.version>
        <dubbo.version>2.7.4.1</dubbo.version>
        <zookeeper.version>4.0.0</zookeeper.version>

    </properties>

    <dependencies>
        <!-- servlet3.0规范的坐标 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <!--spring的坐标-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--springmvc的坐标-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--日志-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.21</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.21</version>
        </dependency>



        <!--Dubbo的起步依赖,版本2.7之后统一为rg.apache.dubb -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>${dubbo.version}</version>
        </dependency>
        <!--ZooKeeper客户端实现 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>${zookeeper.version}</version>
        </dependency>
        <!--ZooKeeper客户端实现 -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>${zookeeper.version}</version>
        </dependency>


    </dependencies>

</project>

这边,就不用Tomcat 插件,因为要打成 jar,不用运行成web 【记得刷一下】

OK,现在编写业务接口【在dubbo-service 中】

package com.dingjiaxiong.service;

/**
 * ClassName: UserService
 * date: 2022/11/13 20:26
 *
 * @author DingJiaxiong
 */

public interface UserService {

    public String sayHello();

}

在这里插入图片描述

OK,再来一个 实现类

package com.dingjiaxiong.service.impl;

import com.dingjiaxiong.service.UserService;
import org.springframework.stereotype.Service;

/**
 * ClassName: UserServiceImpl
 * date: 2022/11/13 20:27
 *
 * @author DingJiaxiong
 */

@Service
public class UserServiceImpl implements UserService {
    public String sayHello() {
        return "Hello , Dubbo!";
    }
}

OK

创建Spring 配置文件【因为 要扫描bean 】

直接copy 老师给的

在这里插入图片描述

复制到 resources 下

在这里插入图片描述

哇, 一些快要忘记 的东西,浮现脑海

修改配置文件,包扫描

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
   
    <context:component-scan base-package="com.dingjiaxiong.service"/>

</beans>

在这里插入图片描述

OK, 这样就完成 了Spring 的配置

【现在来 做dubbo-web】

首先是打包方式 → war

在这里插入图片描述

OK

创建web 工程那套 目录

在这里插入图片描述

OK,web.xml 直接复制老师给的资料了

在这里插入图片描述

在这里插入图片描述

OK,先解决第一个报红

使 web 模块依赖于 service 模块

在这里插入图片描述

OK

在这里插入图片描述

第一个解决

springmvc 的配置文件 笔者就直接复制 老师的了

在这里插入图片描述

在这里插入图片描述

OK, 问题解决

修改springmvc 的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
         http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">


    <mvc:annotation-driven/>
    <context:component-scan base-package="com.dingjiaxiong.controller"/>


</beans>

OK

编写 控制器

package com.dingjiaxiong.controller;

import com.dingjiaxiong.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * ClassName: UserController
 * date: 2022/11/13 20:39
 *
 * @author DingJiaxiong
 */

@RestController
@RequestMapping("/user")
public class UserController {

    //注入 Service
    @Autowired
    private UserService userService;

    @RequestMapping("/sayHello")
    public String sayHello(){

        return userService.sayHello();
    }

}

在这里插入图片描述

OK,这样 基本环境就算 准备好了

现在 先把service 模块 install 一下

在这里插入图片描述

OK, 启动web 项目

在这里插入图片描述

在这里插入图片描述

OK,端口 8000 已经跑起来了

浏览器 访问测试 http://localhost:8000/user/sayHello.do

在这里插入图片描述

OK,没毛病

现在是一种 本地调用的模块,OK,之后我们 就会加入 Dubbo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/97982.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5G无线技术基础自学系列 | 单站点验证准备

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 单站点验证需要的准备工作包括硬件及通…

超越nnFormer!UNETR++:高效准确的3D医学图像分割

UNETR: Delving into Efficient and Accurate 3D Medical Image Segmentation 论文链接&#xff1a; https://arxiv.org/abs/2212.04497 代码链接&#xff1a; https://github.com/Amshaker/unetr_plus_plus 导读 这篇论文主要讲述了一种名为 UNETR 的 3D 医学图像分割方法&…

[附源码]Node.js计算机毕业设计黑河市劳务人员管理系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

绘制面积图(折线图)plot.area方法

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 绘制面积图&#xff08;折线图&#xff09; plot.area方法 [太阳]选择题 以下python代码结果错误的一项是? import matplotlib.pyplot as plt import pandas as pd import numpy as np myDa…

【LVGL学习笔记】(三)控件使用

LVGL全程LittleVGL&#xff0c;是一个轻量化的&#xff0c;开源的&#xff0c;用于嵌入式GUI设计的图形库。并且配合LVGL模拟器&#xff0c;可以在电脑对界面进行编辑显示&#xff0c;测试通过后再移植进嵌入式设备中&#xff0c;实现高效的项目开发。 LVGL中文教程手册&#…

汇编条件转移指令

目录 条件转移指令&#xff08;基本格式&#xff09; 简单条件转移指令 区分带符号数和无符号数 无符号数条件转移指令 比较内存中两个无符号数的大小&#xff0c;显示器输出小的数 内存中三个无符号数&#xff0c;输出最小的 符号数的条件转移指令 内存中有三个字节型带…

[附源码]Python计算机毕业设计冠军体育用品购物网站Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

uni-app卖座电影多端开发纪实(一):创建项目

@关于uni-app 今日之C端主要都是跑在手机而非PC上了,其形态也以小程序、App、手机H5页面为主了;大前端之C端 作品拿粗给人看,也十之八九要掏手机了;好在我们有 宇宙制霸人间值得流芳千古不可一世之我是大天才——uni-app!基于Vue+uni-app做开发,一套代码多端打包,老板省钱…

[LeetCode周赛复盘] 第 324 场周赛20221218

[LeetCode周赛复盘] 第 324 场周赛20221218 一、本周周赛总结二、 [Easy] 6265. 统计相似字符串对的数目1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6266. 使用质因数之和替换后可以取到的最小值1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6267. 添加边使所有节点度数…

区块链北大肖老师学习笔记3

第四节:比特币的共识协议 数字货币和纸质货币区别是可以复制&#xff0c;叫作双花攻击 即double spending attack。 去中心化货币要解决两个问题:①数字货币的发行②怎么验证交易的有效性&#xff0c;防止double spending attack。 答案:①比特币的发行是由挖矿决定的 ②…

适合编程初学者的开源博客系统(Vue3+Vant版)

目标 为编程初学者打造入门学习项目&#xff0c;使用各种主流编程语言来实现。让想学编程的&#xff0c;一个都不落下。 上述基本涵盖了当前编程开发所有主流语言。 左侧为前端版本&#xff1a;安卓、iOS、鸿蒙、Flutter、Vue、uni-app、微信小程序。 右侧为服务器端版本&am…

HC-SR501人体感应模块介绍

HC-SR501人体感应模块简介 HC-SR501是基于红外线技术的自动控制模块&#xff0c;采用德国原装进口 LHI778 探头设计&#xff0c;灵敏度高&#xff0c;可靠性强&#xff0c;超低电压工作模式&#xff0c;广泛应用于各类自动感应电器设备&#xff0c;尤其是干电池供电的自动控制产…

【算法】九月算法打卡

2022-09-01 外观数列 后一项是前一项的描述 获取第 n项数列&#xff0c;需要获取第n-1项数列。由此得出要采用递归回溯的形式 /*** param {number} n* return {string}*/ var countAndSay function(n) {if(n 1) return "1";// 上一串字符串let prevSeq countAn…

为什么卷积神经网络对图像的处理有很好的效果

1、前馈神经网络、BP神经网络、卷积神经网络的区别与联系 一、计算方法不同 1、前馈神经网络&#xff1a;一种最简单的神经网络&#xff0c;各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出&#xff0c;并输出给下一层&#xff0e;各层间没有反馈。 …

【Python机器学习】模型聚类高斯混合模型GMM讲解及实战演示(附源码 超详细)

需要源码和数据集请点赞关注收藏后评论留言私信~~~ 模型聚类 模型&#xff08;Model&#xff09;聚类假定每个簇符合一个分布模型&#xff0c;通过找到这个分布模型&#xff0c;就可以对样本点进行分簇。 在机器学习领域&#xff0c;这种先假定模型符合某种概率分布&#xff…

安装Elasticsearch

文章目录部署单点es部署kibanaDevTools安装IK分词器在线安装ik插件&#xff08;较慢&#xff09;离线安装ik插件&#xff08;推荐&#xff09;将 ik 目录 上传到es容器的插件数据卷中重启容器异常测试扩展词 词典部署es集群链接&#xff1a;https://pan.baidu.com/s/1HRHLxmVDf…

12.17

1. Promise 构造函数: Promise (excutor) {} (1) executor 函数: 执行器 (resolve, reject) > {} (2) resolve 函数: 内部定义成功时我们调用的函数 value > {} (3) reject 函数: 内部定义失败时我们调用的函数 reason > {} 说明: executor 会在 Promise 内部立即同…

日期-日历-选择器实现(图文并茂)

文章目录日历模板效果图展示功能点介绍完整代码&#xff08;cv即可&#xff09;index.wxmlindex.wxssindex.js日期时间选择器效果图展示1、使用小程序原生的picker①普通选择器&#xff1a;mode selector②多列选择器&#xff1a;mode multiSelector③时间选择器&#xff1a;…

一起Talk Android吧(第四百四十五回:UI控件之TimePicker)

文章目录概念介绍使用方法内容总结各位看官们大家好&#xff0c;上一回中咱们说的例子是"UI控件之DatePicker",这一回中说的例子是"UI控件之TimePicker"。闲话休提&#xff0c;言归正转&#xff0c;让我们一起Talk Android吧&#xff01; 概念介绍 看官们…

字体包体积压缩实践

这篇博客针对axios库的核心代码做一个简要总结 一、关键步骤 1.创建axios对象 axios库导出的对象是一个已经被创建好的axios对象&#xff0c;它本质上是一个方法&#xff0c;可以直接接收一个config配置参数进行请求。在库的入口处&#xff0c;即可看到如下代码&#xff1a;…