失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Spring源码深度解析二-Spring源码如何导入?

Spring源码深度解析二-Spring源码如何导入?

时间:2019-08-27 17:02:26

相关推荐

Spring源码深度解析二-Spring源码如何导入?

Spring源码深度解析二-Spring源码如何导入?

大家好,上章介绍了Spring的一些常识。今天我们就从一个demo开始入手,讲解Spring的源码如何导入,怎么一步一步的查看Spring的启动流程。本次讲解源码以Spring5.1.3版本为例

一、准备工作

1、安装JDK1.8版本。

2、 因为Spring源码是使用gradle进行构建的,所以需要安装配置gradle。

3、Spring源码下载

下载spring源码包,git clone /spring-projects/spring-framework到下载的spring源码路径执行gradle命令,gradlew :spring-oxm:compileTestJava,编译Spring源码用idea打开spring源码工程,在idea中安装插件kotlin,重启idea把编译好的源码导入到工程中

二、开始搭建一个Spring项目

1、新建一个maven项目

2、Spring核心组件引入

Spring中最核心的4个Jar包如下:

spring-beansspring-corespring-contextspring-expression

但要创建一个Spring项目,理论上最简单只需要一个Jar就够了

<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency>

3、日志组件引入

但是一个空的Spring项目是不能打印日志的,因此需要引入Spring依赖的日志

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>LATEST</version></dependency>

4、完整的pom文件

<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.xiangxue.jack</groupId><artifactId>spring-source</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><name>spring-source Maven Webapp</name><!-- FIXME change it to the project's website --><url></url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><piler.source>1.7</piler.source><piler.target>1.7</piler.target><spring.version>5.1.3.RELEASE</spring.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>LATEST</version></dependency></dependencies><build><finalName>spring-source</finalName><pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- see /ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.2.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin></plugins></pluginManagement></build></project>

5、新建Spring配置文件

XSD 是编写xml文件的一种规范,有了这个规范才能校验xml 是否写错,在spring 中同样有 XSD 规范。例如要引入自定义标签

<context:component-scan base-package=“com.xx.jack”/>

就必须引入这个标签对应的 XSD 文件

<beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd"default-lazy-init="false"><!--自定义标签--><context:component-scan base-package="com.spring"/><!--传统标签--><bean class="com.spring.demo.Student" id="student"/></beans>

6、新建JAVA bean

新建一个student的bean,并为添加注解@Component,注入到Spring组件中

package com.spring.dk.bean;@Componentpublic class Student {private String username = "dk";private String password;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

三、源码导入

spring项目已经建好了,我们接下来就需要将SPring源码导入进来,这样就可以通过一个demo进行对Spring的代码进行debug。

1、选择项目引入的依赖spring-context

2、lib替换

在classes选择+号,选择源码中编译好的lib包。

3、Source替换

在source栏点击+号,选择源码包目录

四、执行测试用例

1、编写Spring测试用例

package com.spring.demo.test;import com.spring.demo.Student;import org.junit.Test;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MyTest {/** spring* */@Testpublic void test1() {/** Spring自动扫描* */AnnotationConfigApplicationContext appcationContext = new AnnotationConfigApplicationContext("com.spring");Student student = (Student) appcationContext.getBean("student");System.out.println(student.getUsername());}@Testpublic void test2() {//基于xml的方式加载spring的配置文件,启动spring容器ClassPathXmlApplicationContext appcationContext = new ClassPathXmlApplicationContext("spring.xml");Student student = (Student)appcationContext.getBean("student");System.out.println(student.getUsername());}}

2、测试结果

至此,一个简单地Spring项目就搭建完成,并且引入了我们编译好的源码包,点击AnnotationConfigApplicationContext就可以跳到对应的源码处,接下来,就可以通过demo来debug源码,一步一步看Spring的执行过程了。

如果觉得《Spring源码深度解析二-Spring源码如何导入?》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。