相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷.我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁多的XML配置内容,替代它的是在pom.xml中引入模块化的Starter POMs,其中各个模块都有自己的默认配置,所以如果不是特殊应用场景,就只需要在application.properties中完成一些属性配置就能开启各模块的应用. 在之前的各篇文章中都有提及关于application.pro…
spring boot / cloud (二十) 相同服务,发布不同版本,支撑并行的业务需求 有半年多没有更新了,按照常规剧本,应该会说项目很忙,工作很忙,没空更新,吧啦吧啦,相关的话吧, 但是细想想,是真的么?,忙到这几个字都没时间打么?毕竟大家都很忙的,所以忙并不是啥理由. 那是因为啥呢?感觉就只有一个理由能站得住脚了,就是因为"懒". 哈哈.... 尬聊了一段,活跃下气氛,下面进入正题 场景 在实际工作中,大家可能也都遇到过这样的情况 : 一个正在更新迭代过程中项目,会收到大量业…
Actuator 简介 Actuator 是 Spring Boot 提供的对应用系统的自省和监控功能.通过 Actuator,可以使用数据化的指标去度量应用的运行情况,比如查看服务器的磁盘.内存.CPU等信息,系统的线程.gc.运行状态等等. Actuator 通常通过使用 HTTP 和 JMX 来管理和监控应用,大多数情况使用 HTTP 的方式. Actuator 端点说明 端点 描述 auditevents 获取当前应用暴露的审计事件信息 beans 获取应用中所有的 Spring Bea…
在上篇博客初识Spring Boot框架中我们初步见识了SpringBoot的方便之处,很多小伙伴可能也会好奇这个Spring Boot是怎么实现自动配置的,那么今天我就带小伙伴我们自己来实现一个简单的Spring Boot 自动配置的案例,看看这一切到底是怎么发生的. 假设我的需求是这样的:当我的项目中存在某个类的时候,系统自动为我配置该类的Bean,同时,我这个Bean的属性还可以在application.properties中进行配置,OK,就这样一个需求,我们来看看怎么实现. 新建sta…
在 Redis 出现之前,我们的缓存框架各种各样,有了 Redis ,缓存方案基本上都统一了,关于 Redis,松哥之前有一个系列教程,尚不了解 Redis 的小伙伴可以参考这个教程: Redis 教程合集 使用 Java 操作 Redis 的方案很多,Jedis 是目前较为流行的一种方案,除了 Jedis ,还有很多其他解决方案,如下: 除了这些方案之外,还有一个使用也相当多的方案,就是 Spring Data Redis. 在传统的 SSM 中,需要开发者自己来配置 Spring Data…
在之前的所有Spring Boot和Spring Cloud相关博文中,都会涉及Spring Boot工程的创建.而创建的方式多种多样,我们可以通过Maven来手工构建或是通过脚手架等方式快速搭建,也可以通过<Spring Boot快速入门>一文中提到的SPRING INITIALIZR页面工具来创建,相信每位读者都有自己最喜欢和最为熟练的创建方式. 本文我们将介绍嵌入的Intellij中的Spring Initializr工具,它同Web提供的创建功能一样,可以帮助我们快速的构建出一个基础的…
快速入门 本章主要目标完成Spring Boot基础项目的构建,并且实现一个简单的Http请求处理,通过这个例子对Spring Boot有一个初步的了解,并体验其结构简单.开发快速的特性. 系统要求: Java 7及以上 Spring Framework 4.1.5及以上 本文采用Java 1.8.0_73.Spring Boot 1.3.2调试通过. 使用Maven构建项目 通过SPRING INITIALIZR工具产生基础项目 访问:http://start.spring.io/ 选择构建工…
集群现在越来越常见,当我们项目搭建了集群,就会产生session共享问题.因为session是保存在服务器上面的.那么解决这一问题,大致有三个方案,1.通过nginx的负载均衡其中一种ip绑定来实现(通过ip绑定服务器其中一台,就没有集群概念了):2.通过cookie备份session实现(因为cookie数据保存在客户端,不推荐;3.通过redis备份session实现(推荐); 学习本章节之前,建议依次阅读以下文章,更好的串联全文内容,如已掌握以下列出知识点,请跳过: SpringBoot(…
elk 简介 Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash是一个完全开源的工具,他可以对你的日志进行收集.过滤,并将其存储供以后使用(如,搜索). Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总.分析和搜索重要数据日志. elk下载安装 elk…
下面针对该Controller编写测试用例验证正确性,具体如下.当然也可以通过浏览器插件等进行请求提交验证. @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = MockServletContext.class) @WebAppConfiguration public class ApplicationTests { private MockMvc mvc; @Before publi…
首先,回顾并详细说明一下在快速入门中使用的@Controller.@RestController.@RequestMapping注解.如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建议先看一下快速入门的内容. @Controller:修饰class,用来创建处理http请求的对象 @RestController:Spring4之后加入的注解,原来在@Controller中返回json需要@ResponseBody来配合,如果直接用@RestController替代@Contro…
前言 需要把Web应用做成无状态的,即服务器端无状态,就是说服务器端不会存储像会话这种东西,而是每次请求时access_token进行资源访问.这里我们将使用 JWT 1,基于散列的消息认证码,使用一个密钥和一个消息作为输入,生成它们的消息摘要.该密钥只有服务端知道.访问时使用该消息摘要进行传播,服务端然后对该消息摘要进行验证. 认证步骤 客户端第一次使用用户名密码访问认证服务器,服务器验证用户名和密码,认证成功,使用用户密钥生成JWT并返回 之后每次请求客户端带上JWT 服务器对JWT进行验证…
测试 测试代码如下: @Component public class AppRunner implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(AppRunner.class); private final GitHubLookupService gitHubLookupService; public AppRunner(GitHubLookupService git…
前言 前面我们将 Redis 集成到工程中来了,现在需要用它来做点实事了.这次为了解决分布式系统中的 session 共享的问题,将 session 托管到 Redis. 正文 引入依赖 除了上篇文章中引入 spring-boot-starter-data-redis,还需要 spring-session 依赖: <dependency> <groupId>org.springframework.session</groupId> <artifactId>s…
一.多线程 Springt通过任务执行器(TaskExecutor)来实现多线程和并发编程.使用ThreadPoolTaskExecutor可实现一个基于线程池的TaskExecutor.而实际开发中任务一般是非阻碍的,即异步的,所以我们要在配置类中通过@EnableAsync 开启对异步任务的支持,并通过实际执行Bean的方法中使用@Async注解来声明其是一个异步任务. 示例: 1.配置类. package com.ecworking.async; import org.springfram…
Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一 Spring Boot.Spring MVC 和 Spring 有什么区别? SpringFrame SpringFramework 最重要的特征是依赖注入.所有 SpringModules 不是依赖注入就是 IOC 控制反转. 当我们恰当的使用 DI 或者是 IOC 的时候,我们可以开发松耦合应用.松耦合应用的单元测试可以很容易的进行. SpringMVC Spring…
本文是 Spring Boot 整合数据持久化方案的最后一篇,主要和大伙来聊聊 Spring Boot 整合 Jpa 多数据源问题.在 Spring Boot 整合JbdcTemplate 多数据源.Spring Boot 整合 MyBatis 多数据源以及 Spring Boot 整合 Jpa 多数据源这三个知识点中,整合 Jpa 多数据源算是最复杂的一种,也是很多人在配置时最容易出错的一种.本文大伙就跟着松哥的教程,一步一步整合 Jpa 多数据源. 工程创建 首先是创建一个 Spring B…
这篇文章是松哥的原创,但是在第一次发布的时候,忘了标记原创,结果被好多号转发,导致我后来整理的时候自己没法标记原创了.写了几百篇原创技术干货了,有一两篇忘记标记原创进而造成的一点点小小损失也能接受,不过还是要和小伙伴们说明一下. 在传统的单服务架构中,一般来说,只有一个服务器,那么不存在 Session 共享问题,但是在分布式/集群项目中,Session 共享则是一个必须面对的问题,先看一个简单的架构图: 在这样的架构中,会出现一些单服务中不存在的问题,例如客户端发起一个请求,这个请求到达 Ng…
二十六:Struts2 和 spring整合 将项目名称为day29_02_struts2Spring下的scr目录下的Struts.xml文件拷贝到新项目的scr目录下 在新项目的WebRoot---->WEB-INF目录下新建一个目录lib,用于存放jar包(Struts2和spring整合所需jar包) 将项目名称为day29_02_struts2Spring,WebRoot---->WEB-INF下的lib目录下的所有jar包拷贝到新项目对应的位置,同时将spring的配置文件appl…
简介 定时任务是后端开发中常见的需求,主要应用场景有定期数据报表.定时消息通知.异步的后台业务逻辑处理.日志分析处理.垃圾数据清理.定时更新缓存等等. Spring Boot 集成了一整套的定时任务工具,让我们专注于完成逻辑,剩下的基础调度工作将自动完成. 通用实现方式 实现方式 描述 java.util.Timer Timer 提供了一个 java.util.TimerTask 任务支持任务调度.该方式只能按指定频率执行,不能在指定时间运行.由于功能过于单一,使用较少. Quartz Quar…
前言 最近几篇文章将围绕消息中间件RabbitMQ展开,对于RabbitMQ基本概念这里不阐述,主要讲解RabbitMQ的基本用法.Java客户端API介绍.spring Boot与RabbitMQ整合. Spring Boot与RabbitMQ整合源码分析. RabbitMQ安装 在使用消息中间件RabbitMQ之前就是安装RabbitMQ. 安装erlang:yum install erlang 下载RabbitMQ安装包: https://www.rabbitmq.com/releases…
关于多数据源的配置,前面和大伙介绍过 JdbcTemplate 多数据源配置,那个比较简单,本文来和大伙说说 MyBatis 多数据源的配置. 其实关于多数据源,我的态度还是和之前一样,复杂的就直接上分布式数据库中间件,简单的再考虑多数据源.这是项目中的建议,技术上的话,当然还是各种技术都要掌握的. 工程创建 首先需要创建 MyBatis 项目,项目创建和前文的一样,添加 MyBatis. MySQL 以及 Web 依赖: 项目创建完成后,添加 Druid 依赖,和 JdbcTemplate 一…
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Java Spring Boot VS .NetCore (三)Ioc容器处理 Java Spring Boot VS .NetCore (四)数据库操作 Spring Data JPA vs EFCore Java Spring Boot VS .NetCore (五)MyBatis vs EFCore…
spring boot / cloud (二) 规范响应格式以及统一异常处理 前言 为什么规范响应格式? 我认为,采用预先约定好的数据格式,将返回数据(无论是正常的还是异常的)规范起来,有助于提高团队间接口对接的效率(前端和后端,后端和后端等). 思路 自定义统一的ResposeBody类 : 用于统一响应格式 自定义统一的Error类 : 用于统一异常格式 自定义异常 : 区分不同场景的异常 实现ExceptionHandler : 用于拦截处理异常 实现 1.创建ErrorResult类 p…
最近在跟着程序员DD的Spring boot教程系列学习Spring boot,由于年代原因,Spring boot已经发生了一些变化,所以在这里进行一些补充. 补充的知识大多来自评论区,百度,StackOverFlow 重要提示 阅读本文前请打开程序员DD的Spring boot教程系列 Spring Boot快速入门 如果你使用Intellij-idea的话,可以直接通过File-New-Project-Spring Initializr 操作新建项目,会比导入从网站生成的Maven dem…
Spring Boot 2 (二):Spring Boot 2 动态 Banner Spring Boot 2.0 提供了很多新特性,其中就有一个小彩蛋:动态 Banner. 一.配置依赖 使用 Spring Boot 2.0 首先需要将项目依赖包替换为刚刚发布的 2.0 RELEASE,现在网站https://start.spring.io/也将 Spring Boot 2.0 设置为默认版本. <parent> <groupId>org.springframework.boot…
Spring Boot 系列教程: Spring Boot:快速入门教程 Spring Boot:整合Swagger文档 Spring Boot:整合MyBatis框架 Spring Boot:实现MyBatis分页 Spring Boot:集成Druid数据源 Spring Boot:实现MyBatis动态数据源 Spring Boot:实现MyBatis动态创建表 Spring Boot:整合JdbcTemplate Spring Boot:整合Spring Data JPA Spring…
Spring Boot (二):模版引擎 Thymeleaf 渲染 Web 页面 在<Spring Boot(一):快速开始>中介绍了如何使用 Spring Boot 构建一个工程,并且提供 RESTful API ,本节我们继续介绍如何使用 Spring Boot 渲染 Web 页面. 1. 什么是 Thymeleaf ? 虽然我们目前拥有许多十分优秀的前端框架,例如: Vue . React 等,非常适用于前后端分离的场景,前端可以独立部署成为服务,前后端从物理上完全进行隔离,降低程序耦合…
前言 在 Spring Boot 中已经移除了 web.xml 文件,如果需要注册添加 Servlet.Filter.Listener 为 Spring Bean,在 Spring Boot 中有两种方式: 使用 Servlet 3.0 API 的注解 @WebServlet.@WebFilter.@Listener 用来配置. Spring Boot JavaConfig 注解配置 Bean 的方式来进行配置. 注册之前 在使用 Servlet 时,需要在 Spring Boot 入口类添加…
Logback 简介 Logback 是由 SLF4J 作者开发的新一代日志框架,用于替代 log4j. 主要特点是效率更高,架构设计够通用,适用于不同的环境. Logback 分为三个模块:logback-core,logback-classic和logback-access. logback-core 模块是其他两个模块的基础. logback-classic 模块是 core 的扩展,是log4j的改进版.logback-classic 本身实现了 SLF4J API,因此可以很容易的在…