自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

余弦的自留地

万物之中,希望至美

  • 博客(20)
  • 收藏
  • 关注

原创 从零开始搭建微服务:注解功能整合及密码加密器调整

注解功能整合到目前为止,各微服务模块的入口类上自定义的注解已经有点多了,比如elsa-server-demo模块的入口类:@EnableDiscoveryClient@SpringBootApplication@EnableGlobalMethodSecurity(prePostEnabled = true) //表示开启Spring Cloud Security权限注解@EnableElsaAuthExceptionHandler@EnableFeignClients //开启Feign Cl

2021-05-13 10:24:06 163

原创 从零开始搭建微服务:微服务防护

目前我们所有客户端请求都是通过微服务网关转发完成的,但是还是可以直接访问微服务地址的方式来获取服务,我们使用PostMan分别向localhost:8301/system/hello(网关)localhost:8202/hello(非网关)发送GET请求,都能得到响应结果。localhost:8301/system/hello(网关)localhost:8202/hello(非网关)为了避免客户端请求绕过网关,直接调用微服务,我们可以在网关转发请求至微服务前和微服务被调用前之间做一些必要

2021-05-13 08:50:24 395

原创 从零开始搭建微服务:跨域处理

前后分离架构下肯定会遇到跨域的问题,因为我们的请求都是通过微服务网关来转发的,所以我们可以在网关处统一处理跨域。ElsaGateWayCorsConfigure在elsa-gateway模块下的com.elsa.gateway.configure模块下新建ElsaGateWayCorsConfigure配置类:@Configurationpublic class ElsaGateWayCorsConfigure { @Bean public CorsFilter corsFilter() {

2021-05-11 23:32:15 170

原创 从零开始搭建微服务:微服务间调用

微服务之间调用可通过Spring Cloud Feign来完成,Spring Cloud Feign内部整合了Spring Cloud Ribbon和Spring Cloud Hystrix,所以它具有客户端负载均衡和服务容错的功能。Feign微服务间调用以演示elsa-server-demo内部调用elsa-server-system提供的REST服务为例讲解。被调用端测试接口我们在elsa-server-system模块的TestController里新增一个方法,供elsa-server-de

2021-05-11 23:01:33 411

原创 从零开始搭建微服务:异常处理

目前系统的异常响应都是以Spring内部构建好的默认的格式返回。这样的格式对于开发的友好度不是很好。{ "error": "invalid_grant", "error_description": "Bad credentials"}下面我们通过自定义各种异常处理器,来将默认的异常响应转换为对我们友好的的格式响应。认证服务器异常处理默认情况下,当我们在获取令牌时输入错误的用户名或密码,系统返回如下格式响应:{ "error": "invalid_grant",

2021-05-11 20:59:22 2005

原创 从零开始搭建微服务:参数配置化

在开发过程中,一般都不建议使用硬编码的形式,因为硬编码不利于代码维护和升级,举个简单的例子:以PI圆周率为例,当我们在多处代码中使用时,如果需要修改PI值时,就需要在多处代码处对PI值都进行修改。但是如果将常量参数改造为可配置方式,则可通过修改一处,其他所有地方都改变。在搭建elsa-auth认证服务器时,我们在ElsaAuthorizationServerConfigure配置类里有两处采用了硬编码的形式。client_id,client_secret public void configur

2021-05-11 09:01:43 390

原创 从零开始搭建微服务:资源服务器

为了演示认证服务器和资源服务器在分离的模式下,如何进行资源保护和资源获取,我们来搭建两个微服务提供者:elsa-server-system和elsa-server-demo资源服务器。因为存在多个资源服务器,因此,我们为这些微服务提供一个父模块,来统一管理。elsa-server 父模块创建elsa-server 父模块项目File==>新建==>Other==>搜索Maven,选择Maven Module,然后Next填写Module Name:elsa-server,点击N

2021-05-10 22:08:35 799 1

原创 从零开始搭建微服务:网关服务器

在微服务的架构中,服务网关就是一个介于客户端与服务端之间的中间层。在这种情况下,客户端只需要跟服务网关交互,无需调用具体的微服务接口。这样的好处在于,客户端可以降低复杂性,无需关注具体是哪个微服务在提供服务。这一节我们将使用Spring Cloud Zuul搭建微服务网关elsa-gateway。网关服务器搭建创建认证服务器子项目File==>新建==>Other==>搜索Maven,选择Maven Module,然后Next填写Module Name:elsa-gateway,

2021-05-10 16:12:57 1179

原创 从零开始搭建微服务:认证服务器

通常的,单体架构,我们会采用Shiro对系统做防护以及权限控制。在搭建微服务系统时,同样也要对资源做保护,只有通过认证的资源才能被访问。下面,我们将借助Spring Cloud OAuth和Spring Cloud Security搭建一个统一给微服务发放访问令牌的认证服务器elsa-auth。Oauth2协议简介在微服务架构下,我们通常根据不同的业务来构建不同的微服务子系统,各个子系统对外提供相应的服务。客户端除了浏览器外,还可能是手机App,小程序等。在微服务架构出现之前,我们的系统一般为单体模式,

2021-05-09 23:44:42 2383

原创 从零开始搭建微服务:微服务注册中心

微服务注册中心搭建微服务注册中心的作用就是用于统一管理微服务实例,微服务间的调用只需要知道对方的服务名,而无需关注具体的IP和端口,便于微服务架构的拓展和维护。因为Eureka较为简单,无须启动第三方服务,只需要引入相关依赖即可,所以先使用Eureka构建微服务注册中心(Eureka服务端)。创建微服务注册中心子项目File==>新建==>Other==>搜索Maven,选择Maven Module,然后Next填写Module Name:elsa-register,点击Nex

2021-05-06 08:41:46 497 1

原创 从零开始搭建微服务:通用模块搭建

通用模块主要用于定义一些各个微服务通用的实体类,工具类或者第三方依赖等。新建通用模块新建 Maven ModuleFile==>新建==>Other==>搜索Maven,选择Maven Module,然后Next填写Module Name填写Module Name:elsa-common,点击Next一直Next至FInish为止,创建完成,项目结构如下父级Elsa-Cloud pom.xml因为我们刚刚在创建elsa-common模块的时候选择elsa-cloud作

2021-04-29 14:20:33 572 1

原创 从零开始搭建微服务:父模块搭建

首先我们使用Myeclipse创建一个名称为Elsa-Cloud的 Maven模块,该模块为整个工程的服务模块,用于聚合各个微服务子系统。File==>新建==>Other==>搜索Maven,选择Maven Project点击Next所有都默认,继续点击Next选择quickstart,点击Next如上图所示填写GroupId及ArtifactId,点击Finish,创建完项目如下图因为Elsa-Cloud模块是项目的父模块,仅用于聚合子模块,所以我们可以把上图红色

2021-04-29 13:52:12 360

原创 SpringBoot:5.SpringBoot+Mybatis多数据源配置实现

在做架构中,有的时候会遇到下面两种情况:读写分离,主库负责写入,从库负责读取。因为数据量较大,需要在主库中存放平台主要表结构,将会大量产生的数据按日期分表放到从库中。(比如我们公司做车载GPS的,GPS数据量就比较大,所以就把GPS信息以及相关的报警信息按日期分表放入到从库中)对于这两种情况,就需要在项目中加入多数据源,以便操作不同的数据库。而在实际开发中,一般会根据实际情况选择...

2020-04-09 15:27:19 187

原创 SpringBoot:4.SpringBoot整合Mybatis实现数据库访问

在公司项目开发中,使用Mybatis居多。在 SpringBoot:3.SpringBoot使用Spring-data-jpa实现数据库访问 中,这种jpa风格的把sql语句和java代码放到一起,总感觉分离的不够彻底。基于个人习惯,还是比较喜欢把代码和sql分开,sql语句在xml文件里不管多复杂,写到xml里看起来比较简单,不是那么臃肿。1.整合Mybatis1.1 添加pom.xml依赖...

2019-11-23 08:52:18 297

原创 SpringBoot:3.SpringBoot使用Spring-data-jpa实现数据库访问

做Web开发,首先要能将数据渲染到网页中展示,其次是要获取数据库数据展示到视图层,在前面的文章SpringBoot整合Thymeleaf模板引擎渲染web视图,我们实现了从后端数据展示到视图层,那么下面我们通过使用Spring Data Jpa来实现简单的数据库增删改查功能。1.pom.xml中引入依赖的jar包 <!--Web开发依赖--> <dependency&g...

2019-11-20 11:33:41 305

原创 Dart:3.Dart运算符、流程控制

一 . 运算符以下列出 Dart 的运算符,从高到低按照优先级排列:描述运算符一元运算符(后置)expr++ expr-- () [] . ?.一元运算符(前置)-expr !expr ~expr ++expr --expr乘法运算符* / % ~/加法运算符+ -按位运算符<< >>按位与&按...

2019-10-30 16:04:49 838

原创 Dart:2.通过一个简单程序来理解Dart基础语法

一 . 一个简单的 Dart 程序// 这是程序执行的入口。main() { var number = 42; // 定义并初始化一个变量。 printNumber(number); // 调用一个方法。}// 定义个方法。printNumber(num aNumber) { print('The number is $aNumber.'); // 在控制台打印内...

2019-10-25 16:26:57 278

原创 Dart:1.Dart开发环境配置

一 . Windows 环境1 . choco 安装 Dart SDK建议直接使用 choco 安装,关于 choco 如何使用可以参照 https://chocolatey.org/官方文档地址:https://dart.dev/get-dart#install-using-chocolatey安装稳定版本:choco install dart-sdk安装开发版本:choco i...

2019-10-24 17:56:12 532

原创 SpringBoot:2.SpringBoot整合Thymeleaf模板引擎渲染web视图

在Web开发过程中,Spring Boot可以通过@RestController来返回json数据,那如何渲染Web页面?Spring Boot提供了多种默认渲染html的模板引擎,主要有以下几种:ThymeleafFreeMarkerVelocityGroovyMustacheSpring Boot 推荐使用这些模板引擎来代替 Jsp,Thymeleaf 只是其中一种,下面我们来...

2019-10-16 12:32:04 274

原创 SpringBoot:1.开启SpringBoot之旅

什么是 Spring BootSpring Boot是Spring团队设计用来简化Spring应用的搭建和开发过程的框架。该框架对第三方库进行了简单的默认配置,通过Spring Boot构建的应用程序只需很少的Spring配置即可快速的运行起来。使用 Spring Boot 好处简单、快速、便捷。搭建普通Spring Web项目项目的一般流程:配置web.xml,整合Spring和S...

2019-10-12 09:13:50 292

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除