spring boot
文章平均质量分 73
梦想画家
开源软件爱好者,乐于博客分享,业余时间喜欢跑步和科幻,希望与意趣相投朋友一起学习交流。
展开
-
使用GSON把数据保存为json格式文件
当然也可以存储自定义类型对象为json格式。}}}如果字段标记为transient,gson默认会忽略,json序列化和反序列化过程中不会包括该字段。因此输出中没有出现nationality字段。{"id":1}如果需要保留null字段,请继续往下浏览。本文介绍使用gson库把java不同数据类型序列化为json文件。原创 2022-11-23 17:36:04 · 2336 阅读 · 0 评论 -
Spring集成Apache Kafka教程
前面介绍了发送、接收字符串消息,我们可以发送接收自定义java对象。这选哟配置相应序列化和反序列类。}@Bean// ...}@Bean}@Bean// ...props,}@Bean}}为了反序列化接收的消息,需要给消费者提供自定义MessageConverter.在后台,MessageConverter依赖于Jackson2JavaTypeMapper。我们还需要提供反向映射信息。原创 2022-09-23 15:50:44 · 2395 阅读 · 0 评论 -
Spring 5 WebFlux入门教程
WebFlux是Spring 5 新增特性,提供响应式web应用。本文我们利用RestController 和 WebClient组件实现简单的响应式Restful应用。Spring WebFlux FrameworkWebFlux内部使用Project Rector并实现了——Flux 和 Mono 。新的框架支持两种编程模型:基于注解方式响应式组件函数式路由和处理本文聚焦基于注解响应式组件。我们需要增加 spring-boot-starter-webflux 依赖,它自动拉取其他依赖.原创 2021-06-20 16:57:40 · 1376 阅读 · 0 评论 -
Spring Boot应用利用Redis实现频率限制
本文我们演示如何构建产品级的频率限制特性,在Spring Boot应用中使用使用Redis 和 Spring data Redis模块。频率限制通常用于API请求的节流。频率限制频率限制就是要限制在给定时间内对特定服务的请求次数。对于产品级的API通常会限制没人每小时的调用次数。下面举例说明:特定手机在一小时内允许 5 个OTP(One-Time Password)网站允许每小时5次忘记密码使用给定API KEY允许20次请求博客站点允许用户(或IP地址)每分钟发布最多1个评论Red.原创 2021-06-05 17:38:13 · 1175 阅读 · 1 评论 -
Spring启动时运行自定义业务
在Spring应用启动时运行自定义业务的场景很常见,但应用不当也可能会导致一些问题。基于Spring控制反转(Inverse of Control)功能用户几乎不用干预bean实例化过程,对于自定义业务则需要控制部分流程及容器,因此值得须特别关注。1. Spring启动时运行自定义业务我们不能简单包括自定义业务在bean的构造函数或在实例化任何对象之后调用方法,这些过程不由我们控制。请看示例:@Componentpublic class InvalidInitExampleBean { @原创 2021-04-07 17:39:55 · 515 阅读 · 1 评论 -
如何从Spring Boot属性文件中读取信息
主要有三种方式从application.properties属性文件中读取信息。分别为使用@value注解,使用@ConfigurationProperties注解,以及使用Environment 对象。使用@Value注解创建一个Spring Boot项目,在属性文件application.properties中加入下列内容:email.username=testUseremail.pwd=12345email.retry=3创建java类,并在属性上增加@value注解。@Service原创 2021-03-31 12:09:41 · 200 阅读 · 0 评论 -
Spring Boot 运行初始化代码
实际应用通常需要在应用启动后实现一定业务逻辑,Spring Boot提供了几种方式实现,本文分别进行介绍并对比其中的差异。1. 环境准备Spring Boot是一个开发框架,当启动时需要一定启动时间。如果在任何构造函数中实现一些初始化代码,可能会遇到其依赖的对象还没有被初始化。我们讨论的问题就是在Spring context初始化之后,运行自定义初始化代码。Spring Boot提供了几种方式实现,下面首先搭建一个示例工程。启动类的非常简单:@SpringBootApplicationpubli原创 2020-11-27 16:25:13 · 835 阅读 · 0 评论 -
Spring访问Apache kafka快速入门
Apache kafka是分布式、容错流程处理系统。本文介绍Spring集成Kafka以及其提供对Kafka Java Client Api的抽象封装。Spring Kafka利用KafkaTemplate发送消息,@KafkaListener注解消费消息,从而实现模板化编程模式,简化Java对Kafka交互访问。1. 环境及依赖读者可以参照官网进行安装,也可以通过docker快速搭建。spring-kafka需要pom.xml中增加依赖:<dependency> <gro原创 2020-11-26 16:41:22 · 423 阅读 · 0 评论 -
对比 Netflix Feign 和 OpenFeign
对比 Netflix Feign 和 OpenFeign本文主要描述介绍 Netflix Feign 和 OpenFeign 之间的差异,并比较一下Spring Cloud OpenFeign和使用Spring Cloud Netflix Feign的实现方式。1. FeignFeign提供注解支持,仅通过接口实现客户端,使得写web服务客户端更加容易。最早Feign是有Netflix 公司发布,作为Netflix OSS项目一部分。现在Feign已经是开源项目。1.1 增加依赖首先在pom.xm原创 2020-10-27 11:43:38 · 3313 阅读 · 0 评论 -
介绍 Spring Cloud Zookeeper
介绍 Spring Cloud Zookeeper本文我们介绍Zookeeper如何用作服务发现组件。利用自动配置及绑定Spring环境,Spring Cloud Zookeeper提供了Spring Boot应用对Apache Zookeeper的整合。1. 需求说明为了演示,需要创建两个服务:服务提供者应用服务消费者应用Apache Zookeeper作为服务发现的协调者,安装Apache Zookeeper请参考其官网。2. 注册服务提供者启用服务注册需要增加spring-clou原创 2020-10-25 21:10:16 · 1118 阅读 · 0 评论 -
Spring Boot Actuator自定义健康检查
Spring Boot Actuator自定义健康检查健康检查是Spring Boot Actuator中重要端点之一,可以非常容易查看应用运行至状态。本文在前文的基础上介绍如何自定义健康检查。1. 概述本节我们简单说明下依赖及启用配置,展示缺省健康信息。首先需要引入依赖: compile("org.springframework.boot:spring-boot-starter-actuator")现在通过http://localhost:8080/actuator/health端点进行验证:原创 2020-10-05 21:43:30 · 4388 阅读 · 0 评论 -
Spring Boot 2 Actuator监控系统
Spring Boot 2 Actuator监控系统本文介绍Spring Boot2 Actuator,首先介绍基础概念,接着学习如何使用、配置、扩展这个监控工具。1. 什么是 ActuatorActuator提供产品级的功能特性,使得监控应用、收集指标和流量、数据库状态变得非常简单。该库的主要优势是能够获得产品级工具,无需自己实际实现。主要用于暴露正在运行系统的操作信息,包括健康状态、指标信息、系统及环境信息等。可以使用HTTP或JMX方式进行通信交互。只要加入依赖,默认提供几个健康端点可用,对于原创 2020-10-05 20:57:22 · 1905 阅读 · 1 评论 -
Spring Boot 启用 http2 协议
Spring Boot 启用 http2 协议HTTP2是万维网(WWW)发布的HTTP网络协议主流版本,也是当前HTTP协议的最新版本(1997年发布的HTTP 1.1)。它来源于SPDY协议,最初由谷歌开发。1. HTTP2的优势所有主流的浏览器,如Chrome, Opera, Firefox, Safari, Edge浏览器都支持这个协议。相对于HTTP1.1协议,HTTP2的优势主要包括下面几点。1.1 多路复用和并发性一般渲染HTML页面可能需要JS, CSS,图像等多个资源文件,需要原创 2020-09-02 16:56:30 · 10976 阅读 · 1 评论 -
Jackson 生成xml格式文件
Jackson 生成xml格式文件Jackson是java应用中流行的操作Json工具库,很快成为Java生态中事实标准,Spring boot默认也使用Jackson。从版本2开始,支持json的同时引入成熟的xml实现。1. 环境依赖增加Jackson xml 模块,仅需要一个依赖:<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>原创 2020-08-21 11:50:57 · 10859 阅读 · 2 评论 -
使用Jackson和JSON Pointer查询解析任何JSON节点
使用Jackson和JSON Pointer查询解析任何JSON节点JSON Pointer是字符串表达式,用于标识JSON文档特定节点。RFC 6901规范有定义,用于查询复杂Json文档结构。1.示例Json文档{ "firstName": "John", "lastName": "Doe", "address": { "street": "21 2nd Street", "city": "New York", "postal原创 2020-06-03 18:14:57 · 5468 阅读 · 2 评论 -
使用Spring AMQP进行消息传递
使用Spring AMQP进行消息传递本文讨论使用Spring AMQP框架实现AMQP消息通信。先介绍一些消息通信核心概念,然后通过一个实际示例进行实战。1. 核心概念1.1. 消息传输消息传输是应用间进行消息通信的技术,基于异步消息传输代替基于请求-响应的同步架构。消息的生产者和消费者被中介消息层(也称为消息代理)解耦。消息代理具有消息持久化、消息过滤以及消息转换等特性。消息传递键间...原创 2019-12-15 20:44:43 · 1081 阅读 · 0 评论 -
获取所有spring管理的bean
获取所有spring管理的bean #本文我们探索使用不同的方式获取spring容器中所有bean。## IOC容器 ##bean是基于spring应用的基础,所有bean都驻留在ioc容器中,由容器负责管理bean生命周期有两种方式可以获取容器中的bean:- 使用ListableBeanFactory接口- 使用Spring Boot Actuator## 使用L...原创 2018-05-26 20:52:52 · 10991 阅读 · 0 评论 -
Java System.getProperty 和 System.getenv 区别
Java System.getProperty 和 System.getenv 区别介绍java.lang包在java应用中会自动导入。该包包含很多常用的类,从NullPointException到Object,Math以及String等。java.lang.System类是一个final类,意味这我们不能创建它的实例,因此其所有方法都是static。下面我们说明两个系统方法读取系...原创 2018-08-11 20:46:41 · 7414 阅读 · 2 评论 -
在tomcat中部署spring boot war应用
在tomcat中部署spring boot war应用spring boot是一个约定优于配置框架,让我们快速搭建spring项目。tomcat是最流行java servlet容器之一。 默认情况下,Spring Boot构建了一个独立的Java应用程序,它可以作为桌面应用程序运行,也可以配置为系统服务,但在某些环境中,我们无法独立安装新服务或手动运行应用程序。与独立应用程序相反,Tom...原创 2018-08-12 07:01:04 · 937 阅读 · 0 评论 -
Spring Boot 注解介绍
Spring Boot 注解介绍Spring Boot利用自动配置特性使配置Spring更简单。本文我们介绍org.springframework.boot.autoconfigure 和 org.springframework.boot.autoconfigure.condition 包中的常用注解。1.@SpringBootApplication该注解用于标记Spring Boot应用的...原创 2018-12-08 19:15:56 · 474 阅读 · 0 评论 -
介绍 Spring Boot Starter
介绍 Spring Boot Starter依赖管理是任何复杂项目中的关键部分。手工实现显然是不明智的,你花时间越多,则在项目的其他重要部分时间越少。Spring Boot Starter致力于完美解决这个问题。Starter POM是包括在应用中的一组便利依赖描述。可以一站式获得所有Spring和相关技术库,无需寻找相同的代码,拷贝、粘贴需要载入的依赖描述。Spring Boot 有超过30...原创 2018-12-08 21:39:11 · 1219 阅读 · 0 评论 -
Vue.js 和 spring boot 入门教程
Vue.js 和 spring boot 入门教程本文我们通过示例说明如何整合使用vue和spring boot,示例通过vue渲染单个页面,spring boot作为后端提供数据。为了对比说明,也使用Thymeleaf模板技术渲染页面部分内容。搭建spring boot应用pom.xml使用spring-boot-starter-web 和 spring-boot-starter-thy...原创 2018-12-15 09:55:58 · 2990 阅读 · 0 评论 -
在Spring Boot中使用Flyway迁移数据库
在Spring Boot中使用Flyway迁移数据库第一次总不会是完美的。新系统的数据库结构满足应用,但随着应用深入,需要满足新的需求并增加新的特性。Flyway是实现对数据库结构改变实现版本控制的工具,让你很容易、可靠地迁移至新的版本。本文我们学习在Spring Boot中如何管理数据库的变化。我们新建示例应用进行说明,Spring Boot应用使用MySQL Database &amp;...原创 2019-01-31 15:10:42 · 2244 阅读 · 0 评论 -
介绍 Spring Data Redis
介绍 Spring Data Redis本文介绍介绍 Spring Data Redis,对当前炙手可热的数据结构存储引擎Redis数据库提供了Spring Data访问抽象。Redis是基于key存储数据结构的数据库,可用于持久化数据、缓存以及消息代理等。我们可以使用通用的Spring Data模型(如template),对传统spring data项目的简化。必备依赖gradle 依...原创 2019-02-13 17:58:51 · 611 阅读 · 0 评论 -
Spring Batch 入门教程
spring batch 入门教程Spring Batch用于健壮地执行批处理工作的框架。本文通过实战方式介绍Spring Batch,聚焦案例代码方式进行阐述。当前版本4.1,支持Spring 5 和 java 8 或以上版本。也遵循JSR-352批处理规范。这里详细说明了其应用场景。核心概念及流程Spring batch 遵循作业仓库(job repository)执行调度工作并负责...原创 2019-03-22 18:05:36 · 10233 阅读 · 1 评论 -
Spring Batch 之 Hello World教程
Spring Batch 之 Hello World教程本文我们基于spring boot和spring batch 实现一个简单hello world入门批处理程序。如果你刚刚接触spring batch,这篇教程会让你花最短时间理解spring batch框架。Spring Batch 框架介绍开始代码之前,我们先了解框架中的核心组件,见下图:批处理过程有Job组成,job是封装整...原创 2019-04-01 17:45:35 · 2821 阅读 · 0 评论 -
基于H2实现 Spring Batch应用
基于H2实现 Spring Batch应用上文我们已经学习了Spring batch的入门教程,但没有使用数据库,仅使用内存存储spring batch元信息及执行信息。本文我们学习如何配置数据库运行,为了简化使用h2数据库。需求说明使用数据库保存元信息,可以随时跟踪执行进度,重新执行失败记录。这里使用H2数据库存储。从csv文件中读取信息,每条信息判断是数据库中是否存在,如果存在更新余额...原创 2019-04-03 19:28:55 · 1682 阅读 · 0 评论 -
Spring mvc展示RSS Feed
Spring mvc展示RSS Feed本文介绍如何使用Spring mvc及AbstractRssFeedView 类构建简单Rss Feed。同时实现简单REST API发布feed。1. RSS FeedFeed:信源,理解成信息的源泉,英文是feed。信息发布网站将网站全部或者部分信息整合到一个 RSS 文件中,这个文件就被称之为 feed 。信源中包含的数据都是标准的 XML 格...原创 2019-08-24 21:34:16 · 542 阅读 · 0 评论 -
spring 和 spring boot 中属性配置
spring 和 spring boot 中属性配置本文我们介绍如何在spring中配置和应用属性——通过xml的 或java Configuration 的@PropertySource。在Spring 3.1之前,将新的属性文件添加到Spring中及使用属性值并不是那么灵活和健壮。从Spring 3.1开始,新的Environment 和 PropertySource 抽象已经简化整...原创 2018-05-25 19:41:38 · 2333 阅读 · 0 评论