在eclipse中配置一个简单的spring入门项目

  spring是一个很优秀的基于Java的轻量级开源框架,为了解决企业级应用的复杂性而创建的,spring不仅可用于服务器端开发,从简单性、可测试性和松耦合性的角度,任何java应用程序都可以利用这个思路进行开发,Spring的核心就是控制反转(IoC)和面向切面(AOP),总的来说,Spring是一个分层的Java轻量级框架

  所谓控制反转就是利用某种技术实现低耦合,对象之间相互的依赖关系是通过被动的方式传递进来,而不是对象主动进行另外对象的使用和查找,就是说控制权交给了容器,在初始化的时候,容器将实例化好的对象不用请求就主动传递过来,开发过程中不用进行任何的实例化对象就可以使用对象的方法,使用起来也感觉更加的轻松,所有的对象在spring中都是一个bean,spring提供了一种完善的javabean的依赖管理,实际上就是常说的依赖注入,是通过依赖注入的方式实现了控制反转的操作

  面向切面就是通过分离应用程序的业务逻辑和系统级服务,进行高内聚性的开发,应用对象只完成自己该完成的业务逻辑操作,其他的完全不必考虑,例如系统日志或其他事务等系统服务级操作对象完全不必关心,这样模块化更加清晰,更加适用于逻辑复杂的业务系统

  刚接触spring时会出现很多不好理解的概念,下面从一个最简单的例子开始,进入spring的学习,让spring更加的形象

  首先去spring官网下载spring framework框架,官网地址就是spring.io,一个非常简洁的页面

  

  然后点击导航栏的PROJECTS,看到一些比较大块的项目,单击SPRING FRAMEWORK

  

  然后就进入了spring framework的首页,网址是http://projects.spring.io/spring-framework/,向下拉右面有一些介绍文档点击超链接就可以,或者点击下面的"the modules section fo the reference documentation"超链接查看文档

  

  然后,就看到了很有名的一张图片就是spring framework框架的架构原理图

  

  通过这张图可以清楚的看出spring的大体构成,继续下拉页面,点击超链接:http://repo.spring.io/release/org/springframework/spring/

  

  这个就是最后的下载地址了,里面有所有的历史版本,自己可以根据需要选择下载,

  

  我这里下载的是最新的spring framework 4.2.4完整版本:spring-framework-4.2.4.RELEASE-dist.zip,也就是第一个,下载之后解压出来即可

  

  解压好之后,打开下面的libs目录,这里面就是spring framework所有的jar包了,我们打开eclipse建立一个项目,普通项目或者web项目都可以

  然后,我们复制必要的jar包,放到项目的某一个指定目录下或者web项目的lib目录下,需要的jar包如下图:

  

  这些就是项目所必须的jar包,需要扩展功能可以根据实际需要导入,复制之后如果是web项目会自动导入到项目,如果是普通项目则需要Build Path导入一下就可以使用了,其中junit-4.1.0.jar不是必须的,这只是单元测试所需要的一个jar包;commons-logging-1.2.jar项目中是没有的,它是Apache的日志管理工具,spring为了所有的java应用程序进行统一的日志接口管理,所以需要下载commons-logging.jar这个包,下载地址是:http://commons.apache.org/proper/commons-logging/index.html,进入后点击Download下载就行,然后和spring的包一起导入

  包都导入完毕了,接下来实现一个很简单的功能,我们建立一个接口,实现的就是输出一句话,代码如下:

