Eclipse 配置springIDE插件、搭建测试环境、简单的demo

3人阅读 评论(0) 收藏 举报
分类:

1. Spring框架简介 (以下这以下这段话可用于面试求职):

Spring为JavaEE开发提供了一个轻量级的解决方案,主要表现为:

  • IOC(或者叫做DI)的核心机制,提供了bean工厂(Spring容器),降低了业务对象替换的复杂性,提高了组件之间的解耦。
  • AOP的将一些通用任务,如安全、事务、日志等集中进行管理,提高了复用性和管理的便捷性
  • ORM和DAO提供了与第三方持久层框架的良好整合,简化了底层数据访问。
  • 提供了优秀的Web MVC框架。

可以说Spring是贯穿表现层、业务层、持久层,为javaEE提供一站式解决方案的框架。此外,使用Spring还有如下好处:

  • 低侵入设计,代码污染极低。
  • 基于Spring框架的应用,可以独立于各种应用服务器,实现 write once, run anywhere,
  • Spring可以与第三方框架良好整合(如ORM,DAO等模块与其他框架整合),但同时Spring提供了高度开放性,应用不会被强制依赖Spring,开发者可以自由选择Spring的部分或者全部。

Spring并不局限于中间层,而是为系统各层都提供了企业级解决方案(例如IOC可以

使用Spring框架可以带来诸多好处,例如进行数据库事务处理,远程调用,JMS消息处理,JMX操作处理,而这些处理都不需要开发人员直接使用相关API(JDBC, JMX, JMS 等)

2.Sping架构

Spring框架是分模块存在,除了最核心的Spring Core Container(即Spring容器)是必要模块之外,其他模块都是可选,视需要而定。

官方文档Spring4.0的架构图中,包含了20多个子模块,大致可以分为四类 1)核心容器(Core Container) 2)数据访问和集成(Data Access/Integration) 3)Web 4)AOP。

本质上Spring可以总结为以下七个模块。 
这里写图片描述 
其中常用模块的大致功能如下。

核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

**Spring 上下文:**Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。

Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向切面的编程功能集成到了 Spring 框架中。可以将一些通用任务,如安全、事务、日志等集中进行管理,提高了复用性和管理的便捷性。

Spring DAO:为JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。

**Spring ORM:**Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

**Spring Web 模块:**Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。

**Spring MVC 框架:**MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

环境搭建

1.下载插件,地址:http://spring.io/tools/sts/all 
选择对应的版本,我的eclipse是4.7.2所以使用的是4.6.3版本的插件 
这里写图片描述 
查看eclipse版本:Help—>AboutEclipse 
这里写图片描述 
2.选择Eclipse中help中的Install New Software,然后选择add,名称可以不写,然后选择Archive,在本地找到刚才事先下载好的压缩文件。 
3.选择文件中的四个IDE文件,如图: 
这里写图片描述 
4.将自动更新选项勾选掉:

5.然后点击下一步直到最后完成安装,重启Eclipse。 
过程中会提示一次是否继续安装,选择继续即可

6.最后Windows下的Preferences显示Spring选项即为安装成功。 
这里写图片描述

由于eclipse并没有自带spring的jar包所以,需要到官网下载

Spring framework下载,这个框架更新后变化很大,网上很多方案并不可取。需要下载的框架在文档说明里就有介绍,点进去慢慢看http://projects.spring.io/spring-framework/ 
目前的稳定版本是5.0.5了,按照链接点进去下拉如下 
这里写图片描述 
选中版本之后进去下载….RELEASE-dist.zip文件,如下图所示 
这里写图片描述 
还缺少commons-logging的jar包可以到这里下载 
http://commons.apache.org/proper/commons-logging/ 
这里写图片描述 
这里写图片描述

之后在Eclipse中添加一个user library,右键新建的java项目名—buildPath—add Library,选择user library,新建之后添加对应的jar包,包括将Spring压缩包解压之后,将libs目录下的 *….RELEASE.jar都选中;然后将commons包也解压,将根目录的*.1.3.jar也都添加进去 
其中创建时那个System Library不能勾选 否则后面运次时会产生一个空指针错误,如下 
Caused by: java.lang.NullPointerException 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.(DefaultListableBeanFactory.java:106) 
… 7 more 
这里写图片描述 
这里写图片描述 
添加成功后的效果如下 
这里写图片描述

