主页

spring-boot2 idea jsp 404 问题探究(tomcat启动流程探究)

一、前言 ​ 最近有小朋友在学习spring boot的时候遇到了一个问题,按照教程上操作始终是404.于是就百事不得其解.问我的时候,我也一脸蒙B,毕竟jsp这玩意儿好久都没碰到过了,之前碰jsp的时候还是在ssh的时候. ​ 既然遇到问题就来分析一下呗,趁着最近在看spring的源码. 二、案发现场 ymal: server: port: 9090 spring: mvc: view: prefix: /WEB-INF/jsp/ suffix: .jsp pom: <dependencies> <dependency> <groupId>org.sp...

阅读更多

[断点分析之spring-ioc]-bean属性填充与初始化(九)

一、前言 ​ bean是创建好了,但还需要一些属性填充,初始化等操作. // 属性填充 populateBean(beanName, mbd, instanceWrapper); // 初始化bean exposedObject = initializeBean(beanName, exposedObject, mbd); 二、populateBean protected void populateBean(String beanName, RootBeanDefinition mbd, @Nullable BeanWrapper bw) { // 跳过 null bean 赋值 if (bw == null) { if (mbd.hasProperty...

阅读更多

[断点分析之spring-ioc]-bean的创建(八)

一、前言 ​ 经过前面的一顿折腾,终于要到了扯开遮羞布的时候了. @Test public void testSpringLoadXml(){ // A BeanFactory factory = new XmlBeanFactory(new ClassPathResource("com/sjr/test/bean/MyTestBean.xml")); // B final MyTestBean testBean = factory.getBean("myTestBean",MyTestBean.class); final String testStr = testBean.getTestStr(); System.out.println(test...

阅读更多

[断点分析之spring-ioc]-BeanDefinitionHolder注册(七)

一、前言 ​ 通过前面大批量的工作,终于要到注册BeanDefinitionHolder这一步了.当然还是通过一下代码作为入口进行分析. protected void processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) { // 解析xml元素 BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele); if (bdHolder != null) { // 装饰bean bdHolder = delegate.decorateBeanDefinitionIfRequired(e...

阅读更多

[断点分析之spring-ioc]-BeanDefinitionHolder装饰(六)

一、前言 ​ 在xml标签解析完之后会产生一个BeanDefinitionHolder对象,紧接着就来谈谈,spring用这个对象来干嘛吧. //DefaultBeanDefinitionDocumentReader.java protected void processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) { // 解析xml元素 BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele); if (bdHolder != null) { // 装饰 bdHolder = d...

阅读更多

[断点分析之spring-ioc]-bean标签解析(五)

一、前言 ​ 分析了import标签、alias标签,顺势引出了bean标签,只不过bean标签逻辑较为复杂没有记录完. 二、从BeanDefinitionParserDelegate开始 // BeanDefinitionParserDelegate @Nullable public BeanDefinitionHolder parseBeanDefinitionElement(Element ele) { return parseBeanDefinitionElement(ele, null); } /** * Parses the supplied {@code <bean>} element. May return {@code null} ...

阅读更多

[断点分析之spring-ioc]-xml标签解析(四)

一、前言 ​ 接上文,分析了spring 把 xml 文件读取到内存中,并生成一个document对象,然而离创建bean还比较遥远.在xml中定了bean该如何创建的规则,而spring也是遵循xml中的标签所描述规则来进行创建bean.接下来就是要分析,spring是如何解析这些标签的. 二、分析 ​ 还是常规套路,从下面的测试代码开始. @Test public void testSpringLoadXml(){ BeanFactory factory = new XmlBeanFactory(new ClassPathResource("com/sjr/test/bean/MyTestBean.xml")); final MyTestBean testBean...

阅读更多

[断点分析之spring-ioc]-xml文件解析(三)

一、前言 ​ 前面资源文件加载搞定了,来看看 spring 是如何把 xml 文件变成 bean 的吧. 二、分析 ​ 还是从4句代码看起. @Test public void testSpringLoadXml(){ // 加载xml BeanFactory factory = new XmlBeanFactory(new ClassPathResource("com/sjr/test/bean/MyTestBean.xml")); // 获取bean final MyTestBean testBean = factory.getBean("myTestBean",MyTestBean.class); final String testStr =...

阅读更多