1 package net.zengzhiying.spring;
2 
3 public interface IHelloMessage {
4     public String sayHello();
5 }

  有两个类分别实现这个接口,分别返回中文的"大家好!"和英文的"HelloWorld!",代码如下:

 1 package net.zengzhiying.spring;
 2 
 3 public class HelloChina implements IHelloMessage {
 4 
 5     @Override
 6     public String sayHello() {
 7         return "大家好!";
 8     }
 9 
10 }
 1 package net.zengzhiying.spring;
 2 
 3 public class HelloWorld implements IHelloMessage {
 4 
 5     @Override
 6     public String sayHello() {
 7         return "HelloWorld!";
 8     }
 9 
10 }

  按照一般的使用,我们会分别实例化对象调用里面的方法使用,或者利用多态的概念通过接口来统一实例化对象使用里面的方法,其实有了spring就不用了,我们现在建立一个实体的类,用来放置接口实例化出的对象,

 1 package net.zengzhiying.spring;
 2 
 3 public class Person {
 4     private IHelloMessage helloMessage;
 5 
 6     public Person() {
 7         
 8     }
 9     
10     //带参构造器注入
11     public Person(IHelloMessage helloMessage) {
12         this.helloMessage = helloMessage;
13     }
14     
15     public IHelloMessage getHelloMessage() {
16         return helloMessage;
17     }
18 
19     public void setHelloMessage(IHelloMessage helloMessage) {
20         this.helloMessage = helloMessage;
21     }
22     
23     public String sayHello() {
24         return this.helloMessage.sayHello();
25     }
26     
27 }

  这个类就是一个Bean,一般的规范就是属性私有,并且设置get/set方法,分别有无参的和带参的构造方法,方便使用构造器进行对象的注入,这些类编写完了,然后我们在项目根目录下编写一个配置文件helloMessage.xml,就是这个核心的配置文件,交代了spring应该怎么样对容器中的对象进行管理,所以说这个xml配置文档是spring的最重要的部分之一,我们配置代码如下:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"
 3     "http://www.springframework.org/dtd/spring-beans.dtd">
 4 <beans>
 5 
 6 <bean id="helloWorld" class="net.zengzhiying.spring.HelloWorld"></bean>
 7 
 8 <bean id="helloChina" class="net.zengzhiying.spring.HelloChina"></bean>
 9 
10 <bean id="person" class="net.zengzhiying.spring.Person">
11     <!-- 配置依赖关系  控制反转  get/set方法注入 -->
12     <!-- <property name="helloMessage" ref="helloWorld"></property> -->
13     
14     <!-- 构造器注入 -->
15     <constructor-arg ref="helloWorld" />
16 </bean>
17 
18 </beans>

  除了通用的头部声明外,所有的配置代码都写到<beans>里面,<bean>就是我们需要控制反转的所有类,然后后面需要向Person中进行对象的注入,可以用过get/set方法进行注入,也可以通过构造方法进行注入,name就是注入的属性名,ref就是需要将哪个类的实例化对象注入进去,这样就完成了简单的配置,也不难理解

  接下来我们配置主类,用来执行相应的方法,代码如下:

 1 package net.zengzhiying.spring;
 2 
 3 import org.springframework.beans.factory.BeanFactory;
 4 import org.springframework.beans.factory.xml.XmlBeanFactory;
 5 import org.springframework.core.io.FileSystemResource;
 6 import org.springframework.core.io.Resource;
 7 
 8 public class Main {
 9 
10     public static void main(String[] args) {
11         //引入配置文件
12         Resource r = new FileSystemResource("helloMessage.xml");
13         //加载配置文件
14         BeanFactory f = new XmlBeanFactory(r);
15         //获取Person实例
16         Person person = (Person) f.getBean("person");
17         String s = person.sayHello();
18         System.out.println(s);
19     }
20 
21 }

  现在只需要引入并加载配置文件,调出bean对象,然后就可以任意使用所有的类中的方法了,可以通过注入不同的类实现不同的操作,结果如下:

  

  同样的,现在我们也可以通过注入HelloChina类来输出大家好!实现起来也比较简单

  以上就是一个简单的spring初学小例子,体现了依赖注入的方式和控制反转的思想,spring让复杂应用的开发变得清晰简单了

  

原文地址:https://www.cnblogs.com/freeweb/p/5100131.html