根据项目的进度,继续向下学习搭建服务Dubbo与在IDEA下创建服务提供者与消费者。
目录
配置maven的本地仓库(当我们拿到别人的包的时候,可能爆红,就应该是maven安装有问题):
搭建监控Dubbo监控中心(作用:查看注册中心(ZooKeeper)上,是否有服务启动)
1,先上传dubbo包到Tomcat下webapps文件夹,
2,刷新,使用xshll软件刷新自动解压war包(Tomcat必须是启动这的)
3,进入webapps,删除ROOT文件,更改监控中心解压包为ROOT文件(重新启动tomcat)
配置dubbo监控中心的tomcat依赖与Tomcat的插件
springmvc的执行流程图(服务消费者向服务提供者进行服务的过程,面试爱问!!!)
安装maven镜像加速度器
maven的安装地址:Maven Repository: maven (mvnrepository.com)
配置镜像加速器:
首先先解压maven的压缩包,打开包——>找到conf文件夹——>打开setting.xml文件
找到配置行<172行左右>
配置镜像源:
//华为源
<mirror>
<id>huaweicloud</id>
<mirrorOf>*</mirrorOf>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
</mirror>
//阿里源
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
配置maven的本地仓库(当我们拿到别人的包的时候,可能爆红,就应该是maven安装有问题):
打开IDEA,打开file——>打开setting——>打开Bulid....——打开bulid Tools——>打开maven——>配置安装路径
搭建监控Dubbo监控中心(作用:查看注册中心(ZooKeeper)上,是否有服务启动)
搭建项目学习框架(一,Linux下Java的安装,安装Tomcat与搭建Zookeeper)_韶光不负的博客-CSDN博客
安装Dubbo监控中心:
1,先上传dubbo包到Tomcat下webapps文件夹,
2,刷新,使用xshll软件刷新自动解压war包(Tomcat必须是启动这的)
Tomcat端口访问:当我们访问8080端口时其实访问的是Tomcat\webapps\ROOT\index.jsp页面。
3,进入webapps,删除ROOT文件,更改监控中心解压包为ROOT文件(重新启动tomcat)
测试现象(注册账号与密码默认都是root)
maven创建服务提供者
创建maven过程:
file——New——Project——Maven—— 选择名称与位置
maven目录结构:
配置maven依赖(核心配置)
<!-- 打包方式 打包为web包。web文件就行标注-->
<packaging>war</packaging>
<!-- 打包方式 打为jar包-->
<packaging>jar</packaging>
spring架构图(spring的生态):
spring二大特征:
IOC :控制翻转
在Java中对象我们一般这样使用(Test test = new Test();),在spring中对象的创建由spring的容器自动创建,当我们需要spring会自动注入(依赖注入:DI),注解@AutoWire 作用:自动注入spring创建的对象
AOP :面向切面编程
为项目扩展提供一种方式;因为系统不能满足需求,就行系统升级(在1.0系统上开发)。不修改原有的代码,添加新代码,新代码在原代码上执行(这个叫切面),在原方法上运行叫切入点。在切入点的执行叫增强处理,(切入点前面增强叫前置增强,后面叫后置增强,前后都执行叫环绕增强, 最终增强是代码不管出不出错都会执行)
maven的四个主要核心依赖:
<?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>org.example</groupId>
<artifactId>untitled</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 打包方式 -->
<packaging>war</packaging>
<!--配置框架版本spring-->
<properties>
<spring.version>4.3.10.RELEASE</spring.version>
</properties>
<!-- 导人spring的依赖-->
<dependencies>
<dependency>
<!-- spring的组件的依赖-->
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
<!-- 使用变量 <spring.version>4.3.10.RELEASE</spring.version> 相当于 4.3.10.RELEASE -->
</dependency>
<dependency>
<!-- spring的核心依赖-->
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<!-- spring上下文的依赖 -->
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<!-- spring的web编程的包 -->
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</project>
配置dubbo监控中心的tomcat依赖与Tomcat的插件
<dependencies>
<!-- 安装dubbo依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.4</version>
</dependency>
<!-- zookeeper 根据安装来选择版本-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.10</version>
</dependency>
<!-- 导让监控依赖包-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
<!-- 导入插件 : 方便直接启动项目-->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
tomcat的插件增加
<!-- 导入插件 : 方便直接启动项目-->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<!-- 加强tomcat的配置-->
<configuration>
<!-- 配置目录-->
<path>/</path>
<!-- 配置端口-->
<port>8080</port>
</configuration>
</plugin>
</plugins>
</build>
显示现象(显示爆红:1,依赖写错了 2,本地仓库没有出现问题):
创建服务提供者(:返回服务问候人名称,舔狗接口就行调用)
pom.xml:
<?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>org.example</groupId>
<artifactId>untitled</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 打包方式 -->
<packaging>war</packaging>
<!--配置框架版本spring-->
<properties>
<spring.version>4.3.10.RELEASE</spring.version>
</properties>
<!-- 导人spring的依赖-->
<dependencies>
<dependency>
<!-- spring的组件的依赖-->
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
<!-- 使用变量 <spring.version>4.3.10.RELEASE</spring.version> 相当于 4.3.10.RELEASE -->
</dependency>
<dependency>
<!-- spring的核心依赖-->
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<!-- spring上下文的依赖 -->
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<!-- spring的web编程的包 -->
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 安装dubbo依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.4</version>
</dependency>
<!-- zookeeper 根据安装来选择版本-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.10</version>
</dependency>
<!-- 导让监控依赖包-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
<!-- 导入插件 : 方便直接启动项目-->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<!-- 加强tomcat的配置-->
<configuration>
<!-- 配置目录-->
<path>/</path>
<!-- 配置端口-->
<port>8080</port>
</configuration>
</plugin>
</plugins>
</build>
</project>
applicationContext-service.xml:
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
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://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 配置dubbo应用名称-->
<dubbo:application name ="untitled"></dubbo:application>
<!-- 配置服务注册地址-->
<dubbo:registry address="zookeeper://192.168.188.133:2181"></dubbo:registry>
<!-- 配置服务所在的包-->
<dubbo:annotation package="com.openlab.service"></dubbo:annotation>
</beans>
web.xml(必须放在WEB/INF文件夹下,防止报错)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<!-- 配置Spring的配置文件-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-service.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextCleanupListener</listener-class>
</listener>
</web-app>
接口
package com.openlab.service;
public interface UserService {
public String getName();
}
实现类
package com.openlab.service.Impl.UserService.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.openlab.service.UserService;
@Service //@Service 注解 标记这个类为服务类,发表到监控中心
//导的是这个包 :import com.alibaba.dubbo.config.annotation.Service;
public class UserServiceimpl implements UserService {
public String getName() {
return "小_罗";
}
}
现象(服务的提供者就上去了,红色表示日志,8080端口显示表示启动成功):
创建服务消费者(与服务提供者有相似之处)
结构图:
pom.xml配置
<?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.openlab</groupId>
<artifactId>Dubbo_consumer0319</artifactId>
<version>1.0</version>
<!--打包打成war包-->
<packaging>war</packaging>
<!--配置框架的版本-->
<properties>
<spring.version>4.3.10.RELEASE</spring.version>
</properties>
<!--导入spring的依赖-->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--配置Dubbo的依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.4</version>
</dependency>
<!--配置zookeeper的注册中心依赖-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.10</version>
</dependency>
<!--导入监控依赖的包-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
<!--导入Maven的tomcat插件-->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<path>/</path>
<!-- 给服务消费者提供端口 -->
<port>9091</port>
</configuration>
</plugin>
</plugins>
</build>
</project>
web.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<!--加载Spring的配置文件-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-service.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--配置前端请求的前端控制器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<!-- springmvc的映射 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
接口的实现类:
package com.openlab.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.openlab.service.UserService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//@Controller
@RestController
@RequestMapping("/user")
public class UserController {
@Reference
private UserService userService;
@RequestMapping("/getName")
//@ResponseBody
public String getName(){
return "欢迎"+userService.getName()+"学习框架微服务开发....";
}
}
现象:
日志启动
测试
查看Doubbo监控记录
springmvc的执行流程图(服务消费者向服务提供者进行服务的过程,面试爱问!!!)