Spring (一) :简单使用Spring

来源:互联网 发布:d3.js教程 编辑:程序博客网 时间:2024/06/03 12:28

         当系统规模变大,业务逻辑复杂,此时使用面向对象编程拓展业务变得不易,因此我们找到其他方法来提高系统灵活性,Spring框架就是一个不错的选择。

        那么它究竟如何实现的呢?

        spring框架中一个组件化思想,它的目的是解耦和,实现每个组件只专注组件内部的事。通过定义接口,运行注入对象,强制将组件的构建和使用分开。这样就涉及spring使用时的一个重要概念——依赖注入。

       什么是依赖注入:由容器维护程序之间的关系(程序中不需要使用 new 关键字,直接在容器中定义组件之间的关系)

       下面以“Hello Spring”的代码为例,说明如何使用依赖注入。

        创建web工程MySpring,添加需要的包,这里使用的是MyEclipse,可以通过该工具导包。点击项目,选择MyEclipse-->add Spring Capabilities-->Spring 3.0,这里并没有什么特殊的功能要求,选择 核心包(Core Libraries)就可以了,后面会和Struts集成,所以还选择了Web  Libraries这个包。(也选择了将包Copy到lib目录下)这里是第一次使用,只能选择new一个配置文件,然后next-->finish即可,具体过程,见图,如下:

      然后在src下就会创建applicationContext.xml文件,这个配置文件可以写多个,文件名可以任意取,在这里定义各个组件之间的关系,实现依赖注入。

      Spring强调组件编程,这里的组件可以看做接口,由接口实现类来实现组件。首先定义一个Action接口,

public interface Action {public void execute();}
    再定义其实现类 HelloActionImpl,
public class HelloActionImpl implements Action{@Overridepublic void execute() {// TODO Auto-generated method stubSystem.out.println("hello spring!");}}
     新建一个TestAction是测试类,这里如果要输出"hello spring!",之前的做法是在这里的main方法中,直接newHelloActionImpl对象,然后调用execute方法,而在spring则是在applicationContext.xml进行定义。代码如下:

<bean  id="helloAction"  class="com.huaxin.spring.HelloActionImpl">

        一个bean节点,代表就是action类的实例,ID属性和class,id代表对象名称,class里面填写实现类的完整路径,整个bean节点的定义就等价于

Action helloAction=new  com.huaxin.spring.HelloActionImpl() ;
      在容器中定义后,一旦解析配置文件,就会根据id设置对象名,class设置实例,去指定对象,如何将实例返回测试类中呢?

      在测试类TestAction文件中,代码如下:

public static void main(String[] args) {// 读取配置文件(此时会将bean节点实例装载至内存,可以识别ID对应的实例)ApplicationContext  context=new ClassPathXmlApplicationContext("applicationContext.xml");//根据ID返回容器中的bean节点(类实例)Action action=(Action)context.getBean("helloAction");action.execute();}
这里ApplicationContext 是一个接口,在构造方法中可以指定配置文件的路径,然后通过getBean获取配置文件中的bean节点,运行后即可输出"hello spring!"

      这里只是简单使用spring,但似乎并为给程序带来便利。那么假设现在有新的业务类需要实现,不仅要打招呼,还要有笑脸,将其定义为NewHelloActionImpl,同样实现Action接口。它的execute方法中的输出语句为:

System.out.println("(*^__^*) 嘻嘻……  HelloAction!");
      如果我们要替换旧的业务,使用新的业务,就需要修改Java代码,new新的对象。那么问题来了,如果在一个庞大的系统中,旧的业务使用有很多处,那么就要多次修改,但是使用spring之后就可以避免这种情况,这里Java代码不需要修改,只要修改配置文件bean节点对应的class即可,修改代码如下

<span style="font-size:18px;"><bean  id="helloAction"  class="com.huaxin.spring.NewHelloActionImpl"></span>
     这样就可以了,十分方便。可见使用spring的扩展性更高。






 



0 0
原创粉丝点击