当前位置: 首页 > article >正文

搭建一个简易的springboot+springcloud项目

项目使用:

jdk:1.8

nacos:1.2.1

springboot:2.1.6

springcloud:Greenwich.SR2

 

nacos下载地址:https://github.com/alibaba/nacos/releases

下载安装好后点击启动

项目架构图:

 

父模块加入依赖:

 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version><relativePath/></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR2</spring-cloud.version></properties><dependencyManagement><dependencies><!-- springCloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

pwl_item模块:

加入依赖

<dependencies><!--nacos客户端--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.1.0.RELEASE</version></dependency><!--web环境--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies>

yml配置:

server:port: 8081 #启动端口号
spring:application:name: item-service #在nacos注册中心的服务名cloud:nacos:discovery:server-addr: 127.0.0.1:8848 #nacos的ip端口

编写启动类:

package com.pwl;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient //开启服务注册
public class ItemApplication {public static void main(String[] args) {SpringApplication.run(ItemApplication.class,args);}
}

编写controller

package com.pwl.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ItemController {@GetMapping("/item/test")public String itemTest(@RequestParam("msg") String msg){return "返回信息:"+msg;}
}

图:

 

pwl_user模块:

加入依赖

<dependencies><!--nacos客户端--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.1.0.RELEASE</version></dependency><!--web环境--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!--依赖feign接口--><dependency><groupId>com.pengwenliang</groupId><artifactId>pwl_client</artifactId><version>1.0-SNAPSHOT</version></dependency><!--导入feign启动依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency></dependencies>

yml配置:

server:port: 8082 #启动端口号
spring:application:name: user-service #在nacos注册中心的服务名cloud:nacos:discovery:server-addr: 127.0.0.1:8848 #nacos的ip端口

编写启动类:

package com.pwl;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient //开启服务注册
@EnableFeignClients //开启feign
public class UserApplication {public static void main(String[] args) {SpringApplication.run(UserApplication.class,args);}
}

编写controller

package pwl.controller;import com.pwl.client.ItemClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {@Autowiredprivate ItemClient itemClient;@GetMapping("/user/test")public String userTest(){String msg = itemClient.itemTest("user服务调用item服务");return msg;}
}

图:

 

pwl_client模块

导入依赖

<dependencies><!--只能导入核心包,不要导入启动器--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-openfeign-core</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId></dependency></dependencies>
package com.pwl.client;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;@FeignClient("item-service")
public interface ItemClient {/*** 注意:@RequestParam("msg")这个注解一定不能漏,否则feign调用会失败* @param msg* @return*/@GetMapping("/item/test")public String itemTest(@RequestParam("msg") String msg);
}

图:

(注意:feign的调用者和被调用者的目录结构要一样,这里是com.pwl)

 

pwl_gateway模块

导入依赖:

    <dependencies><!--网关--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--注册中心--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.1.0.RELEASE</version></dependency><!--熔断器--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId></dependency></dependencies>

yml:

server:port: 10010
spring:application:name: api-gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:globalcors:corsConfigurations:'[/**]':allowedOrigins: #配置允许跨域的域名- "http://xxx.com"- "http://xxx.com"allowedHeaders:- "*"allowCredentials: truemaxAge: 360000allowedMethods:- GET- POST- DELETE- PUT- OPTIONS- HEADdefault-filters:- name: Hystrixargs:name: fallbackcmdfallbackUri: forward:/fallback #指定服务降级转发到routes:- id: item-service   # 路由id,可以随意写# 代理的服务地址;lb表示负载均衡(从nacos中获取具体服务)uri: lb://item-service# 路由断言,可以配置映射路径predicates:- Path=/api/item/**filters:# 表示过滤1个路径,2表示两个路径,以此类推- StripPrefix=2- id: user-service   # 路由id,可以随意写# 代理的服务地址;lb表示负载均衡(从nacos中获取具体服务)uri: lb://user-service# 路由断言,可以配置映射路径predicates:- Path=/api/user/**filters:# 表示过滤1个路径,2表示两个路径,以此类推- StripPrefix=2
hystrix:command:default:execution:isolation:thread:#设置API网关中路由转发请求的HystrixCommand执行超时时间timeoutInMilliseconds: 5000

编写启动类

package com.pwl;import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
/*** 网关微服务*/
/*@SpringBootApplication
@EnableDiscoveryClient // 开启服务注册
@EnableCircuitBreaker // 开启熔断器*/
@SpringCloudApplication
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class,args);}
}

服务降级方法:

package com.pwl.fallback;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** 服务降级方法*/
@RestController   // @Controller+@ResonseBody
public class FallbackController {@RequestMapping("/fallback")public String fallback(){//log.warn("服务转发失败,检查服务名是否对应");return "服务繁忙,请稍等...";}
}

 

启动项目

查看nacos中是否注册成功,访问地址:http://127.0.0.1:8848/nacos/index.html 账号和密码默认是:nacos

 

访问网关转发到具体微服务

 

 

 

http://www.lryc.cn/news/2421136.html

相关文章:

  • npm ERR! errno CERT_HAS_EXPIRED(淘宝镜像证书过期)
  • HTML5期末大作业:我的家乡网站设计——我的家乡
  • 如何创建一个有吸引力的博客标题? 用实际例子解释!
  • 【笔记------LCD1602 SCM1602H-P9-Ver1.2】------ 4位数据驱动
  • 电脑出现无法访问您试图使用的功能所在的网络位置怎么办?(清除软件卸载残留)
  • JSP详解,看这一篇就够了(含示例)
  • DNS欺骗劫持与防御策略
  • 鸿蒙生死印作用,逆天邪神:鸿蒙生死印应该有个BUG能力,两位梵天老祖身上有提示...
  • 常见滤波算法(Python版本)
  • Vue3 -- 基于Websocket实现简易聊天室
  • 清除移动硬盘中jwgkvsq.vmx病毒
  • 什么是工业微型计算机,工业用微型计算机第一讲.ppt
  • C语言之网络编程(服务器和客户端)
  • HTML入门及其概念简析
  • SQL:select case 用法详解 带例子 图解说明 sqlserver2000
  • springboot的多模块开发
  • 开源网上商城程序(简介国内外开源网店系统)
  • 破解硬盘还原卡与还原精灵
  • 云南省增值税发票综合平台(修订版)----发票抵扣勾选教程---
  • 注册表无法修改解决
  • Android之MediaPlayer详解
  • Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)
  • 参观中关村软件园二期小记
  • 怎么完全卸载赛门铁克_赛门铁克(sep)卸载方法
  • Xcode5.1离线下载安装及使用iOS5模拟器进行开发调试的方法
  • Win2003安装简录
  • KindEditor编辑器 用法
  • 红雪iOS6.1.3不完美越狱教程
  • 魔域mysql下载_魔域3.2无敌版之富甲天下下载_魔域3.2无敌版下载_快吧单机游戏...
  • Linux小知识---关于socket的一些知识点