eclipse 搭建Spring源码环境
很久没有接触Spring了,想着看下Spring的源码,就有了这篇博文。虽然相当简单,但还是想记录下。
准备工作
1、spring jar包,下载地址:http://repo.spring.io/release/org/springframework/spring/
2、eclipse
1、使用eclipse搭建一个简单的关于Spring的Demo。
第一步:打开eclipse,新建一个dynamic web project 。名字任意,这里取名为:SpringDemo02.
点击“finish”即可。
第二步:右键项目名称—-》属性。
点击“add library”—->”user Library”
随便取一个名字来存放Spring相关的lib,这里取名为SpringLib2.
第三步:点击“Add External JARS”,添加我们在这里(http://repo.spring.io/release/org/springframework/spring/)下载下来并解压缩后的文件夹Spring/libs文件夹下的jar包。如果我们不清楚把什么jar包加进去,就全部加进去哈。
注意:这里还需要添加一个包:commons-logging-1.2.jar项目中是没有的,它是Apache的日志管理工具,spring为了所有的java应用程序进行统一的日志接口管理,所以需要下载commons-logging.jar这个包,下载地址是如下:
http://commons.apache.org/proper/commons-logging/index.html
进入后点击Download下载就行,然后和spring的包一起导入即可。
最后工程的目录如下:
第四步:包都导入完毕了,接下来实现一个很简单的功能
我们建立一个接口和两个实现类,实现的就是输出一句话,代码如下:
package module;
public interface IHelloMessage {
public String sayHello();
}
package module;
public class HelloJava implements IHelloMessage{
@Override
public String sayHello() {
System.out.println("hello java");
return "java";
}
}
package module;
public class HelloPython implements IHelloMessage{
@Override
public String sayHello() {
System.out.println("hello python");
return "python";
}
}
按照一般的使用,我们会分别实例化HelloJava和HelloPython来调用里面的方法使用,或者利用多态的概念通过接口来统一实例化对象使用里面的方法,其实有了spring就不用了,我们现在建立一个实体的类,用来放置接口实例化出的对象。
代码如下:
package module;
public class Person {
private IHelloMessage helloMessage;
public Person(){}
public IHelloMessage getHelloMessage() {
return helloMessage;
}
public void setHelloMessage(IHelloMessage helloMessage) {
this.helloMessage = helloMessage;
}
public Person(IHelloMessage helloMessage) {
super();
this.helloMessage = helloMessage;
}
public String sayHello(){
return this.helloMessage.sayHello();
}
}
一般的规范就是属性私有,并且设置get/set方法,分别有无参的和带参的构造方法,方便使用构造器进行对象的注入,然后我们在项目src目录下编写一个配置文件bean.xml,就是这个核心的配置文件,交代了spring应该怎么样对容器中的对象进行管理,所以说这个xml配置文档是spring的最重要的部分之一,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="helloJava" class="module.HelloJava"></bean>
<bean id="helloPython" class="module.HelloPython"></bean>
<bean id="person" class="module.Person">
<!-- 配置依赖关系 控制反转 get/set方法注入 -->
<!-- <property name="helloMessage" ref="helloPython"></property> -->
<!-- 构造器注入 -->
<constructor-arg ref="helloPython" />
</bean>
</beans>
测试类,内容如下:
package test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import module.Person;
public class TestSpringDemo {
public static void main(String[]args){
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");//读取bean.xml中的内容
Person person =ctx.getBean("person",Person.class);//创建bean的引用对象
String s = person.sayHello();
System.out.println(s);
}
}
以上,就完成了所有的工作,然后点击运行即可。
最后,由于我们想看Spring源码,具体步骤如下:
1、右键项目名—>属性
2、点击“edit”,在External location中制定相对应的XXX-sources.jar即可。例如:spring-beans-4.3.5.RELEASE-sources.jar
就这样,我们就实现了在eclipse中跟踪Spring的源码了。