Spring Boot

如何正确使用 Spring Cloud?【下】

故事扮演 提交于 2020-11-24 19:03:18
5. Spring Cloud 如何融合 DevOps? 接下来,我们来了解一下 Spring Cloud 在与 DevOps 融合方面可以做哪些事情,它是如何让应用持续交付更加快捷的?我们都知道,DevOps 打造了一套持续交付的流程,包括:开发、编译、测试、发布、运营等节点。如何让应用更顺畅地通过上述各个节点呢?Spring Cloud 可以在每个研发节点上做一些配合和优化: 开发环节,我们大家应该都试用过 Spring Initializer 创建过 Spring Boot 项目工程,除此之外我们还可以借助 Maven Archetype 来快速生成项目工程。Archetype 是 Maven 工程的模板工具包,一个 Archetype 定义了某种类型项目的基本骨架,借助它尽可能快地给用户提供示例工程。 测试环节,微服务通常对外提供 RESTful API,供各种类型客户端调用,而以往我们需要借助文档来记录这些 API 信息,以便其他人员查阅和测试。如果 API 发生了改变,那我们就需要同步更新文档,这会降低持续交付的效率,而 Swagger 可以帮我们自动生成 API 在线文档,与代码实现保持同步。在此基础上,我们还可以对 API 进行自动化测试。通过 Spring Boot 集成 Swagger,让接口测试变得更加自动化。 发布环节,使用 Spring Boot

SpringBoot 2.2和2.3异常处理的一个小变化,异常message没有打印出来