4.简单demo及控制反转(IOC)和依赖注入(DI)简介 
J2EE提倡面向接口编程,Spring也是针对的接口编程,即在代码中只使用规范(即接口),而将真正的实现类配置在文件中,由Spring的配置文件来决定将会使用哪一个实现类,这也叫做控制反转(IOC)或者依赖注入(DI)。

现在我们假设有这么一个场景, 我们指定一类人去使用一类斧头,不同的人可以使用不同的斧头,当然其效果不一样。

按照J2EE的建议,首先我们需要定义“人”和“斧头”两个规范,即创建两个接口,

斧头接口

package spi;

public interface Axe {
    public String chop();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

斧头接口的一个实现:

package spi;

public class StoneAxe implements Axe{
    @Override
    public String chop() {
        return "石斧砍柴好慢";
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

人接口

package spi;

public interface Person {
    public void useAxe();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

人接口的一个实现

package spi;

public class Chinese implements Person {
    private Axe axe;
    public void setAxe(Axe axe) {
        this.axe = axe;
    }
    public void useAxe() {
        System.out.println("我打算去砍点柴火");
        System.out.println(axe.chop());
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

下面要写一个测试类,使用Person接口的一个实现类的对象,去调用Axe的一个实现类的对象,

按照传统编程方式,我们一般会写成下面这样,

package spi;

public class BeanTest {
    public static void main(String[] args) {
        Chinese p = new Chinese();
        StoneAxe axe = new StoneAxe();
        p.setAxe(axe);
        p.useAxe();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

重点是第6行和第7行,即Chinese类和StoneAxe类耦合在了java代码中,如果现在需求有变,我们在这里要使用一种新的斧头,即Axe有一个新的实现类SteelAxe,那么就必须修改这里的代码, SteelAxe axe = new SteelAxe(); 这对于代码维护其实并不方便。 对于这个问题,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="chinese" class="spi.Chinese">
        <property name="axe" ref="stoneAxe" />
    </bean>
    <bean id="stoneAxe" class="spi.StoneAxe" />
    <bean id="win" class="javax.swing.JFrame" />
    <bean id="date" class="java.util.Date" />
</beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

可以看到配置文件中定义了上面两个接口的实现类的具体包路径,其中stoneAxe还被定义成了Chinese类的一个属性,

有了这个配置文件之后,Spring就可以在底层利用java反射,首先创建出两个类对象(Chinese和StoneAxe),接着马上执行对象的setter方法,依据配置文件中各个类的依赖关系去初始化每个对象的属性,而这个过程,正是上面传统编程中的StoneAxe axe = new StoneAxe();p.setAxe(axe);这两步!

下面看看Spring方式在测试代码中的写法

package spi;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class BeanTest {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
        Person p = ctx.getBean("chinese", Person.class);
        p.useAxe();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

执行结果

我打算去砍点柴火
石斧砍柴好慢
  • 1
  • 2

可以看到,在测试代码中,完全没有了Chinese和StoneAxe两个类的耦合依赖关系,转而将依赖关系放在了上面的XML文件中,底层通过java反射的方式进行初始化。

即,将java代码中对象间的依赖关系的控制权交给了Spring配置文件,由Spring来生成对象,并且设置对象间的依赖关系,这就是控制反转(IOC)或者叫依赖注入(DI)。

Spring自动生成对象(可禁用)和设置依赖关系是最基本的功能。

Spring的IOC(或DI)机制,极大地降低了组件间的耦合,例如对于上面的需求变更,我们只需要在XML文件中新增一个bean节点,并设置好依赖关系即可,而测试代码不需要任何改变!

新增Axe的实现类,

package spi;

public class SteelAxe implements Axe { 
    public String chop() {
        return "钢斧砍柴好快";
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

修改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="chinese" class="spi.Chinese">
        <property name="axe" ref="steelAxe" />
    </bean>
    <bean id="stoneAxe" class="spi.StoneAxe" />
    <bean id="steelAxe" class="spi.SteelAxe" />
    <bean id="win" class="javax.swing.JFrame" />
    <bean id="date" class="java.util.Date" />
</beans>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

执行测试类结果

我打算去砍点柴火
钢斧砍柴好快
  • 1
  • 2

5.设值注入和构造注入

对于依赖注入,有两种方式,一种是设置注入,即上面XML配置文件中设置<property />标签的方式,这种方法本质上是利用反射调用对象的setter方式进行初始化。

另外,还可以使用构造注入的方式,即在XML配置文件中使用<constructor-arg />标签,不过这种方式要求有对应的构造方法才行。

对于上面的例子,首先我们要让Chinese类有一个构造方法,

 public Chinese(Axe axe) {
     this.axe = axe;
 }
  • 1
  • 2
  • 3

接着我们将XML配置文件中的<peroperty>标签用<constructor-arg>标签替换,

<bean id="chinese" class="spi.Chinese">
    <!--  <property name="axe" ref="stoneAxe" /> -->
    <constructor-arg ref="stoneAxe" />
</bean>
  • 1
  • 2
  • 3
  • 4

我们将得到一样的结果,只是实现的方式不一样而已。对于设值注入和构造注入两种方式如何选择呢,

一般的,如果对依赖关系无需变化地注入,尽量采用构造注入。其他依赖关系的注入则考虑采用设值方式注入。

查看评论

零基础学Java

本课程帮助想学习Java的同学走入Java的殿堂,开启学习Java之路。 老师深入浅出的介绍了Java环境的搭建,Java程序的编写,让每个学生都能开启自己的编程之路
  • 2018年04月12日 21:38

Eclipse配置springIDE插件

开始是在Eclipse中在线安装springIDE插件,结果装了好几次都是中途失败,原因是该插件中有几个jar太大,在线安装回失败,后来是先把插件下载下来,然后进行安装,终于成功了。 安装步骤: ...
  • u012369373
  • u012369373
  • 2017-02-14 13:34:31
  • 12992

Eclipse配置springIDE插件、搭建测试环境、简单的demo

1. Spring框架简介 (以下这以下这段话可用于面试求职): Spring为JavaEE开发提供了一个轻量级的解决方案,主要表现为: IOC(或者叫做DI)的核心机制,提供了bean工厂(S...
  • linmengmeng_1314
  • linmengmeng_1314
  • 2018-04-16 20:22:49
  • 11

给eclipse 安装spring ide插件

由于myEclipse启动太慢,最近忽然想用eclipse开发项目试试,就下载了一个Eclipse Mars.2。 因为现在多数项目都和spring有关,就想给eclipse安装一个spring id...
  • ming_love
  • ming_love
  • 2016-03-21 18:44:57
  • 9345

MyEclipse7.5下如何安装SpringIDE插件

      今天download了MyEclipse7.5(Eclipse版本3.4)。由于要开发Spring程序,因此准备下载SpringIDE插件帮助开发。MyEclipse7.5自带了Sprin...
  • iambuffalo
  • iambuffalo
  • 2009-10-24 00:13:00
  • 4722

MyBatis学习笔记(一)----简单的环境搭建及测试Demo

1.新建一个Java Project,将所需要的jar包从网上下载下来,然后添加到项目依赖中,如下: 说明一下: mybatis : 就不用说了,我们用的就是他 mysql-connecto...
  • garychenqin
  • garychenqin
  • 2015-04-16 16:17:58
  • 2010

SpringIDE(eclipse插件)

  • 2010年10月12日 16:25
  • 14.6MB
  • 下载

Eclipse中安装Spring IDE插件

1.首先下载eclipse http://www.eclipse.org/downloads/   2.然后安装AJDT 打开eclipse->Help->install new softwa...
  • JAVA528416037
  • JAVA528416037
  • 2015-09-14 12:40:28
  • 582

Eclipse插件之Spring IDE

本文介绍如何利用Eclipse插件Spring IDE在Eclipse中的使用。  Eclipse是目前非常流行的开发平台,开放扩展的架构让很多程序员找到了自己个性化的工作环境。  问题提出:  在采...
  • hwctl
  • hwctl
  • 2007-07-31 11:25:00
  • 33144

eclipse下Spring开发环境配置

直接上参考链接: http://www.360doc.com/content/13/0502/10/11843499_282375745.shtml# 一、安装准备 在windows下开发s...
  • oldmtn
  • oldmtn
  • 2015-04-28 08:51:31
  • 11773
    个人资料
    持之以恒
    等级:
    访问量: 6482
    积分: 1772
    排名: 2万+
    文章存档
    最新评论