Spring
文章平均质量分 54
__HelloWorld__
这个作者很懒,什么都没留下…
展开
-
JAVA注解
Java注解Annotations主要用于为目标程序提供额外补充的说明信息。注解以@符号标识注解并不改变编译程序的行为注意可以为程序元素:实例变量、构造方法、方法或者类添加元数据信息注解并不是单纯的注释,但却可以修改编译器如何来处理目标程序下面我们举例说明,为什么说注解并非单纯的注解,下面这段代码将抛出编译错误,因为我们使用了@Override注解,但却没有Override重写父类方法,而是重载Overload父类方法,因此编译器将抛出编译异常/* Java program to demon原创 2020-07-09 21:47:49 · 572 阅读 · 0 评论 -
Spring Boot 2.0多数据源配置
两个数据库实例,一个负责读,一个负责写。datasource-reader: type: com.alibaba.druid.pool.DruidDataSource url: jdbc:mysql://192.168.43.61:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=tru...原创 2018-09-13 09:57:46 · 619 阅读 · 0 评论 -
Spring Batch简单入门(二)- Job配置
上一章,我们简单介绍了Spring Batch相关知识,今天我们进一步学习有关如何配置一个简单的Job。我们重新看下这张图。 一个Job对应N个Step(N>=1),一个Step包含一个Reader,一个Processor,一个Writer。我们的代码组织如下: 定义ItemReader @Bean @Qualifier("repositoryItemRe...原创 2018-09-10 21:20:04 · 5970 阅读 · 0 评论 -
Spring Batch简单入门(四) - Job启动与监控
接上一章,本章我们介绍Job的启动与监听。Running a JobSpring Boot默认支持自动启动已配置好的Job,我们可以通过配置项**spring.batch.job.enabled=false**来禁止Spring容器自动启动Job。正常情况下,当我们通过调度器调用Job时,整个流程如下: A JobExecution,is the primary storage...原创 2018-09-11 16:21:54 · 7169 阅读 · 0 评论 -
Spring Batch简单入门(三)- ItemReader 与 ItemWriter
接上一章,Spring Batch本身提供了许多开箱即用的ItemReader与ItemWriter实现。Spring Batch 4针对这些组件又提供了Builder实现,用户可以很方便的通过Builder模式来使用这些组件。本章,我们重点讨论以下几种ItemReader和ItemWriter的使用。ItemReaderFlatFileItemReader对于FlatFi...原创 2018-09-11 11:51:35 · 11192 阅读 · 0 评论 -
Spring @Transactional 声明式事务揭秘
本章,我们将深入探讨Spring事务管理,为你揭秘@Transactional注解底层工作原理。JPA和事务管理首先,我们要知道,JPA本身不提供任何声明式事务管理。当我们在任意依赖注入容器外使用JPA时,需要由开发人员以编程方式来处理事务。UserTransaction utx = entityManager.getTransaction(); try { utx....原创 2018-08-23 16:21:35 · 798 阅读 · 1 评论 -
微服务架构中的服务边界与服务识别
前言在我们进行微服务架构设计和改造过程中,一个不可避免的问题是如何确定服务边界、如何进行服务识别,微服务的划分粒度究竟如何确认。我们可能会听到,服务既不能太大,也不能太小,当然这是一个笼统的概念。那么,问题来了,究竟多大是大,多小是小。比如,以下原则是否可行?一个微服务应该包含N行代码将系统中每一个功能都定义为一个服务另外,考虑一个问题:如果服务划分太细,会出现什么问题?...原创 2018-08-23 11:00:22 · 5145 阅读 · 0 评论 -
使用MyBatis-Spring-Boot-Starter快速集成mybatis
MyBatis-Spring-Boot-Starter是什么? The MyBatis-Spring-Boot-Starter help you build quickly MyBatis applications on top of the Spring Boot. MyBatis-Spring-Boot-Starter可以帮助你快速创建基于Spring Boot的MyBat...原创 2018-08-17 14:25:32 · 13935 阅读 · 9 评论 -
基于SpringCloud的微服务架构搭建
在前面的很多章节中,有讨论到关于微服务架构的相关话题,包括服务网关、服务发现、服务熔断等相关话题,本章我们就借助Spring Cloud相关组件,来实现微服务一些基础架构的搭建与应用。 本章涉及的Spring Cloud相关组件包含如下:Config Server:配置中心 Eureka Server:服务注册中心 Zuul Api Gateway:服务网关Hystrix:服务熔断 ...原创 2018-08-10 14:44:12 · 2094 阅读 · 0 评论 -
浅谈服务治理、微服务与服务网格(Service Mesh)
浅谈服务治理、微服务与Service MeshSpring Cloud 之“出身名门望族”作为当下最火热的微服务框架,Spring Cloud的名字可以说是无人不知、无人不晓,凭借之前Spring Framework的良好群众基础和Cloud这个具有时代感的名字,Spring Cloud一出现便被大家认知。 提到Spring Cloud,便会让人想起刚刚发布了2.0版本的Spri...转载 2018-03-29 10:00:26 · 13763 阅读 · 1 评论 -
微服务实战(四):服务发现的可行方案以及实践案例
微服务实战(四):服务发现的可行方案以及实践案例这是关于使用微服务架构创建应用系列的第四篇文章。第一篇介绍了微服务架构的模式,讨论了使用微服务架构的优缺点。第二和第三篇描述了微服务架构内部的通讯机制。这篇文章中,我们将会探讨服务发现相关问题。为什么要使用服务发现?设想一下,我们正在写代码使用了提供RESTAPI或者ThriftAPI的服务,为了完成一次服务请求,代码需要知道服务实例...转载 2018-03-13 22:06:44 · 614 阅读 · 0 评论 -
微服务实战(三):深入微服务架构的进程间通信
微服务实战(三):深入微服务架构的进程间通信【编者的话】这是采用微服务架构创建自己应用系列第三篇文章。第一篇介绍了微服务架构模式,和单体式模式进行了比较,并且讨论了使用微服务架构的优缺点。 第二篇 描述了采用微服务架构应用客户端之间如何采用APIGateway方式进行通信。在这篇文章中,我们将讨论系统服务之间如何通信。 简介在单体式应用中,各个模块之间的调用是通过编程语言级别的方法或...转载 2018-03-13 21:52:19 · 429 阅读 · 0 评论 -
微服务实战(二):使用API Gateway
微服务实战(二):使用API Gateway【编者的话】本系列的第一篇介绍了微服务架构模式。它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选择。 当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互。在单体式程序中,通常只有一组冗余的或者负载均衡的服务提供点。在微服务架构中,每一个微服务暴露一组细粒度的服务提供点。在本篇文章中,我们来看它如何...转载 2018-03-13 21:32:50 · 1109 阅读 · 0 评论 -
微服务实战(一):微服务架构的优势与不足
微服务实战(一):微服务架构的优势与不足【编者的话】本文来自Nginx官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战。正如作者所说,微服务架构更适合用于构建复杂的应用,尽管它也有自己的不足。 这篇文章作者是Chris Richardson,他是早期基于Java的Amazonite EC2 PaaS平台CloudFoundry.com的创始...转载 2018-03-13 20:51:19 · 308 阅读 · 0 评论 -
Spring中事务的propagation配置
配置 说明 备注 REQUIRED 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 Support a current transaction, create a new one if none exists SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。 Support a current trans...原创 2018-03-11 20:39:48 · 310 阅读 · 0 评论 -
微服务实践(七):从单体式架构迁移到微服务架构
微服务实践(七):从单体式架构迁移到微服务架构【编者的话】这是用微服务开发应用系列博客的第七篇也是最后一篇。第一篇中介绍了微服务架构模式,并且讨论了微服架构的优缺点;接续文章讨论了微服务架构不同方面:使用API网关,进程间通信,服务发现,事件驱动数据管理以及部署微服务。本篇,我们将探讨将应用从单体式架构迁移到微服务架构需要考虑的策略。 希望读者通过本系列文章对微服务优缺点有一个比较好的理...转载 2018-03-15 08:58:55 · 286 阅读 · 0 评论 -
微服务实战(六):选择微服务部署策略
微服务实战(六):选择微服务部署策略【编者的话】这篇博客是用微服务建应用的第六篇, 第一篇 介绍了微服务架构模板,并且讨论了使用微服务的优缺点。随后的文章讨论了微服务不同方面:使用API网关,进程间通讯,服务发现和事件驱动数据管理。这篇文章,我们将讨论部署微服务的策略。 动机部署一个单体式应用意味运行大型应用的多个副本,典型的提供若干个(N)服务器(物理或者虚拟),运行若干个(M)...转载 2018-03-15 08:52:40 · 427 阅读 · 0 评论 -
Spring Boot 1.0多数据源配置
在Spring Boot 1.x下,我们的多数据源配置如下:读数据库@Configuration@EnableTransactionManagement@EnableJpaRepositories(entityManagerFactoryRef = "entityManagerFactoryPrimary", transactionManagerRef = "transactionMa...原创 2018-09-13 10:54:58 · 678 阅读 · 0 评论 -
Elastic Job 入门教程(二)— Spring Boot框架下是实现Elastic Job 脚本作业(Script Job)
在Elastic Job 入门教程(一)— 与Spring Boot集成这篇文章中,我们简单介绍了Spring Boot与Elastic Job 的集成,并见简单实现了SimpleJob类型作业。本章,我们介绍Spring Boot框架下如何实现Elastic Job的Script Job类型作业。...原创 2018-09-23 18:46:01 · 1808 阅读 · 0 评论 -
Java之keytool命令学习
Java Keytool is a key and certificate management utility. It allows users to manage their own public/private key pairs and certificates. It also allows users to cache certificates. Java Keytool store...原创 2019-06-20 21:46:54 · 783 阅读 · 0 评论 -
微服务架构特征
一个典型的微服务架构(MSA)通常包含以下组件:客户端身份标识提供者: 提供访问服务所需的身份密钥,服务网关会负责完成对请求客户端的基本验签工作API服务网关: 客户端访问目标服务的入口点,经服务请求经服务网关路由到目标服务提供方。服务网关的优点:服务更新操作对客户端透明服务与服务之间的消息路由协议不一定非得基于WEB服务网关可以统一进行安全授权或者负载均衡等操作消息:...翻译 2019-06-16 16:25:12 · 921 阅读 · 0 评论 -
什么是微服务——微服务架构体系介绍
Why Microservices?回答这个问题前,我们先看下之前大行其道的单体架构 - Monolithic Architecture,对于非专业人士来讲,所谓的单体架构,其就像一个超大容器,容器内集中包含了该应用的所有软件组件,并且组件与组件之间紧密耦合。对于这种架构,其缺陷或者说潜在不足也很明显,简单总结如下:臃肿僵化不灵活: 单体架构很难采用多种技术可靠性较差: 这种架构最明显...翻译 2019-06-15 22:02:08 · 2689 阅读 · 0 评论 -
SpringBoot使用JWT集成Ng-Alain
Ng-Alain与SpringBoot整合其实本身也并不复杂,SpringBoot专注于后台业务实现,而Ng-Alain则专注于前端页面展现。spring initializr新建SpringBoot工程下载Ng-Alain源码,并拷贝至工程的ng_alain目录下,打开_mock目录下各种模拟接口实现,SpringBoot中参考实现相应接口,具体实现可参考源码链接中Github的源码...原创 2018-11-28 11:32:55 · 2471 阅读 · 1 评论 -
SpringBoot【The request was rejected because the URL was not normalized】
SpringBoot整合ng-alain时报错如下:org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL was not normalized. at org.springframework.security.web.firewal...原创 2018-11-27 16:57:06 · 29337 阅读 · 4 评论 -
SpringBoot使用JWT集成Ng-Alain之Token失效处理
在 SpringBoot使用JWT集成Ng-Alain中,我们简单介绍了SpringBoot与Ng-Alain的集成,在这种前后端分离框架实践中,我们使用了JWT来接口安全标识,考虑一个问题,从整个系统的业务实际来看,当Token过期失效之后,我们需要用户重新登录以获取新的Token。在我们的代码实现中,当用户未获取正确的Token或者当Token失效时候,抛出403异常。因此,我们需要修改N...原创 2018-11-29 21:55:11 · 3055 阅读 · 0 评论 -
Ng Alain分页控件的使用
在【Ng Alain】官方示例源码中,关于pagination分页控件的代码如下: <ng-template #pagination> <nz-pagination [nzTotal]="50" [nzPageSize]="5" (nzPageIndexChange)="getData()"&gt原创 2018-11-29 14:49:12 · 3267 阅读 · 1 评论 -
Spring Boot 使用 H2 内存数据库
H2 is one of the popular in memory databases.H2 is a relational database management system written in Java. It can be embedded in Java applications or run in the client-server mode.添加H2 POM依赖&l...原创 2018-11-14 10:37:49 · 2963 阅读 · 0 评论 -
Spring Boot 自动配置(auto-configurtion) 揭秘
本章,我们为你揭秘Spring Boot自动配置(Auto Configuration)运行机制,谈到auto-configuration,肯定离不开@EnableAutoConfiguration注解。package org.springframework.boot.autoconfigure;@Target(ElementType.TYPE)@Retention(RetentionPo...翻译 2018-09-30 13:08:15 · 13772 阅读 · 2 评论 -
YAML - Spring Boot 下更好的配置选择?
YAML an alternative to Properties file … with Spring Boot对于许多Java工程师来说,一直习惯于使用properties文件或者xml文件来定义应用程序配置。但SpringBoot允许我们仅通过单个yml文件就可以完成所有与应用相关的配置。补充说明一下:比较不同格式的配置文件的优劣,都会有一定的主观性。但对于SpringBoot配置来说...翻译 2018-09-29 16:02:36 · 1231 阅读 · 0 评论 -
Elastic Job 入门教程系列
Elastic Job 入门教程(一)— 与Spring Boot集成Elastic Job 入门教程(二)— Spring Boot框架下是实现Elastic Job 脚本作业(Script Job)Elastic Job 入门教程(三)— 作业监听Elastic Job 入门教程(四)— 事件追踪Elastic Job 入门教程(五)— 配置Zookeeper集群注...原创 2018-09-28 13:38:31 · 2915 阅读 · 0 评论 -
Elastic Job 入门教程(六)— “动态”新增脚本类型作业(Script Job)
在Elastic Job 入门教程(二)— Spring Boot框架下是实现Elastic Job 脚本作业(Script Job)中,我们简单介绍了如何在SpringBoot框架下以注解的方式实现脚本类型作业(Script Job),这里我们要提出一个问题?如何在不修改源码的情况下,仅通过增加配置就可以达到新增一个脚本类型的作业?这是有意义的,因为在实际的业务场景中,我们不可能只有一个...原创 2018-09-27 21:55:58 · 1549 阅读 · 0 评论 -
Elastic Job 入门教程(五)— 配置Zookeeper集群注册中心
在我们之前的示例中,注册中心配置ZookeeperConfiguration中的serverLists配置属性,我们都是使用的Zookeeper单服务器reg-center: server-list: "192.168.43.61:2181" namespace: elastic-job-lite-spring-bootserverLists属性本身是支持多个地址,如: host1:...原创 2018-09-27 15:37:10 · 8677 阅读 · 6 评论 -
Elastic Job 入门教程(四)— 事件追踪
Elastic-Job提供了事件追踪功能,用于查询、统计和监控作业执行历史和执行状态。Elastic-Job-Lite在配置中提供了JobEventConfiguration,目前支持数据库方式配置。事件追踪所配置的DataSource数据库中会自动创建JOB_EXECUTION_LOG和JOB_STATUS_TRACE_LOG两张表以及若干索引。以下是代码示例:定义数据源@Getter@S...原创 2018-09-26 10:44:34 · 4808 阅读 · 3 评论 -
约定由于配置(Convention over Configuration)
###约定优于配置约定优于配置(convention over configuration)[1],也称作按约定编程[2],是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。只有在偏离这一约定时,例如将该表命名为"produc...转载 2018-09-25 21:02:59 · 689 阅读 · 0 评论 -
Elastic Job 入门教程(三)— 作业监听
接Elastic Job 入门教程(二)— Spring Boot框架下是实现Elastic Job 脚本作业(Script Job),本章我们讨论作业Job的监听。定义监听器@Component@Slf4jpublic class CommonElasticJobListener implements ElasticJobListener { @Override publ...原创 2018-09-24 21:06:16 · 1510 阅读 · 0 评论 -
微服务实践(五):微服务的事件驱动数据管理
微服务实践(五):微服务的事件驱动数据管理【编者的话】本文是使用微服务创建应用系列的第五篇文章。第一篇文章介绍了微服务架构模式,并且讨论了使用微服务的优缺点;第二和第三篇描述了微服务架构模块间通讯的不同方面;第四篇研究了服务发现中的问题。本篇中,我们从另外一个角度研究一下微服务架构带来的分布式数据管理问题。 1.1 微服务和分布式数据管理问题单体式应用一般都会有一个关系型数据库,...转载 2018-03-15 08:39:16 · 335 阅读 · 0 评论 -
JWT(JSON Web Tokens)在Spring 微服务中的应用
关于JWT,之前的文章详细介绍,本篇我们将介绍JWT在Spring微服务中的应用。工作流程首先,客户端通过用户名和密码发起请求到开放接口,服务端收到请求之后,对用户名和密码进行验证,验证通过之后,生成JWT并响应给客户端。客户端收到服务器响应之后,将JWT保存到本地,后续客户端的所有请求的HTTP Header都将包含此Token信息,进而服务器端可以对所有请求进行授权验证。JWT的生成与验证pub原创 2017-12-04 21:07:32 · 791 阅读 · 0 评论 -
@Controller vs @RestController
@Controller用于标记一个类,使用它标记的类就是一个SpringMVC Controller对象。@RestController = @Controller + @ResponseBody @Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Controller @ResponseBody public @inter原创 2017-11-24 21:31:12 · 385 阅读 · 0 评论 -
SpringBoot拦截器
SpringBoot拦截器MVCInterceptor原创 2017-09-13 21:18:32 · 334 阅读 · 0 评论 -
Spring RestTemplate Post with Header
SpringRestTemplatePostHeader原创 2017-08-06 21:47:27 · 796 阅读 · 0 评论