自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

日有寸进

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

  • 博客(24)
  • 资源 (1)

原创 Dubbo 源码阅读(三)getAdaptiveExtension

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

2020-03-31 21:36:56 63

原创 Dubbo 源码阅读(二)getActivateExtension

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

2020-03-31 21:36:45 163 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 78

原创 多方式解决跨域问题

为什么会有跨域问题浏览器拒绝执行其它域名下的 ajax 运作:我想自己做一个搜索网站,但我不会搜索技术,怎么办呢?如果能发起 ajax 请求到百度就好了呢,可以这样吗?肯定不行,如果浏览器在自己的服务器域名对应的 html 页面内,发起 ajax 请求偷盗 www.baidu.com 域名下的内容来填充自己的页面,整个互联网秩序将混乱。为了防止这种混乱,W3C 组织制定了浏览器安全规范,即...

2020-03-21 23:33:55 60

原创 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 57

原创 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 160

原创 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 151

原创 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 80

原创 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 46

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

类 AbstractHandlerMethodMapping< T >,它实现了 InitializingBean 接口,意味着肯定重写了 afterPropertiesSet 方法,先跟 afterPropertiesSet另外 AbstractHandlerMethodMapping 里有一个很重要的内部类:urlLookup:URI 和 LinkedList< Re...

2020-03-18 08:48:13 36

原创 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 93

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

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

2020-03-14 10:58:33 99

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

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

2020-03-08 20:45:38 53

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

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

2020-03-08 10:35:21 381

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

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

2020-03-06 11:36:49 64

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

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

2020-03-06 11:36:18 166

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

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

2020-03-06 10:55:30 280

原创 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 120

原创 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 130

原创 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 105

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

重点我们通常说的事务对象,就是这里的 DataSourceTransactionObject。说起事务,必然是和连接绑定的,DataSourceTransactionObject 主要是管理连接对象。doGetTransaction() 主要做了:创建一个事务对象 DataSourceTransactionObject拿到数据源,根据当前线程拿到从该数据源拿到的连接对象 Connect...

2020-03-05 18:07:18 113

原创 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 73

原创 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 70

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

跟代码类 AbstractAutoProxyCreatorprotected Object createProxy(Class<?> beanClass, @Nullable String beanName, //封装的被代理对象 @Nullable Object[] specificInterceptors, TargetSource targetS...

2020-03-02 10:01:12 218

mysql-5.7.9-linux-glibc2.5-x86_64.tar.gz

Linux 使用的版本是centos 7,为方便起见,先把防火墙关闭,配置好网络,在安装部分,会分成两部分讲,首先讲单实例安装,也就是一台服务器上就装一个mysql,接下来就多实例安装,在一个服务器上安装2个甚至多个mysql.

2019-09-17

空空如也

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