自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜 头笔记

Java从入门到放弃

  • 博客(94)
  • 资源 (1)
  • 收藏
  • 关注

原创 深入理解SpringCloud源码探究篇 | Feign源码分析

按照惯例先来白话文描述下Feign的工作原理@EnableFeignClients入口,Import了FeignClientsRegistrar进行bean注册,其实际就是筛选出所有@FeignClient注解的接口,为其注册为FeignClientFactoryBean,以及注册配置FeignClientSpecification用于放不同服务名的配置信息类。FeignClientFactoryBean自然是实现类FactoryBean,返回的是getObject代理类,也就是在调用Feign接口时

2020-05-29 21:20:41 727

原创 深入理解SpringCloud源码探究篇 | ribbon源码分析

下面先利用白话文来描述下ribbon的工作流程Ribbon: 自动配置类RibbonClientConfiguration和EurekaRibbonClientConfiguration配置类进行各bean转载包括以下五大组件和ZoneAwareLoadBalancer初始化操作 五大组件: ServerList:定义获取服务器列表 ,默认实现DiscoveryEnabledNIWSServerList ServerListFilter:对ServerL...

2020-05-26 21:50:39 735

原创 深入理解SpringCloud源码探究篇 | Eureka客户端源码分析

虽然说官方已经发布Eureka不在维护的通知,但是还是需要对我们用过的Eureka进行深入了解的,因为这些玩意都是大同小异的。下面先利用白话文分析Eureka客户端的实现原理:eureka客户端: 调用eureka服务端接口进行服务列表获取: eureka客户端启动后初始化 EurekaClientAutoConfiguration 自动配置加载bean CloudEurekaClient (这里会通过jersey进行调用eureka服务端接口(ApplicationsResour...

2020-05-25 20:52:26 608

原创 深入理解SpringCloud源码探究篇 | Eureka服务端源码分析

EurekaServerAutoConfiguration自动配置类,注册各种bean,包括PeerAwareInstanceRegistry用于服务注册以及jersey,eureka是利用jersey提供接口给客户端访问注册服务和获取服务列表的,ApplicationResource.addInstance:接收服务注册请求,ApplicationsResource.getContainers:接收服务列表获取访问,服务续约请求:InstanceResource.renewLease()进行服务时间的刷新

2020-05-24 14:13:09 678 1

原创 SpringCloud入门必看例子

版本使用的是Greenwich,例子均是入门使用的一些简单例子,也参考一些其他博文,所有demo源码放在git上面,需要的可以自行下载:springCloud-Greenwich,主要有以下例子:1.eureka 注册中心 2.demoServer|demoServer1 服务提供者 3.feign-consumer 断路器+服务消费者(feign + hystrix) 4.ribbon-demo 断路器+服务消费者(ribbon + hystrix) 5.zuul-gateway 动

2020-05-24 11:48:37 364

原创 小白mybatis源码看这一遍就够了(5)| 与springboot整合以及@Mapper原理

mybatis源码分析系列:mybatis源码看这一遍就够了(1)| 前言 mybatis源码看这一遍就够了(2)| getMapper mybatis源码看一遍就够了(3)| Configuration及解析配置文件 mybatis源码看一遍就够了(4)| SqlSession.select调用分析 通过前面几章对mybatis的源码分析,相信大家对mybatis的流程原理也有了...

2020-04-23 21:02:35 960

原创 小白mybatis源码看这一遍就够了(4)| SqlSession.select调用到jdbc分析

前面我们还遗留了个问题是sqlSession.selectList这一步究竟做了啥,这和jdbc又有什么关系?我们这一章来讲一讲这个sqlSession.selectList他和jdbc究竟是什么不正当关系,是不是真有一腿我们拿第一章的mybatis例子来分析List<User> users = sqlSession.selectList("com.cwh.test.da...

2020-04-23 21:02:04 1055

原创 小白mybatis源码看这一遍就够了(3)| Configuration及解析配置文件

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("configuration.xml"));这么短短的一句一句话究竟做了哪些不为人知的事,我们点进SqlSessionFactoryBuilder.build()方法:首...

2020-04-23 21:01:49 792

原创 小白mybatis源码看这一遍就够了(1)| 前言

前言这一章主要是为后面分析源码做铺垫,也好回忆下,这篇章将从操作jdbc到操作mybatis的简单demo入手。在分析mybatis源码前,我们首先先来回忆下jdk提供的sql操作步骤和mybatis的入门例子准备数据表和数据:CREATE TABLE `user` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `age` int(11)...

2020-04-23 21:01:02 657

原创 小白mybatis源码看这一遍就够了(2)| getMapper与sqlSession.selectList区别

上一章我们后面留下了一个问题就是getMapper获取的UserDao操作和直接sqlSession.selectList的区别?下面我们就从这里展开mybatis源码的面纱UserDao mapper = sqlSession.getMapper(UserDao.class);这句操作究竟做了些什么?首先第一步DefaultSqlSession.getMapper:这...

2020-04-23 21:00:42 1913

原创 简单直接让你也读懂springmvc源码分析(4)-- ViewResolver

到该章,也就是视图解析器,这里是dispatcherServlet的最后一步调用,就是从HandlerAdapter拿回来的ModelView放入视图解析器ViewResolver进行视图的解析,然后响应给用户浏览器。我们这里选用freeMarker来做demo,那么下面也将是以FreeMarkerViewResolver的视图解析器来分析。在分析前我们先来看看freeMarker的运用...

2020-04-15 19:51:27 406

原创 简单直接让你也读懂springmvc源码分析(3.1)-- HandlerMethodReturnValueHandler

该接口的调用请参考springmvc源码分析(3)-- HandlerAdapter本章只分析该接口的一些用法和常用实现类该接口有两个方法public interface HandlerMethodReturnValueHandler { /** * Whether the given {@linkplain MethodParameter method return typ...

2020-04-15 19:51:00 268

原创 简单直接让你也读懂springmvc源码分析(3)-- HandlerAdapter

我们还是像上一章那样springmvc源码分析(2)-- HandlerMapping,直接从springboot的WebMvcAutoConfiguration这里开始:这里把RequestMappingHandlerAdapter交由spring管理,我们看看RequestMappingHandlerAdapter的类继承关系:它实现了一个InitializingBean...

2020-04-15 19:50:45 239

原创 简单直接让你也读懂springmvc源码分析(2)-- HandlerMapping

关于springboot整合springmvc的源码分析可以参考以下系列文章:springboot整合springmvc源码分析(1)--前言 springboot整合springmvc源码分析(2)--承上启下 springboot整合springmvc源码分析(3)--直击内容我们这系列文章主要来分析的是关于springmvc的源码为了方便debug我们这里创建一个spring...

2020-04-15 19:50:10 252

原创 简单直接让你也读懂springmvc源码分析(1)-- DispatcherServlet

DispatcherServlet干什么用的?我们从源码注释中可以得知:用于HTTP请求处理程序/控制器的中央调度器,例如用于web UI控制器或基于HTTP的远程服务导出器。发送到注册处理程序进行处理web请求,提供方便的映射和异常处理工具。DispatcherServlet说实在的他就是一个Servlet,将其注册到tomcat的Servlet容器里,然后接受到请求进入到ser...

2020-04-15 19:49:38 516 5

原创 springmvc实用篇 -- WebMvcConfigurer

WebMvcConfigurer这个接口干什么用,文字上的描述我就不再说了,我们直接从功能入手就知道这玩意能帮我们做些什么事首先我们打开这个接口所定义的那些方法public interface WebMvcConfigurer { default void configurePathMatch(PathMatchConfigurer configurer) {} default vo...

2020-04-13 21:10:19 2509

原创 springmvc实用篇 -- @ControllerAdvice

@ControllerAdvice该注解我相信大多数人都熟悉,顾名思义,这是一个增强的 Controller。使用这个可以实现三个方面的功能:1).全局异常捕捉处理:@ExceptionHandler2).全局数据绑定:@ModelAttribute3).全局数据预处理:@InitBinder下面我们来展示下该注解的魅力一、全局异常捕捉处理:@ExceptionHandler...

2020-04-12 22:09:22 365

原创 springboot整合springmvc源码分析(3)--直击内容

springboot整合springmvc源码分析(1)--前言 springboot整合springmvc源码分析(2)--承上启下通过第一章的猜想和第二章的否认,我们这章直接来分析springboot整合springmvc核心源码由之前的揭密springboot自动装配(2)--AutoConfigurationImportSelector系列文章中,我们已经大概知道spring...

2020-04-11 15:18:39 987

原创 springboot整合springmvc源码分析(2)--承上启下

根据上章留下的猜想,我们开始对其进行源码分析,一探究竟<modelVersion>4.0.0</modelVersion> <packaging>pom</packaging> <parent> <groupId>org.springframework.boot</groupId>...

2020-04-11 15:18:31 405

原创 springboot整合springmvc源码分析(1)--前言

springboot是怎么做到内嵌tomcat,而不需要去部署项目到tomcat的,在分析springboot整合springmvc前,我们先来说说一点关于tomcat的东西,我们这里不需要下载tomcat服务,只需要new 一个tomcat 即可,下面我们来一个例子看看org.apache.tomcat.embed:tomcat-embed-core:9.0.31public cla...

2020-04-11 15:18:19 992

原创 spring bean生命周期(包含spring常用接口的载入)

spring bean生命周期流程图:其中包含了很多常用的接口,可以参考spring 常用接口;下面写个例子证明下:1.实现InitializingBeanpublic class UserB implements InitializingBean { private String name; private int age; private Us...

2020-04-10 09:05:39 156

原创 spring 比较常用且很好用的接口

在spring文档中有一批继承Aware接口,而Aware的作用是:A marker superinterface indicating that a bean is eligible to be notified by the Spring container of a particular framework object through a callback-style method....

2020-04-10 09:05:16 760

原创 spring Aop(3)--源码解析

前面AbstractAutowireCapableBeanFactory.createBean()这个方法ioc之前已经说过,下面是部分熟悉代码try { // Give BeanPostProcessors a chance to return a proxy instead of the target bean instance. Object bean...

2020-04-09 08:56:08 233 1

原创 spring Aop(2)--cglib代理

在分析springAop前,我们需要先了解下cglib代理这个知识点,之所以这么说是因为springAop的底层实现就是采用cglib动态代理这种方式,所以有必要在这里说一下,废话不多说,直接上例子1.创建需要被代理的类,我们直接采用上一章的UserA类public class UserA { private String name; private int age;...

2020-04-09 08:55:51 167

原创 spring Aop(1)--注解使用

二话不说直接开始上例子1.定义UserA类,也就是业务类2.创建Aspect@Aspect@Componentpublic class UserAspects { @Pointcut("execution(* com.example.demo.service.*.*(..))") public void userAspects(){} @Befor...

2020-04-09 08:55:39 186

原创 揭密springboot自动装配(5)--ioc及@Autowired注解

@Autowired 注解的bean什么时候实例化给它?我们直接从AbstractAutowireCapableBeanFactory.doCreateBean开始,这个方法从上一章内容可得知是创建实例化对象然后放入三级缓存的singletonFactories里面,我们接着这个方法继续深究protected Object doCreateBean(final String bean...

2020-04-08 14:15:21 668 1

原创 揭密springboot自动装配(4)--ioc及创建beanFactory

根据上一章的提问:bean注册到beanDefinitionMap之后什么时候进行实例化?什么时候放进beanFactory?我们回到继续回到AbstractApplicationContext.refresh这里@Override public void refresh() throws BeansException, IllegalStateException { ...

2020-04-08 14:15:09 903

原创 揭密springboot自动装配(3)--ioc及调用selectImposts

接着上一章的提问,何处调用了这个selectImposts方法?我们从这个启动类的SpringApplication.run方法跟进去public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch = new StopWatch(); stopWatch.start();...

2020-04-08 14:14:59 1608

原创 揭密springboot自动装配(2)--AutoConfigurationImportSelector

我们从启动类里的@SpringBootApplication注解开始里面有三个主要注解@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan这里自动装配的主要注解是@EnableAutoConfiguration这个,我们跟进去看看会发现这里面有引入我们上章提到的神秘东东AutoConfigurati...

2020-04-08 14:14:22 1898 10

原创 揭密springboot自动装配(1)--ImportSelector

揭密springboot自动装配,在讲这个之前,我们先来个例子热热身首先我们先来了解下ImportSelector这个接口的应用,ImportSelector接口是spring中导入外部配置的核心接口,在SpringBoot的自动化配置和@EnableXXX(功能性注解)都有它的存在,具体怎么用下面走个例子看看1.实现下ImportSelectorpublic class Use...

2020-04-08 14:13:59 2608 2

原创 pdf打标模板与xml数据自动填充

PdfReader.unethicalreading = true; PdfReader reader = new PdfReader("/templates/demo.pdf");//pdf模板 OutputStream os = new FileOutputStream("D://demo.pdf");//生成pdf路径 PdfStamper ...

2018-09-28 11:58:08 1426

原创 highchart图表 | 改变图表颜色

highchart默认颜色:加上如下代码即可:colors:[ '#000000',//黑 '#FF0000',//红 '#00FF00',//绿 '#0000FF',//蓝 '#FFFF00',//黄 '#FF00FF',//紫 ...

2018-02-09 14:16:15 3394

原创 highchart图表 | 加基准线

加上如下代码即可:plotLines:[{//基准线 color:'#FF4040', dashStyle:'Dash', width:1.5,//基准线宽度 value:5,//基准线的参考值 zIndex:5 }]该代码加在xAxis里或者yAxis,xAxi...

2018-02-09 14:12:09 3782

原创 springboot系列 | 定时任务

定时任务顾名思义就是设置一定时间让任务自动在规定时间上运行依赖包引入<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM

2018-02-05 11:34:15 488

原创 springboot系列 | 开启缓存(redis)

这篇基于redis在springboot中开启缓存处理项目目录结构依赖包引入<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ma

2018-02-05 11:00:45 1589

原创 springboot系列 | 与redis整合

项目目录结构依赖包引入<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http:/

2018-02-05 10:37:45 3873 1

原创 springboot系列 | 与mybatis整合

springboot与mybatis整合及其简单,与传统SSM框架整合少了很多烦人的配置,springboot与mybatis整合只需导入mybatis包,这样springboot就会帮我们自动配置及整合了。下面直接上所需代码:依赖包引入整个pom.xml文件如下:<project xmlns="http://maven.apache.org/POM/4.

2018-02-05 10:10:35 41216 12

原创 springboot系列 | 配置文件

可采用该网站https://start.spring.io/进行springboot项目创建生成pom.xml文件内容:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://

2018-02-02 16:05:48 356

原创 基于springmvc实现的接口进行json数据自动加解密

需求:接口接收到加密的json数据,然后自动进行解密成json数据后再解析成对象,然后进行业务操作,结果返回json数据自动进行加密操作发送到客户端。实现接口json数据自动加解密的方法有很多种,可以自定义一个注解,一个加密注解一个解密注解,例如参考这篇文章。或者也可以通过拦截器实现HandlerInterceptor,preHandle 在执行controller处理之前执行解密解析,然

2018-01-26 16:17:59 6269 1

原创 java面试经

最近趁有空整理下面试经常会被问到的知识点,参考的资料都是本人通过百度而挑选出来的,具有一定的参考意义。一 、java基础1.String和StringBuffer、StringBuild的区别:http://blog.csdn.net/rmn190/article/details/14920132.hashcode和equals方法的关系:http://blog.csdn.ne

2018-01-22 15:43:36 1230

activeMQ+spring整合

基于meven构建,activeMQ+spring整合,里面也包括了mybaits在里面

2017-11-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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