一笑奈何 提交于 2020-11-24 13:31:39
对比一下,能看出来在2.3.0的时候,异常message没有打印出来。 2.3.0新增了一个配置项server.error.includeMessage,默认是NEVER,因此默认是不是输出message的,只要开启就可以了。 当开启以下参数的时候: server : error : includeException : true includeStacktrace : ALWAYS includeMessage : ALWAYS 输出结果: { "timestamp" : "2020-08-16T05:09:23.983+00:00" , "status" : 500 , "error" : "Internal Server Error" , "exception" : "java.lang.RuntimeException" , "trace" : "java.lang.RuntimeException: 服务端异常,请稍后再试!\r\n\tat com.github.xjs.error.controller.DemoController.hello(DemoController.java:10)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect

SpringBoot参数非空校验的非最优实现历程

Deadly 提交于 2020-11-24 06:27:20
  SpringBoot参数非空校验在网上已经有很多资料了,自己最近要实现这一个功能,大概看了下觉得没什么难度,不想在过程中还是遇到了一些问题,在此记录,希望有遇到和我一样问题的人和过路大神不吝指教。   需求是做一个全局请求参数非空校验和异常拦截,spring提供的@Validated和Hibernate提供的@Valid目前不支持请求参数为基本类型的非空判断,只能是请求参数封装为对象时,判断对象属性非空,所以要自己实现一个对基本类型的非空判断。   首先说下网上原创转载最多的一个思路:实现一个指向方法的注解,注解中创建一个String[]属性,用来存放方法中需要非空判断的参数的名称 -----> 创建AOP,切点为注解的方法,增强方法中拿到注解中的String[],然后遍历判断是否为空,如果为空则抛出一个自定义异常 -----> 实现一个全局异常处理类,捕获抛出的自定义异常,进行后续处理。   首先说下根据这个思路的实现非常简单,也很实用,只是有两个吹毛求疵的问题。第一,注解需要写成@CheckParam({param1,param2})这样的形式加在方法上,还需要手动写param1,param2这样的要进行非空判断的参数的名称,而不是像@RequestParam注解直接加在参数上就OK了。第二,@RequestParam注解本身会判断非空,一起使用时,自己的注解无效。  

SpringBoot+MyBatis配置多数据源

北战南征 提交于 2020-11-24 04:47:57
SpringBoot 可以支持多数据源,这是一个非常值得学习的功能,但是从现在主流的微服务的架构模式中,每个应用都具有唯一且准确的功能,多数据源的需求很难用到,考虑到实际情况远远比理论复杂的多,这里还是深入学习一个Mybatis的多数据源的配置,代码偏向于实战,提供Git地址,以供下载测试. https://gitee.com/zhoutao825638/Sprinboot_mybatis_ds.git <!--more--> 数据库脚本 我们首先声明记录一下数据库脚本创建了两个数据库,test1和test2 ,并且分别在不同的数据库中创建了student和lesson表. CREATE DATABASE `test1` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; ; USE `test1`; CREATE TABLE `student`( `id` VARCHAR(12) PRIMARY KEY, `name` VARCHAR(36) NOT NULL , `age` INTEGER DEFAULT 0 ); -- 插入数据 INSERT INTO test1.student (id, name, age) VALUES ('1', '张梦为', 1); INSERT INTO test1.student (id,

补习系列(14)-springboot redis 整合-数据读写

跟風遠走 提交于 2020-11-24 03:55:46
[TOC] 一、简介 在 补习系列(A3)-springboot redis 与发布订阅 一文中,我们介绍了使用 Redis 实现消息订阅发布的机制,并且给出了一个真实用例。 然而,绝大多数场景下 Redis 是作为缓存被使用的(这是其主要优势)。除此之外,由于Redis 提供了 AOF以及RDB两种持久化机制,某些情况下也可以作为临时数据库使用。 本次将介绍 SpringBoot 中如何使用 Redis 进行缓存读写。 Redis 的基本命令 在学习之前,需要先了解一些Redis 的基本命令,可以 参考这里 http://www.redis.cn/ 二、SpringBoot Redis 读写 A. 引入 spring-data-redis 添加依赖 <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>${spring-boot.version}</version> </dependency> spring-boot-starter-redis在1.4版本已经废弃 配置redis连接 application.properties # redis 连接配置

CKEditor 5 + SpringBoot实战(五):SpringBoot & Freemarker整合

对着背影说爱祢 提交于 2020-11-24 03:31:05
在本系列的文章中,我将介绍如何在Spring Boot Application中使用CKEditor编辑器。介绍的内容包括基本环境的搭建,文件上传,SpringData JPA数据持久化,CKEditor5的安装,CKEditor图片上传,CKEditor插入视频,获取/设置CKEditor内容等。 项目源码 本系列文章的项目源码同步更新至 码云 和 Github ,你可以任选其一下载源码到本地。项目地址如下: 码云: https://gitee.com/ramostear/CKEditor5-SpringBoot Github: https://github.com/ramostear/CKEditor5-SpringBoot 你也可以通过Git命令行工具下载项目源码,命令如下(二者任选其一): git clone https://gitee.com/ramostear/CKEditor5-SpringBoot.git git clone https://github.com/ramostear/CKEditor5-SpringBoot.git FreeMarker Apache FreeMarker是一个基于Java语言开发的模板引擎,用于根据模板和不断变化的数据生成文本输出(例如:HTML网页,电子邮件,配置文件,源代码等)。FreeMarker模板使用FTL模板语言编写

boke练习: springboot整合springSecurity出现的问题,post,delete,put无法使用

眉间皱痕 提交于 2020-11-24 03:03:18
springboot 与 SpringSecurity整合后,为了防御csrf攻击,只有GET|OPTIONS|HEAD|TRACE|CONNECTION可以通过。 其他方法请求时,需要有token 解决方法: 1,支持post的方法: 1,如果使用freemarker模板 在form里添加<input type="hidden" name="${_csrf.parameterName}" value="_csrf.token"> 2,使用ajax时 $.ajax({ url:"/manager", type:"POST", data:{ "${_csrf.parameterName}":"${_csrf.token}", //其他的数据 } }) 2,支持delete,put的方法: 在支持post的基础上, $.ajax({ url:"/manager", type:"POST", data:{ "${_csrf.parameterName}":"${_csrf.token}", _method:"DELETE", /添加了这个,在后端就可以使用delete方法接收请求了,实现restful //其他的数据 } }) 二、当开启CSRF后,原来以Get方式,调用/logout,退出登录状态的功能失效了,跳转后报404错误。 1、查看源码,发现框架方法里做了备注

SSM框架和微服务构架和的联系与区别

久未见 提交于 2020-11-24 02:58:48
spring和springMvc: 1. spring是一个一站式的轻量级的java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(springMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案; 2. springMvc是spring基础之上的一个MVC框架,主要处理web开发的路径映射和视图渲染,属于spring框架中WEB层开发的一部分; springMvc和springBoot: 1. springMvc属于一个企业WEB开发的MVC框架,涵盖面包括前端视图开发、文件配置、后台接口逻辑开发等,XML、config等配置相对比较繁琐复杂; 2. springBoot框架相对于springMvc框架来说,更专注于开发微服务后台接口,不开发前端视图,同时遵循默认优于配置,简化了插件配置流程,不需要配置xml,相对springmvc,大大简化了配置流程; springBoot和springCloud: 1. spring boot使用了默认大于配置的理念,集成了快速开发的spring多个插件,同时自动过滤不需要配置的多余的插件,简化了项目的开发配置流程,一定程度上取消xml配置,是一套快速配置开发的脚手架,能快速开发单个微服务; 2. spring cloud大部分的功能插件都是基于springBoot去实现的

spring boot 项目打成war包部署到服务器

匆匆过客 提交于 2020-11-24 00:02:44
这是spring boot学习的第二篇了,在上一篇已经整合了spring boot项目了,如果还有小伙伴没有看得可以先去看第一篇 基础整合spring boot项目 到这里的小伙伴应该都是会整合基本的spring boot项目 ,并且可以在本地工具上运行访问了,如果还做不到的,说明你没有用心哦o( ̄ヘ ̄o#) 现在断断续续好像spring boot的名气越来越大了,好像是不会都说不过去了o( ̄ヘ ̄o#)o( ̄ヘ ̄o#) 这几天特地把日常工作做完以后,看了一番spring boot 的资料,再次整理了一番,写出案例,以供大家一起学习; 本来以为都已经把案例写出来了。而且运行出来了,至于打包部署应该是不费吹灰之力的吧O(∩_∩)O哈哈~。。。。。。。。 结果出人意料哈。硬是一个从idea中打包发布的问题搞了几个小时,可能我比较菜^_^,我用的是idea编辑器,所以没研究eclipse的打包方式了。毕竟个人感觉整合spring boot项目的话。还是idea比较快速简单! 首先把项目运行了几次。确保没有问题。是吧,总不能本来项目就跑不起来,你还拿去打包吧。那不是自己没事找事么? 然后, 第一步: 既然是用idea打包发布spring boot项目,那自然首先应该是去找找资料对吧。可别说,找了这些资料,都写的什么乱七八糟的呀,几乎没啥完整的案例。坑很多! 使用idea整合的spring

springBoot01-helloworld-完成一个简单的RESTful API

孤者浪人 提交于 2020-11-23 23:58:11
1、访问 http://start.spring.io/ 2、选择构建工具Maven Project、Spring Boot版本 2.0.1,以及一些工程基本信息 ,最后点击Generate Project生成项目 3.下载后解压,导入maven项目: 项目结构如下(controller和domain包是后加的):需要注意的是,自己新建的包,必须放在 项目入口类Springboot01Application 所在包的里面! 如上图所示,Spring Boot的基础结构共三个文件: src/main/java 程序开发以及主程序入口 src/main/resources 配置文件 src/test/java 测试程序 另外,spingboot建议的目录结果如下: 假设root package结构为: com.example.myproject ,那么包和类的层级关系按照如下约定来建立!这一点很重要,否则你的应用可能起不来! com +- example +- myproject +- Application.java | +- domain | +- Customer.java | +- CustomerRepository.java | +- service | +- CustomerService.java | +- controller | +-