AnnotationConfigApplicationContext解析

ApplicationContext接口负责实例化、配置和组装 bean,所谓Spring容器入口其实就是这个接口,代表着Spring IoC 容器的核心,ApplicationContext接口有很多实现方式,包括很早之前的ClassPathXmlApplicationContext,通过XML的方式装配bean,也包含了现在通过注解的方式AnnotationConfigApplicationContext。

阅读更多

Spring事务失效场景

工作中经常会使用事务,事务保证了操作的一致性,要嘛全部成功,有一个失败则全部失败。类似于与操作。其中事务具备ACID四个特性,包含原子性,一致性,隔离性,持久性。Spring开发了spring-tx模块封装了事务,包含有编程式事务与声明式事务。其中编程式事务使用TransactionTemplate实现,声明式事务使用Transactional注解。但是事务有时候会失效导致脏数据的产生,下面来进行实践测试。

阅读更多

Jackson枚举序列化与反序列化

本文主要记载Jackson按需求序列化枚举以及反序列化枚举的实现,踩过一些坑,所以做下笔记。Java默认序列化枚举的Name字段,比如ENUM_SEX_MAN(0),默认只会序列化ENUM_SEX_MAN。不满足实际需求。所以项目中需要做一些自定义。

阅读更多

Spring实现接口加密解密

本篇文章同样使用AOP注解代理,实现运行时的接口加密解密。项目开发中有一些接口数据是敏感数据,比如用户手机号,真是姓名,身份证,密码等等。但是有一些接口是不用加密的,所以我们需要一种方式,实现与业务脱离,可自定义使用场景的代理方式。

阅读更多

Spring实现注解鉴权

项目开发中经常会对用户请求进行鉴权,用户是否有调用当前接口的权限等。单体应用我们通常会使用WebSecurityConfigurerAdapter来认证用户请求,并通过Spring注解PreAuthorize等进行鉴权,如果是微服务应用,有两种方式可以实现鉴权,第一种是将所有角色和权限从数据库中查询出来缓存到redis,然后通过网关去鉴权。第二种我们可以在网关中只判断token是否合法,如果合法就将用户信息下发到子服务中自主鉴权。本篇文章使用第二种方式,通过Spring AOP注解的方式实现自动鉴权操作,本篇文章主要做一个记载,并不是关于Spring AOP的详细使用文章。

阅读更多

Spring源码结构

现在做后台开发全是Spring的一堆框架,无论是使用的Spring MVC,SpringBoot,Spring Cloud都是基于Spring作为基础进行搭建的。从本篇文章开始将开始深入研究Spring的实现方式,架构,核心的原理等等。

阅读更多

Spring Bean生命周期和作用域以及实现方式

applicationContext.xml中配置完bean之后,Bean的声明周期状态有哪些。生命周期的各个阶段可以做什么。在applicationContext.xml配置bean的作用域有哪些。其中各个作用域代表的是什么。适用于什么情况。这篇文章做一个记录。

阅读更多

Spring-DI的三种实现方式以及优劣

从现在起,master分支切换为Java EE,80%的时间都花在Java EE上面。其余时间再慢慢分配。我已经不再是Android的人了。做了10个月Android,除了NDK比较弱,别的方面都还好。过完年回来再花点时间研究NDK。谈起Spring,能表达的只能是6666。在Java EE领域的能力真的是一家独大。通常情况下,获取一个对象的实例是调用者创建被调用者的实例。而使用Spring框架,调用者并不负责创建被调用者的实例。这部分工作由Spring框架来完成,并且在对象需要使用的地方,由Spring自动注入。这就是Spring的依赖注入和控制反转功能。而具体是如何使用的呢?有哪些使用方式?这些使用方式有哪些优劣之处。这篇文章就是记录此功能的。我也是学习者,不是老司机。不对的地方多多指证。

阅读更多

Spring MVC初探

Spring MVC是基于Model2架构的。关于Model1和Model2架构,可以查看资料。在Spring MVC中,Action叫做ControllerController接受参数requestresponse。经过处理后返回ModelAndViewSpring MVC是围绕DispatcherServlet设计的。DispatcherServlet负责将不同的分发到不同的处理器上。Spring MVC还包括处理器映射,视图解析,本地化,主题解析,文件上传等功能。

阅读更多