Spring
文章平均质量分 55
Spring
陈振阳
我翻开历史一查,这历史没有年代,歪歪斜斜的每页上都写着仁义道德四个字。我横竖睡不着,又仔细看了半夜,才从字缝缝里看出字来。满页都写着两个字是,吃人。
展开
-
Spring Retry # Stateful Retry
Spring Retry中的重试,分为无状态的重试和有状态的重试;简述有状态重试通常是用在message-driven 的应用中,从消息中间件比如RabbitMQ等接收到的消息,如果应用处理失败,那么消息中间件服务器会再次投递,再次投递时,对于集成了Spring Retry的应用来说,再次处理之前处理失败的消息,就是一次重试;也就是说,Spring Retry能够识别出,当前正在处理的消息是否...原创 2019-03-12 19:48:30 · 1132 阅读 · 0 评论 -
Spring RabbitMQ Transaction
For synchronous use cases with RabbitTemplate,the template has been configured with channelTransacted=true.(channelTransacted是否主动ack)@Transactionalpublic void doSomething() { String incoming = r...原创 2020-05-02 23:49:22 · 649 阅读 · 0 评论 -
Spring TransactionStatus#setRollbackOnly
配置Spring事务框架来捕获特定的异常并回滚时不能在service层的方法中使用try catch将异常吃了, 必须catch中最后加上throw new runtimeexcetpion(),这样程序异常时才能被aop捕获进而回滚解决方案:方案1.例如service层处理事务,那么service中的方法中不做异常捕获,或者在catch语句中最后增加throw new RuntimeExc...原创 2019-03-05 15:28:53 · 4728 阅读 · 0 评论 -
Aspectj
aspectj 4 捕获方法上的连接点aspectj 5 捕获异常处理上的连接点aspectj 6 捕获通知上的连接点原创 2019-01-30 12:22:51 · 451 阅读 · 0 评论 -
Spring AOP # Advisor
AdvisorsAdvisor的概念来自Spring AOP,在AspectJ中没有等同的概念。一个Advisor就像一个只有一条Advice的独立的Aspect。这个Advice是Spring IOC中的一个Bean,必须实现Advice Types in Spring中描述的Advice接口的一个。Advisor可以使用AspectJ的pointcut 表达式。Spring使用aop:ad...原创 2019-02-02 00:26:12 · 749 阅读 · 0 评论 -
AspectJ中的类型间声明(成员注入)
在上一篇博客初窥AspectJ中,我们提到AspectJ给java提供了三种新的结构,pointcut,advice以及inter-type declaration(ITD),而且我们通过一个简单的Demo介绍了如何使用pointcut和advice。而本文将介绍inter-type declaration是什么,可以做什么,最后同样会通过一个Demo来介绍如何使用。后文将主要用ITD来表示int...原创 2019-02-01 11:37:01 · 1268 阅读 · 1 评论 -
事务和Java和Hibernete和Spring
MessageChannelMessageChannel that decouples message producers from message consumers.Message channels may or may not buffer messages .public interface MessageChannel { boolean send(Message mess...原创 2019-01-15 19:29:35 · 349 阅读 · 0 评论 -
Spring Framework# @Configurable
我们在使用Spring IOC时,可能需要这样的功能:我么写好的一个类,我们希望在类里面注入一些Spring IOC里的Bean,但是这个类并不被Spring IOC管理,也就是说,我们使用这个类的方式,可能是直接new,也可能是反射实例化一个对象,然后再使用;@Configurable就可以解决上面的问题,开启Spring的LoadTimeWeaving,Spring会使用AspectJ的能力,进原创 2017-11-14 09:14:27 · 3128 阅读 · 2 评论 -
Spring Data # EventPublishingRepositoryProxyPostProcessor
EventPublishingRepositoryProxyPostProcessor是RepositoryProxyPostProcessor的一个实现类,可以可以快速实现DDD中聚合根发送领域事件的功能;AbstractAggregateRoot、AfterDomainEventPublication、DomainEvents一个领域模型中需要实现两个方法,一个是获取事件的方法(可以是单个事件,原创 2017-11-03 13:18:46 · 770 阅读 · 0 评论 -
Spring Transaction#TransactionalEventListener 原理
TransactionalEventListener本质上是一个@EventListener,Spring Tx针对使用Transaction时进行了贴别的处理;处理过程可见ApplicationListenerMethodTransactionalAdapter;在TransactionalEventListener中可以配置一个TransactionPhase参数;ApplicationList原创 2017-11-02 16:51:11 · 5465 阅读 · 0 评论 -
Spring Transaction 嵌套调用
AopContext 参考: Spring事务处理时自我调用的解决方案及一些实现方式的风险 关于 Spring AOP的一些理解 Spring AopContext.currentProxy 遇到 JDK动态代理 Spring AOP为什么不能拦截从对象内部调用的方法?原创 2017-10-29 13:54:10 · 2052 阅读 · 0 评论 -
Spring TransactionAspectSupport#TransactionInfo
假设我们有如下的场景public interface AddressRepo extends JpaRepository<Address,String>{}public interface EmailRepo extends JpaRepository<Email,String>{}@Servicepublic class TestService { ...原创 2019-03-06 10:23:23 · 905 阅读 · 0 评论 -
Spring Transaction TransactionSynchronization
TransactionSynchronization是一个回调接口,用于在事务执行过程中的重要时间点执行额外的逻辑,AbstractPlatformTransactionManager中通过TransactionSynchronizationManager间接调用绑定到当前事务所在线程的TransactionSynchronization集合的对应的回调方法;TransactionSynchro...原创 2019-03-07 13:17:43 · 1232 阅读 · 0 评论 -
Spring Kafka @KafkaListener和它的朋友们
Spring-Kafka(六)—— @KafkaListener的花式操作Spring Boot 中使用@KafkaListener并发批量接收消息原创 2019-03-07 20:03:34 · 5879 阅读 · 2 评论 -
使用 ExceptionHandler 处理业务流程的异常情况
Problem在业务实现过程中,我们可能会有类似如下的场景,要实现一个下单功能,除了下单正常执行的流程之外,我们还可能需要处理各种的业务异常情况,比如说下单的用户在服务端找不到,下单的商品在服务端找不到等等的业务异常情况(注意是业务异常),这时可能会有如下的伪代码,用户找不到时,给客户端响应 http status 为 500,http body 里的内容为一个 map 对象;如果是正常执行完毕...原创 2019-09-05 18:27:41 · 2665 阅读 · 0 评论 -
Sping Web Bean Scope
spring中bean的scope设置为request、session,然后注入到其他bean中使用不同作用域(scope)的Spring Bean之间的依赖关系的动态代理注入【Spring学习19】作用域:使用代理spring-web-scope-samples...原创 2019-06-30 22:40:37 · 185 阅读 · 0 评论 -
Spring Shell
JlineSpring Shell原创 2019-05-04 21:20:12 · 802 阅读 · 0 评论 -
Spring Quartz & Spring Boot Quartz AutoConfigure
Spring Quartzspring 分别对Quartz的三个方面,Job & JobDetail,Trigger和Scheduler进行了封装,Spring Quartz 和 Spring Scheduling是任务调度的两种方案,两者在使用上完全没有关系,Spring Scheduling使用的是JDK的类库实现的任务调度,Spring Quartz对Quartz的封装如下:J...原创 2019-03-31 13:25:08 · 1267 阅读 · 0 评论 -
Distributed transactions in Spring, without XA # Best Efforts 1PC pattern
简述Distributed transactions in Spring, with and without XA一文中描述了在Spring中实现分布式事务的7种处理模式;3种基于XA协议,4种特定场景的非XA协议的模式;最大努力一阶段提交模式4种非XA协议模式的第一种是共享事务资源模式(Shared Transaction Resource pattern),其提供了特定场景的多资源事务同...原创 2019-03-13 18:25:33 · 232 阅读 · 0 评论 -
Distributed transactions in Spring without XA # Shared Transaction Resource pattern
文章目录概述ORM框架和Spring JDBC消息驱动的单个数据库更新基于ActiveMQ实现消息驱动的单个数据库更新场景基于Kafka实现消息驱动的单个数据库更新场景概述Distributed transactions in Spring, with and without XA一文中描述了在Spring中实现分布式事务的7种处理模式;3种基于XA协议,4种特定场景的非XA协议的模式;共享...原创 2019-03-13 17:00:53 · 255 阅读 · 0 评论 -
Spring Retry Readme
文章目录快速开始构建功能和APIRetryTemplate本项目为Spring应用提供声明式的重试支持。其已经用在Spring Batch,Spring Integration,Spring for Apache Haddop等项目中。Spring Retry项目脱胎于Spring Batch项目;此文档虽然是Spring Retry官方的最新文档,但还是落后于代码的更新速度,大家可以在此文...原创 2019-03-11 15:58:04 · 339 阅读 · 0 评论 -
Spring Retry
RetryContext:RetryContextCache:一个类似于Map的数据结构,Stateful Retry Policies用其存储和查找RetryContext对象;RetryCallback:一个可以使用RetryOperations提供的方法被重试的操作的回调接口;将需要重试的业务操作用RetryCallback包裹一下,然后将RetryCallback传递给RetryOpe...原创 2019-03-11 12:16:45 · 630 阅读 · 0 评论 -
Spring Kafka Transaction
1. plain kafka client api transaction个三种情况(1. comsumer ack ,2 comsumer + producer commit,3 comsumer +producer@send 一块commit)2. KafkaTransactionManager详解,模板化了上述的哪些操作3. KafkaMessageListenerContainer和L...原创 2019-03-07 20:22:49 · 4289 阅读 · 0 评论 -
Spring Framework# WebFlux
参考: Spring Framework WebFlux framework Web on Reactive Stack 【Spring 5】响应式Web框架前瞻原创 2017-09-29 13:09:56 · 575 阅读 · 0 评论 -
退避算法简介
退避算法应用场景微信支付结果通知支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。 对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。 (通知频率为15/15/30/180/1800/1800/1800/1800/3600,单位:秒) 注意:同样的通原创 2017-08-02 19:53:23 · 5558 阅读 · 0 评论 -
Spring Framework之IOC容器的扩展点(TODO)
坑,待填 参考: 扩展Spring的几种方式 Spring中Bean的生命周期及其扩展点 [Spring]Spring容器扩展点 spring之扩展点 Spring Container的扩展点 Spring架构详解(10):Ioc容器的扩展点 Spring源码初探-IOC(5)-ApplicationContext功能扩展及其扩展点 Spring扩展点原创 2017-06-13 17:14:19 · 611 阅读 · 0 评论 -
Spring 多数据源事务配置问题
在SpringSide 3 中,白衣提供的预先配置好的环境非常有利于用户进行快速开发,但是同时也会为扩展带来一些困难。最直接的例子就是关于在项目中使用多个数据源的问题,似乎 很难搞。在上一篇中,我探讨了SpringSide 3 中的数据访问层,在这一篇中,我立志要解决多数据源配置的难题,我的思路是这样的:第一步、测试能否配置多个DataSource第二步、测试能否配置多个Session原创 2016-02-20 17:25:51 · 1199 阅读 · 0 评论 -
Spring MVC和Spring配置AOP
1.首先Spring MVC和Spring是两个东西,配置文件是分开的,配置文件的加载也是分开的。所以要想给Spring MVC的Controller添加AOP的话,得在Spring MVC的配置文件中配置,要想给Service和Repository添加AOP的话得在Spring的配置文件中配置。 2.以一个例子说明,有人配置了Service层的事务AOP之后,事务不起作用。原因是在Spring原创 2016-01-09 12:48:56 · 5739 阅读 · 1 评论 -
Spring的OpenEntityManagerInViewFilter
在Java Web项目中使用Hibernate经常会遇到LazyInitializationException 。这是因为controller和model层(java代码)将通过JPA的一些启用了延迟加载功能 的领域(如用getRefrence() 方法或者在关联关系中采用fetch=FetchType.LAZY )返回给view层(jsp代码)的时候,由于加载领域对象的JPA Session已经关原创 2015-05-07 00:10:20 · 799 阅读 · 0 评论 -
Spring 4支持的Java 8新特性一览
有众多新特性和函数库的Java 8发布之后,Spring 4.x已经支持其中的大部分。有些Java 8的新特性对Spring无影响,可以直接使用,但另有些新特性需要Spring的支持。本文将带您浏览Spring 4.0和4.1已经支持的Java 8新特性。Spring 4支持Java 6、7和8Java 8编译器编译过的代码生成的.class文件需要在Java 8或以上的Java虚拟机上运行。由于S原创 2015-04-07 19:37:43 · 868 阅读 · 0 评论 -
SpringMVC @RequestBody接收Json对象字符串
转自:http://www.cnblogs.com/quanyongan/archive/2013/04/16/3024741.html以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发原创 2015-03-23 15:34:01 · 3086 阅读 · 1 评论 -
ModelAndView详解
ModelAndView的构造方法有7个。但是它们都是相通的。这里使用无参构造函数来举例说明如何构造ModelAndView实例。 ModelAndView类别就如其名称所示,是代表了MVC Web程序中Model与View的对象,不过它只是方便您一次返回这两个对象的holder,Model与View两者仍是分离的概念。 最简单的ModelAndView是持有View的名称返回,之后View名原创 2015-03-02 13:57:31 · 7976 阅读 · 0 评论 -
如何为 SpringMVC 编写单元测试:REST API 篇
SpringMVC 为开发 REST API 提供了很便捷的途径。然而,想要为它们快速并全面的编写单元测试却显得没那么容易。SpringMVC 测试框架的发布则提供了快速全面编写高可读性单元测试的可能。这篇文章的目的就是说明如何通过 SpringMVC 为 REST API 编写单元测试。该文章中我们将会为用以提供 Todo 对象的 CRUD 操作的 Controller 方法编写单元测试。让我们现原创 2015-02-15 16:21:36 · 10748 阅读 · 0 评论 -
如何为 SpringMVC 编写单元测试:从配置开始
为 SpringMVC 编写测试用例通常被认为是既简单又复杂的。 虽然直接写调用Controller方法的测试用例不难,但问题在于这些测试用例不够全面。 例如,仅通过直接的方法调用我们测不到 Controller 的映射、校验和异常处理。 SpringMVC 提供给我们通过 DispathServlet 调用 Controller 方法的能力解决了这个问题。 这篇文章是本系列 SpringM原创 2015-02-15 16:04:33 · 5852 阅读 · 0 评论 -
如何为 SpringMVC 编写单元测试:普通 Controller 测试
前一篇文章我们已经知道如何配置使用了 SpringMVC 测试框架的单元测试。现在我们就该亲身实践下如何为普通 Controller 编写单元测试了。接下来一个很明显的问题就是:什么是普通 Controller其实,就这篇文章来说普通 Controller 就是指负责渲染界面或处理请求的 Controller。如果你没读过前面的配置篇,那么我建议你先读一下。使用 Maven 获取必须依赖我们可以通过原创 2015-02-15 16:11:49 · 15623 阅读 · 0 评论 -
在完全由Spring管理的环境中使用Spring的Context获取Bean实例
在大型的应用中,常常会有很灵活的需求,而在使用了框架之后,虽然可以大大提高开发的效率,但同时,也把我们框到一个架子中了。 下面先说一下我遇到的问题,事情大概是这样的:@Component@Scope("prototype")public class Action1 implements Action{..... }@Component@Scope("prototype")publi原创 2015-02-06 16:25:39 · 4136 阅读 · 0 评论 -
Spring事件模拟
Spring的事件模型与Java AWT里的实现模型是一致的。 下面是简单模拟了Spring的事件模型,搞清楚这个模型,Spring繁复的事件系统基本上就没问题了。 此博客需要有Java事件模型的基础 事件:package com.usmaker.spring.event.model;import java.util.EventObject;public abstract class Appl原创 2016-04-21 21:58:14 · 635 阅读 · 0 评论 -
Spring MultipartFile 参数必须要带着@RequestParam
Spring上传文件时MultipartFile 类型的参数上边一定要写@RequestParam(“xxx”) ,不然编译部署到服务器上之后,会报错误。/** * 保存项目带文件 * * @author chenzhenyang * @date 2016.06.19 * @param request * [id_,原创 2016-07-12 10:06:12 · 20773 阅读 · 1 评论 -
Spring Framework之BeanFactoryPostProcessor和BeanPostProcessor(TODO)
坑,待填。 参考: Spring的BeanFactoryPostProcessor和BeanPostProcessor原创 2017-06-13 17:03:39 · 513 阅读 · 0 评论 -
SpringFramework#ObjectPostProcessor
待填坑。原创 2017-06-13 11:22:45 · 1181 阅读 · 0 评论