自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

日有寸进

世上只有一种英雄主义,就是在认清生活真相之后依然热爱生活。

原创 Dubbo 源码阅读(三)getAdaptiveExtension

实际工作中,我们希望实例能懒加载,或者运行期自动选择 注解 @Adaptive 能解决这个选择问题 注解在实例类上时,直接选此类为适配类(一个接口只允许一个类标记) 注解在接口方法上时,只为此方法生成代理逻辑(方法必须有参数为url或者参数有返回url的方法) /** * 各个实现类上面没有...

2020-03-31 21:36:56 67 0

原创 Dubbo 源码阅读(二)getActivateExtension

某此情况下,同一个接口的多个实现需要同时发挥作用,比如filter链。此时需要按条件选择一批实现类来工作。 /** * @Activate(group = {"group1","group2"},order = 1,value = "value1...

2020-03-31 21:36:45 175 8

原创 Dubbo 源码阅读(一)getExtensionLoader 和 getExtension

//接口类型 public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type) { if (type == null) throw new IllegalArgu...

2020-03-31 10:45:05 83 0

原创 多方式解决跨域问题

为什么会有跨域问题 浏览器拒绝执行其它域名下的 ajax 运作: 我想自己做一个搜索网站,但我不会搜索技术,怎么办呢?如果能发起 ajax 请求到百度就好了呢,可以这样吗? 肯定不行,如果浏览器在自己的服务器域名对应的 html 页面内,发起 ajax 请求偷盗 www.baidu.com 域名下...

2020-03-21 23:33:55 67 0

原创 Spring5 源码阅读笔记(5.2)DispatcherServlet 里的 doDispatch

doDispatch protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { HttpServletRequest processedReques...

2020-03-20 21:22:44 61 0

原创 Spring5 源码阅读笔记(5.2.4)processDispatchResult

类 DispatcherServlet private void processDispatchResult(HttpServletRequest request, HttpServletResponse response, @Nullable HandlerExecutionChain ma...

2020-03-20 21:20:00 180 0

原创 Spring5 源码阅读笔记(5.2.3)handle

类 HandlerAdapter @Nullable ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception; 类 Abstrac...

2020-03-20 21:08:00 160 0

原创 Spring5 源码阅读笔记(5.2.2)getHandler

类 DispatcherServlet @Nullable protected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception { //handlerMappering实例 if (th...

2020-03-20 21:07:02 100 0

原创 Spring5 源码阅读笔记(5)基于注解的方法替换 spring-dispatcher.xml

示例 @Configuration @EnableWebMvc public class AppConfig implements WebMvcConfigurer { @Autowired private UserInterceptor userInterceptor; ...

2020-03-18 11:17:21 52 0

原创 Spring5 源码阅读笔记(5.2.1)AbstractHandlerMapping 里的 afterPropertiesSet

类 AbstractHandlerMethodMapping< T >,它实现了 InitializingBean 接口,意味着肯定重写了 afterPropertiesSet 方法,先跟 afterPropertiesSet 另外 AbstractHandlerMethodMappi...

2020-03-18 08:48:13 40 0

原创 Spring5 源码阅读笔记(5.1)DispatcherServlet 里的 onRefresh

5.1.1 onRefresh Spring 启动的时候就会调 @Override protected void onRefresh(ApplicationContext context) { initStrategies(context); } 跟 initStrategies: prote...

2020-03-17 22:48:27 102 0

原创 Spring5 源码阅读笔记(5)基于注解的方法替换 web.xml

servlet 容器启动的时候,会有初始方法的调用,可以自己设置初始方法在指定路径下(SPI)。 也就是加载所有实现了 javax.servlet.ServletContainerInitializer 的类。 @HandlesTypes(LoadServlet.class) public cla...

2020-03-14 10:58:33 104 0

原创 Spring5 源码阅读笔记(4.2)编程式事务 TransactionTemplate

注解式事务的不足 当方法执行的时间过长,方法里的某些操作并不需要被包括在事务内的时候,用 @Transactional 就不太好了。因为事务一直得不到提交或回滚会一直占用连接。 编程式事务 @Autowired private TransactionTemplate transactionTemp...

2020-03-08 20:45:38 57 0

原创 Spring 里的几个重要的容器

DefaultSingletonBeanRegistry singletonsCurrentlyInCreation 一个 Set,装载正在实例化的 Bean

2020-03-08 10:35:21 405 0

原创 Spring5 源码阅读笔记(4.1)事务切面的 invoke

前置文章 Spring5 源码阅读笔记(3.3)JDKDynamicAopProxy 的 invoke 调用 Spring5 源码阅读笔记(4)事务:@EnableTransactionManagement 做了什么? 当我们执行一段打了 @Transactional 的代码时,其实是会走到 JD...

2020-03-06 11:36:49 66 0

原创 Spring5 源码阅读笔记(4.1.2)completeTransactionAfterThrowing(txInfo, ex) 回滚事务

重点 在当前事务回滚的过程中,会先做2个判断: 一、如果传播方式是 PROPAGATION_NESTED,当前事务按照按照回滚点回滚。 由于当前事务在回滚后会抛出异常,外层事务捕获到异常后也会回滚。 二、如果 newTransaction 为true,也就是当前事务是最外层事务,或传播方式是 RO...

2020-03-06 11:36:18 173 0

原创 Spring5 源码阅读笔记(4.1.3)commitTransactionAfterReturning(txInfo) 提交事务

重点 事务回滚的时候,要先判断 newTransaction 的状态,newTransaction 为 true,才提交。 当传播方式为 PROPAGATION_REQUIRED: 内层事务会使用外层事务的连接,newTransaction 为 false,内层事务在提交的时候不会提交,最后由外层...

2020-03-06 10:55:30 303 0

原创 Spring5 源码阅读笔记(4.1.1.3)doBegin(transaction, definition) 开启事务

Spring5 源码阅读笔记(4.1.1)createTransactionIfNecessary(tm, txAttr, joinpointIdentification) 创建事务如有必要 讲述了创建事务的过程: 首先,创建事务对象,Spring5 源码阅读笔记(4.1.1.1)doGetTra...

2020-03-05 20:30:20 128 0

原创 Spring5 源码阅读笔记(4.1.1)createTransactionIfNecessary(tm, txAttr, joinpointIdentification) 创建事务如有必要

protected TransactionInfo createTransactionIfNecessary(@Nullable PlatformTransactionManager tm, @Nullable TransactionAttribute txAttr, final String...

2020-03-05 20:15:08 143 0

原创 Spring5 源码阅读笔记(4.1.1.2)handleExistingTransaction(definition, transaction, debugEnabled) 处理存在的事务

每当进入事务切面,Spring 在创建事务的时候都会先新建一个事务对象 DataSourceTransactionObject,见 Spring5 源码阅读笔记(4.1.1.1)doGetTransaction() 拿事务对象。这个事务对象里面有一个 ConnectionHolder,并且这个连接...

2020-03-05 20:12:10 111 0

原创 Spring5 源码阅读笔记(4.1.1.1)doGetTransaction() 拿事务对象

重点 我们通常说的事务对象,就是这里的 DataSourceTransactionObject。 说起事务,必然是和连接绑定的,DataSourceTransactionObject 主要是管理连接对象。 doGetTransaction() 主要做了: 创建一个事务对象 DataSourceT...

2020-03-05 18:07:18 121 0

原创 Spring5 源码阅读笔记(4)事务:@EnableTransactionManagement 做了什么?

基于注解开始事务 import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotat...

2020-03-04 10:47:45 77 0

原创 Spring5 源码阅读笔记(3.3)JDKDynamicAopProxy 的 invoke 调用

跟 getProxy: 类 proxyFactory public Object getProxy(@Nullable ClassLoader classLoader) { //根据目标对象是否有接口来判断采用什么代理方式,cglib代理还是jdk动态代理 return createAopPr...

2020-03-02 10:17:51 74 0

原创 Spring5 源码阅读笔记(3.2)createProxy 创建代理

跟代码 类 AbstractAutoProxyCreator protected Object createProxy(Class<?> beanClass, @Nullable String beanName, //封装的被代理对象 @Nullable ...

2020-03-02 10:01:12 237 0

提示
确定要删除当前文章?
取消 删除