目录
1、疑问
文章一 说了怎么导入Spring的源码,但是怎么调试呢?
我是通过创建项目,写Spring应用示例,在Spring 的jar包中打断点进行源码分析的。
2、创建maven工程
pom.xml 引入依赖
<properties>
<!-- Spring 3.x 最新发布版本 -->
<!--<spring.version>3.2.18.RELEASE</spring.version>-->
<!-- Spring Framework 5.0 最新的版本 -->
<spring.version>5.0.6.RELEASE</spring.version>
</properties>
<dependencies>
<!-- Spring 5.0 最新发布版本 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<!-- Spring 5 索引依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-indexer</artifactId>
<version>${spring.version}</version>
<optional>true</optional>
</dependency>
</dependencies>
创建User实体类
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
创建Spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user" class="thinking.in.spring.boot.samples.spring5.bean.User">
<property name="name" value="zhangsan"/>
<property name="id" value="1"/>
</bean>
</beans>
创建Spring引导类
public class XmlBeanFactoryBootstrap {
public static void main(String[] args) {
DefaultListableBeanFactory defaultListableBeanFactory = new XmlBeanFactory(new ClassPathResource("application-context.xml"));
User user = defaultListableBeanFactory.getBean(User.class);
System.out.println(user);
}
}
3、调试
打断点
如上图,我们点开 ClassPathResource 源码,并在里面打断点(下图)
进入断点
运行Spring引导类,进入断点(下图)
就这样逐层进入调试,分析Spring源码