- 博客(24)
- 资源 (1)
- 收藏
- 关注
原创 Dubbo 源码阅读(三)getAdaptiveExtension
实际工作中,我们希望实例能懒加载,或者运行期自动选择注解 @Adaptive 能解决这个选择问题注解在实例类上时,直接选此类为适配类(一个接口只允许一个类标记)注解在接口方法上时,只为此方法生成代理逻辑(方法必须有参数为url或者参数有返回url的方法)/** * 各个实现类上面没有@Adaptive * SPI上有注解@SPI("b") * URL中有具体的值info.serv...
2020-03-31 21:36:56 330
原创 Dubbo 源码阅读(二)getActivateExtension
某此情况下,同一个接口的多个实现需要同时发挥作用,比如filter链。此时需要按条件选择一批实现类来工作。/** * @Activate(group = {"group1","group2"},order = 1,value = "value1")打在某个自定义的Filter上 */@Testpublic void testActivate() { ExtensionLoader...
2020-03-31 21:36:45 686 8
原创 Dubbo 源码阅读(一)getExtensionLoader 和 getExtension
//接口类型public static <T> ExtensionLoader<T> getExtensionLoader(Class<T> type) { if (type == null) throw new IllegalArgumentException("Extension type == null...
2020-03-31 10:45:05 287
原创 多方式解决跨域问题
为什么会有跨域问题浏览器拒绝执行其它域名下的 ajax 运作:我想自己做一个搜索网站,但我不会搜索技术,怎么办呢?如果能发起 ajax 请求到百度就好了呢,可以这样吗?肯定不行,如果浏览器在自己的服务器域名对应的 html 页面内,发起 ajax 请求偷盗 www.baidu.com 域名下的内容来填充自己的页面,整个互联网秩序将混乱。为了防止这种混乱,W3C 组织制定了浏览器安全规范,即...
2020-03-21 23:33:55 184
原创 Spring5 源码阅读笔记(5.2)DispatcherServlet 里的 doDispatch
doDispatchprotected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { HttpServletRequest processedRequest = request; HandlerExecutionChain mappedHandler =...
2020-03-20 21:22:44 425
原创 Spring5 源码阅读笔记(5.2.4)processDispatchResult
类 DispatcherServletprivate void processDispatchResult(HttpServletRequest request, HttpServletResponse response, @Nullable HandlerExecutionChain mappedHandler, @Nullable ModelAndView mv, @Nullable...
2020-03-20 21:20:00 594 4
原创 Spring5 源码阅读笔记(5.2.3)handle
类 HandlerAdapter@NullableModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception;类 AbstractHandlerMethodAdapter@Override@Nullablepublic fi...
2020-03-20 21:08:00 332
原创 Spring5 源码阅读笔记(5.2.2)getHandler
类 DispatcherServlet@Nullableprotected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception { //handlerMappering实例 if (this.handlerMappings != null) { for (HandlerMapping...
2020-03-20 21:07:02 511
原创 Spring5 源码阅读笔记(5)基于注解的方法替换 spring-dispatcher.xml
示例@Configuration@EnableWebMvcpublic class AppConfig implements WebMvcConfigurer { @Autowired private UserInterceptor userInterceptor; @Override public void configureViewResolvers(...
2020-03-18 11:17:21 261
原创 Spring5 源码阅读笔记(5.2.1)AbstractHandlerMapping 里的 afterPropertiesSet
类 AbstractHandlerMethodMapping< T >,它实现了 InitializingBean 接口,意味着肯定重写了 afterPropertiesSet 方法,先跟 afterPropertiesSet另外 AbstractHandlerMethodMapping 里有一个很重要的内部类:urlLookup:URI 和 LinkedList< Re...
2020-03-18 08:48:13 311
原创 Spring5 源码阅读笔记(5.1)DispatcherServlet 里的 onRefresh
5.1.1 onRefreshSpring 启动的时候就会调@Overrideprotected void onRefresh(ApplicationContext context) { initStrategies(context);}跟 initStrategies:protected void initStrategies(ApplicationContext context...
2020-03-17 22:48:27 814 4
原创 Spring5 源码阅读笔记(5)基于注解的方法替换 web.xml
servlet 容器启动的时候,会有初始方法的调用,可以自己设置初始方法在指定路径下(SPI)。也就是加载所有实现了 javax.servlet.ServletContainerInitializer 的类。@HandlesTypes(LoadServlet.class)public class MyServletContainerInitializer implements Ser...
2020-03-14 10:58:33 447
原创 Spring5 源码阅读笔记(4.2)编程式事务 TransactionTemplate
注解式事务的不足当方法执行的时间过长,方法里的某些操作并不需要被包括在事务内的时候,用 @Transactional 就不太好了。因为事务一直得不到提交或回滚会一直占用连接。编程式事务@Autowiredprivate TransactionTemplate transactionTemplate;public void method() { Integer execute...
2020-03-08 20:45:38 226
原创 Spring 里的几个重要的容器
DefaultSingletonBeanRegistrysingletonsCurrentlyInCreation一个 Set,装载正在实例化的 Bean
2020-03-08 10:35:21 1591
原创 Spring5 源码阅读笔记(4.1)事务切面的 invoke
前置文章Spring5 源码阅读笔记(3.3)JDKDynamicAopProxy 的 invoke 调用Spring5 源码阅读笔记(4)事务:@EnableTransactionManagement 做了什么?当我们执行一段打了 @Transactional 的代码时,其实是会走到 JDKDynamicAopProxy 的 invoke 方法的(如果用的是 JDKDynamicAopP...
2020-03-06 11:36:49 256
原创 Spring5 源码阅读笔记(4.1.2)completeTransactionAfterThrowing(txInfo, ex) 回滚事务
重点在当前事务回滚的过程中,会先做2个判断:一、如果传播方式是 PROPAGATION_NESTED,当前事务按照按照回滚点回滚。由于当前事务在回滚后会抛出异常,外层事务捕获到异常后也会回滚。二、如果 newTransaction 为true,也就是当前事务是最外层事务,或传播方式是 ROPAGATION_REQUIRES_NEW,回滚。其它情况,会在更外层的事务回滚。跟源码类 Tr...
2020-03-06 11:36:18 747
原创 Spring5 源码阅读笔记(4.1.3)commitTransactionAfterReturning(txInfo) 提交事务
重点事务回滚的时候,要先判断 newTransaction 的状态,newTransaction 为 true,才提交。当传播方式为 PROPAGATION_REQUIRED:内层事务会使用外层事务的连接,newTransaction 为 false,内层事务在提交的时候不会提交,最后由外层事务提交。当传播方式为 PROPAGATION_REQUIRES_NEW:内层事务创建新连接,ne...
2020-03-06 10:55:30 1162
原创 Spring5 源码阅读笔记(4.1.1.3)doBegin(transaction, definition) 开启事务
Spring5 源码阅读笔记(4.1.1)createTransactionIfNecessary(tm, txAttr, joinpointIdentification) 创建事务如有必要 讲述了创建事务的过程:首先,创建事务对象,Spring5 源码阅读笔记(4.1.1.1)doGetTransaction() 拿事务对象然后,判断是否已经有活跃的连接,如果有,Spring5 源码阅读笔记...
2020-03-05 20:30:20 652
原创 Spring5 源码阅读笔记(4.1.1)createTransactionIfNecessary(tm, txAttr, joinpointIdentification) 创建事务如有必要
protected TransactionInfo createTransactionIfNecessary(@Nullable PlatformTransactionManager tm, @Nullable TransactionAttribute txAttr, final String joinpointIdentification) { // If no name specifi...
2020-03-05 20:15:08 560
原创 Spring5 源码阅读笔记(4.1.1.2)handleExistingTransaction(definition, transaction, debugEnabled) 处理存在的事务
每当进入事务切面,Spring 在创建事务的时候都会先新建一个事务对象 DataSourceTransactionObject,见 Spring5 源码阅读笔记(4.1.1.1)doGetTransaction() 拿事务对象。这个事务对象里面有一个 ConnectionHolder,并且这个连接不是新的,newTransaction 为 false。当然,这是默认值,ConnectionHold...
2020-03-05 20:12:10 434
原创 Spring5 源码阅读笔记(4.1.1.1)doGetTransaction() 拿事务对象
重点我们通常说的事务对象,就是这里的 DataSourceTransactionObject。说起事务,必然是和连接绑定的,DataSourceTransactionObject 主要是管理连接对象。doGetTransaction() 主要做了:创建一个事务对象 DataSourceTransactionObject拿到数据源,根据当前线程拿到从该数据源拿到的连接对象 Connect...
2020-03-05 18:07:18 593
原创 Spring5 源码阅读笔记(4)事务:@EnableTransactionManagement 做了什么?
基于注解开始事务import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.annotation.MapperScan;import org.springframework.context.annotation.Bean;import org.springframework.jdbc.datasourc...
2020-03-04 10:47:45 262
原创 Spring5 源码阅读笔记(3.3)JDKDynamicAopProxy 的 invoke 调用
跟 getProxy:类 proxyFactorypublic Object getProxy(@Nullable ClassLoader classLoader) { //根据目标对象是否有接口来判断采用什么代理方式,cglib代理还是jdk动态代理 return createAopProxy().getProxy(classLoader);}跟 getProxy:类 AopPr...
2020-03-02 10:17:51 332
原创 Spring5 源码阅读笔记(3.2)createProxy 创建代理
跟代码类 AbstractAutoProxyCreatorprotected Object createProxy(Class<?> beanClass, @Nullable String beanName, //封装的被代理对象 @Nullable Object[] specificInterceptors, TargetSource targetS...
2020-03-02 10:01:12 901 1
mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz
2019-09-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人