[Spring]深度解析系列 - 概述
2019-11-02 本文已影响0人
起个名忒难
2018.5 月的时候 写过一篇文章 - Spring IOC 实现原理,到现在有8000多的阅读了吧。 看来还是有很多人在研究IOC的实现原理。当时写的比较粗糙。所以准备这次来一个详细点的。计划写一个深度解析的系列 。想法很好,能不能完成说实话我也不是很确定。因为工作比较忙,尽量吧。
之前的文章,链接在这 ,点我 ,为了控制每篇文章的篇幅,在之前文章已经描述过的概念,就不再赘述,因为此系列是基于上一篇文章的扩展,建议读一下之前的那篇文章,直接进入正题。
此系列计划会有6篇文章:
-
资源定位
-
标签的解析,包含自定义标签的解析
-
Bean的载入和解析
-
Bean注入容器
-
依赖的注入
-
容器的其它特性功能
现在springboot很流行,新创建的项目基本上都是使用的springboot ,开发者几乎不用再搞一堆很长的配置文件,springboot已经封装好了。当然带来的好处就是,开箱即用,也有弊端,屏蔽了底层的实现,对原理理解起来也更难了。为了使逻辑更加的清晰,或者更容器找到解析的入口,此系列依然采用Springmvc的文件配置方式。
环境准备
- xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd" default-autowire="byName">
<bean id="messageService" class="com.yuluo.source.service.MessageServiceImpl"/>
</beans>
- 程序入口:
public static void main(String[] args) {
//SpringApplication.run(SpringDemo2Application.class, args);
// 用我们的配置文件来启动一个 ApplicationContext
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:application.xml");
System.out.println("context 启动成功");
// 从 context 中取出我们的 Bean,而不是用 new MessageServiceImpl() 这种方式
MessageService messageService = context.getBean(MessageService.class);
// 这句将输出: hello world
System.out.println(messageService.getMessage());
}
- 创建接口
public interface MessageService {
String getMessage();
}
- 接口实现类
public class MessageServiceImpl implements MessageService {
public String getMessage() {
return "hello world";
}
}
至此,一个基本的调试程序,就已经搭好了,使用断点就可以进入源码的流程调试了。