springboot的最强大的就是那些xxxAutoconfiguration,但是这些xxxAutoConfiguration又依赖那些starter,只有导入了这些场景启动器(starter),我们很多自动配置类才能有用,并且还会新增一些功能, 这次就来一起写个简单的starter,来看看内部到底是什么原理! 脑中大概有个印象:我们要用一个场景(比如web),直接导入下图所示的依赖,但是在jar包里面去看这个,你会发现里面只有一些基本的配置文件,什么类都没有,就能够想到这个一类就类似一个公司…
上一节说到实例化了所有的单实例Bean,后面还有一步遍历 12.完成容器刷新(finishRefresh();) 那个和生命周期有关的后置处理器类型是LifecycleProcessor:监听器原理我就不多说了吧(大概原理参考我写的“知识小罐头”)..... 到此为止,ioc容器的源码我就粗略的走了一遍.还是那句话,我这是很简单很粗糙的走了一遍,其中有很多的原理都没有说,要想真的弄懂,我这个只能当个大概的思路,还需要自己去找找其他大牛的教程,试试走走源码,会有意想不到的收获. 下一节估计又要回到…
上一节走了一遍从浏览器发出请求到得到向页面的流程,基本的功能是已经实现了.但是现在啊,我想自定义一个拦截器(拦截器可以做用户登录验证,如果登录了,就让你通过,如果没有登录,就重定向登录页面),这里就不复杂了,简单实现以下原理,除了不拦截“/hello”请求,其他请求我都拦截并跳转到index.html. 1.了解springboot的配置类格式 springboot的配置类最常见的就是在类上面标注@Configuration,表示这是一个配置类(就是以前的xml): 第一种:在配置类的里面就有很…
emmm.....这次先不说springboot原理,先好好回顾一下以前的注解版spring原理,先把spring原理了解清晰了,再看springboot原理更容易. 要说起spring,最重要的就是创建ioc容器的全过程,也可以叫做生命周期. 所谓的ioc容器就是实现类:我们常看到的,有一个最顶层的BeanFactory接口,还有一个子接口ApplicationContext,其实现类都可说是ioc容器(称呼很笼统),只是ApplicationContext功能更强大,而且可以通过配置文件来实…
上一节讲到了快速新建一个springboot应用,以及springboot的自动配置类起作用的时机,并且一起看了一个自动配置类的源码. 这一节我们来粗略看看当用户在浏览器输入一个url,怎么样返回一个静态HTML和动态网页,以及其中的原理. 在此之前说一点,springboot不支持jsp,也就是说以前我们写的jsp页面页面在这里解析不了,换句话说,springboot肯定有一个自己独有的类似jsp的技术来实现动态网页的访问,这点毫无疑问,不然一个网站只能访问html网页,太单调了. sprin…
先继续接上一篇,那个启动原理还有一点没说完. 6. afterRefresh(context, applicationArguments); 看这个名字就知道,应该就是ioc容器刷新之后的一些操作了,我们来看看内部是怎么做的 可以看看callRunner方法,其实就是执行这个xxxRunner里面的run方法 下面我说说这两个ApplicationRunner和CommandLineRunner是个什么东西,emmm..本来我也不知道,但是查了好半天的资料.博客,知道了一点,说实话,这两个东西功…
通过前面这么多讲解,springboot原理应该也大概有个轮廓了,一些基本的配置,从客户端url到controller(配置一些要用的组件,servlet三大组件,处理器映射器,拦截器,视图解析器这些都说过了),然后通过Dao和数据库打交道(配置数据源.Druid监控都说了,其实我后面要写的就是springboot和mybatis.springdata jpa的整合运用了),顺便还说了一下spring中ioc容器的创建原理. 今天就来一点更好玩的东西,大家还记得最开始的那个主配置类吧(就是有ma…
上一节把springboot和jdbcTemplate大概用法说了一下,以及大概看了一下源码,还说了加载sql文件时的原理. 这一节来看看自动注入JdbcTemplate的原理,顺便用一用Druid数据源(功能比较强大,可以想象成一个监督设备,可以监控很多东西) 话说,sql文件要放在类路径下,建表sql(schema-all.sql或者schema.sql),插入数据的sql(data-all.sql或者data.sql),那能不能自定义名字呢? 1.自定义sql文件名称 在yml文件里面,指…
emmm.....常规开局,继续说一下废话,前面简单的说了一下spring的ioc容器创建原理(花了不少时间去看了别人的博客+查了不少资料+自己的理解),相信大家对ioc容器有了一个初步的认识了. springboot学了这么久了,也该和数据库打打交道了.大家还记不记得,以前最初用spring和数据库打交道的一个东西,JdbcTemplate(就是对jdbc做了一个简单的封装,忘记了的小伙伴去看看别人的博客回顾一下),今天就用springboot如何使用JdbcTemplate和数据库交互以及基…
继续开头说些废话,我也不知道什么鬼,每次写着写着经常会写到其他地方去了,太容易分神了. 这次说一下springboot对于springmvc的大概整个流程,以请求动态网页为例 . 1.梳理一下springmvc的大概流程 首先是客户端(浏览器)发送请求到前端控制器(dispatcherServlet)-------------->前端控制器就会去调用处理器映射器(HandlerMapping),去寻找真正的Handler(其实就是controller),返回执行器链(HandlerExecuti…