Spring入门及源码分析
文章平均质量分 75
Spring入门及源码分析
愤怒的苹果ext
本人擅长Ai、Fw、Fl、Br、Ae、Pr、Id、Ps等软件的安装与卸载,精通CSS、JavaScript、PHP、ASP、C、C++、C#、Java、Ruby、Perl、Lisp、python、Objective-C、ActionScript、Pascal等单词的拼写,熟悉Windows、Linux、Mac、Android、IOS、WP8等系统的开关机.
展开
-
@DateTimeFormat与@JsonFormat不完全解析
一直以来对与比较模糊,容易搞忘,今天就做个笔记,由于不设计原理,源码所以是不完全解析,有时间再看下源码。如果时间急的,可以不看验证过程,直接看结论。原创 2023-06-21 21:30:00 · 1588 阅读 · 0 评论 -
Spring自定义注解驱动开发使用及源码分析
目录前言注解驱动开发使用前言在我们实际开发中,你是不是也经常使用各种@Enablexxx(如@EnableAspectJAutoProxy、@EnableTransactionManagement)之类的注解呢?只要使用了它,某个功能(组件)就应用上了。为我们提供了很多便利。下面我们就从自己写一个Enable注解开始,一步步揭开注解驱动开发背后真相。注解驱动开发使用...原创 2022-04-21 16:23:00 · 526 阅读 · 0 评论 -
Spring AOP源码解析(二)
目录前言初始化对象执行postProcessBeforeInitialization 回调,有可能返回代理对象寻找合适的Advisor创建代理执行方法得到执行链chain执行增强proceed执行ExposeInvocationInterceptor增强执行MethodBeforeAdviceInterceptor增强执行被代理类的业务逻辑小结前言接上文Spring AOP源码解析(一),本文我们来看Spring是如何创建代理和执行增强功能的。初始化对象无论是创建普通对象还是代理类Abstra原创 2022-04-18 16:24:24 · 1413 阅读 · 0 评论 -
Spring Boot 事务回滚不成功可能原因
是否使用EnableTransactionManagement注解被调用的方法是否直接(注解方式间接的方法不行哦)使用注解(Transactional,注意Transactional注解默认只能拦截RuntimeException和Error,源码在DefaultTransactionAttribute#DefaultTransactionAttribute)事务或者方法内部编程式事务使用Transactional注解方法内不要捕获异常,即使需要捕获,也必须再抛出。检查数据库是否是支持事务的引擎(今天原创 2022-02-13 18:26:39 · 1678 阅读 · 2 评论 -
加了@RequestBody注解到底干了啥?@RequestBody源码分析
目录简介请求入口DispatcherServlet简介我们有时会这样去写一个controller的方法,代码如下所示。 @RequestMapping(value ="/test7") @ResponseBody public String test7(@RequestBody com.zzq.core.dto.TestReq testReq){ System.out.println("test7 controller " + testReq.getUserId()); return原创 2021-06-25 11:36:44 · 1283 阅读 · 2 评论 -
Spring AOP源码解析(一)
目录原创 2020-11-06 17:36:19 · 487 阅读 · 0 评论 -
spring读取配置文件原理解析
目录简介使用源码分析简介在项目中,我们一般都会用配置文件(properties文件)更优雅的实现基础配置信息;在java中我们一般会用内置的工具包 java.util.Properties去读取properties配置文件;往往有一些问题是,我们要自己写代码去读取配置文件,还有就是如何管理已经读取过的配置,这种配置文件的数据一般不会频繁改变,不可能我需要一次就读一下文件吧!那就太不优雅了,而且自己去写读取文件的代码也麻烦。而Spring刚好能解决这样的痛点,Spring有一个类PropertyPla原创 2020-06-22 11:07:12 · 1656 阅读 · 0 评论 -
spring扩展 BeanDefinitionRegistryPostProcessor详解
目录简介使用简介首先引出一个问题,怎样的bean会被交给spring初始化?一般而言Spring容器启动的过程中,解析配置文件 java config等等,会将Bean解析成Spring内部的BeanDefinition结构;也就是说如果我们能直接给spring BeanDefinition对象,这个bean就会交给spring去初始化。上面说的直接给spring BeanDe...原创 2020-04-25 09:57:47 · 1277 阅读 · 0 评论 -
从spring、spring boot中找到解析properties、xml、yml、yaml文件的方法
目录一、解析properties和xml二、解析yml和yaml总结和运行效果一、解析properties和xml这里使用了FileSystemResource,spring的Resource继承于InputStreamSource,也就是spring封装了InputStreamSource;可以从spring源码看到除了FileSystemResource还有其他的实现,比如可以不用绝对路...原创 2019-10-15 09:42:22 · 467 阅读 · 0 评论 -
spring自定义标签
一、简介spring在解析标签时分为默认标签和自定义标签两种;默认标签如bean标签,自定义标签如:aop、tx(关于事物的)、dubbo(rpc框架的)。在一些复杂的业务场景下,普通bean无法满足需求;spring提供了可扩展Schema的支持,只需要我们实现部分逻辑就可以为我们解析自定义标签;spring自定义标签用于配置较为复杂或者需要丰富的控制的时候。二、使用1、创建一个想要...原创 2019-07-20 00:54:58 · 355 阅读 · 0 评论 -
ImportBeanDefinitionRegistrar
一、简介ImportBeanDefinitionRegistrar接口是也是spring的扩展点之一,它可以支持我们自己写的代码封装成BeanDefinition对象,实现此接口的类会回调postProcessBeanDefinitionRegistry方法,注册到spring容器中。二、使用接口的使用很简单,使用@Import注解到如这个类即可。我先新建一个Configuratio...原创 2019-05-27 22:46:45 · 19812 阅读 · 18 评论 -
ApplicationListener
一、简介ApplicationListener接口是spring框架为开发者提供的一个扩展点。一般来说,一个我们新建一个项目,在启动时就需要初始化一些东西的(比如数据库的数据,一个对象,或者是某些配置)。并且使用ApplicationListener后可以拿到spring容器,功能是异常强大,好用。二、使用...原创 2019-02-21 22:50:37 · 8717 阅读 · 0 评论 -
spring aop Null return value from advice does not match primitive return type for总结
Null return value from advice does not match primitive return type for这个一般都是发生在代码做了环绕后。找到源码抛出这个异常的位置(我是全局搜索的我使用的cglib动态代理的代码)CglibAopProxy#processReturnType: private static Object processReturnTyp...原创 2018-12-11 22:41:49 · 19728 阅读 · 10 评论 -
spring报错parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]
一、 报错如下:org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.io.F...原创 2018-09-30 00:06:31 · 27454 阅读 · 17 评论 -
BeanFactoryPostProcessor详解
一、简介BeanFactoryPostProcessor接口与 BeanPostProcessor接口类似,可以对bean的定义(配置元数据)进行处理;也就是spring ioc运行BeanFactoryPostProcessor在容器实例化任何其他的bean之前读取配置元数据,并有可能修改它;如果业务需要,可以配置多个BeanFactoryPostProcessor的实现类,通过”orde...原创 2018-07-22 10:05:10 · 24600 阅读 · 12 评论 -
ApplicationContextAware原理
1、紧接上文BeanPostProcessor处理器 的应用,ApplicationContextAware也可以说是spring框架中对BeanPostProcessor的一个应用,还包括一些其他的Aware,如BeanFactoryAware、ResourceLoaderAware、ServletContextAware等等。2 、先来一段代码看看@Component pub...原创 2018-07-16 22:08:38 · 2968 阅读 · 2 评论 -
BeanPostProcessor处理器
一、简介BeanPostProcessor处理器是Spring开放式架构中必不可少的亮点之一,给足用户权限根据自己的业务需求去更改或者扩展Spring,当然除了BeanPostProcessor外还有其他PostProcessor。BeanPostProcessor在调用初始化方法前及调用初始化方法只会分别调用它的postProcessBeforeInitialization和postPro...原创 2018-07-15 22:29:10 · 648 阅读 · 0 评论 -
spring动态调用方法
有的时候为了程序的灵活性,需要根据参数动态的调用方法。代码框架大致spring为主,下面是具体代码:接口: 实现类(实现类中有一个从spring容器中取的对象) 这是最初我直接用反射去调用的代码: Object obj = Class.forName("com.rw.article.service.pay.impl.WithdrawalsServiceProxyImpl"...原创 2018-03-04 09:42:49 · 7322 阅读 · 5 评论 -
手写精简版的springMVC框架
整个设计流程图一、web.xml配置servlet(启动时运行级别的servlet)<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app>...原创 2018-03-04 16:15:31 · 445 阅读 · 0 评论 -
eclipse导入spring源码一
一、准备的软件安装git或者GitHub(不是必须的可以直接在GitHub网页上选择版本下载压缩包,地址https://github.com/spring-projects/spring-framework/ ,我选择的是v3.2.18.RELEASE版本) 安装gradle(把源码转成eclipse工程用的,下载地址 : https://gradle.org/releases/)二...原创 2018-03-11 17:48:37 · 1324 阅读 · 0 评论 -
eclipse导入spring源码二(丢失的spring-asm-repack和spring-cglib-repack)
在上一篇eclipse导入spring源码一 中已经完成一部分了,但是整个项目代码依然有报错: 很明显的错误,就是找不到jar(spring-asm-repack-5.0.1.jar和spring-cglib-repack-3.1.jar)包,查看源文件的确没有这2个包。那么怎么得到这2个包呢?我找过maven仓库也没找到,最后终于知道了可以通过jar命令编译spring-core包得到这2...原创 2018-03-11 18:30:14 · 2647 阅读 · 0 评论 -
FactoryBean详解
一、首先来看看FactoryBean与BeanFactory:这个两个拼写起来很相似,比较容易搞混,是反过来的。FactoryBean : 是一个Java Bean,但是它是一个能生产出当前对象的工厂Bean,它的实现和工厂模式及修饰器模式很像。BeanFactory:这就是一个Factory,是整个Spring IOC容器的核心内容,生产并存储很多的bean。二、应用现在就...原创 2018-06-03 18:55:18 · 2325 阅读 · 0 评论