spring入门

Spring

Spring定义:

  1.spring是一个独立的轻量级框架。

  2.spring致力于JavaEE应用各层的解决方案,贯穿表现层,业务层,持久层,是极为优秀的webMVC框架。

  3.为企业级应用开发提供了一个轻量级的解决方案,包括基于依赖注入的核心机制,基于AOP的声明式事务管理,与多种持久层技术的整合。

 

优点:

  1.低侵入式设计,代码污染度低。

  2.独立于各种应用服务器,基于spring框架,真正实现write once,run anywhere的承诺。

  3.基于spring的核心IOC容器,降低业务对象替换的复杂性,提高组件之间的解耦。

       4.Spring的AOP支持一些通用任务如安全,事务,日志的集中式处理,从而提供了更好的复用。

  5.spring的高度开放性,并不强制应用完全依赖于Spring,开发者可自由选用Spring框架的部分或全部。

核心理论:

  1.spring核心容器就是一个超级大工厂,所有的java对象皆可被其管理,被管理的一切java对象统称为bean,其管理方式两种:一是依赖注入;二是XML配置的方式

 

下载及安装:

  1.登录http://repo.springsource.org/libs-release-local/站点,沿着目录列表org->springframework->spring进入,下载最新稳定版。

  2.下载完成,得到一个spring-framework-4.0.4.RELEASE-dist.zip压缩文件,解压得到如下几个子文件夹

    a)docs:该文件夹下存放Spring的相关文档,包括api参考文档,开发指南。

    b)libs:该目录下的jar包分3类 —— i.Spring框架class文件的jar包;ii.spring框架源文件的jar包,以-source结尾;iii.spring框架api文档的压缩包,文件名以-javadoc结尾。

                 整个spring框架由21个模块组成,该目录下为每个模块配置了3个压缩包。

    c)schemas:该目录下包括了Spring各种配置文件的XML Schema文档。

    d)readme:说明性文档 。

  3.将libs目录下所需要的class文件的jar包(21个)复制粘贴的项目工程的类加载路径下(即可通过添加环境变量方式添加,也可通过ant或IDE工具管理类加载路径)。

  4.除此之外,spring核心容器必须依赖于commons-logging 的jar包,开发者还需登录http://commoms.apache.org/站点下载最新的 commons-logging 工具,解压得到的

         commons-logging-1.1.3.jar也添加到类加载路径中。

 

创建管理beans的实例:

 理论要点

  1.依赖与被依赖:java应用中,存在大量互相调用的java对象,而这种调用关系业内称之为依赖关系,A对象调用了B对象的方法,则可以说A对象依赖于B对象,B对象

      为被依赖对象。

  2.反转控制与依赖注入:有一个需求,A对象需要调用B对象的方法。在以前,Java初学者通常是先创建B对象实例进行调用,这种方式代码虽然简单,但程序高度耦合,

     效率低下,不利于程序拓展。后来调用者通过工厂方式获得被依赖组件,避免了类层次的硬编码耦合,但通过工厂获得被依赖对象,这会带来调用组件与被依赖对象

     工厂的耦合。使用spring框架之后,调用者无须主动获取被依赖对象,而是通过注解的方式被动接受Spring容器为其的成员变量赋值即可。这种方式由主动获取变为被

     动接受,所以也称这种方式为控制反转,和依赖注入其实是同一种行为。

程序

  1.在eclipse新建Java工程,命名myspring。

  2.在工程下新建lib文件夹,导入jar包(22个),并添加到类加载路径下。

  3.工程src下创建com.spring.service和com.spring.service.impl两个包,然后在包下新建Prson接口及实现类Chinese  

package com.spring.service;

public interface Person {
    
 public void useAxc();
 
}

 

package com.spring.service.impl;

import com.spring.service.Axc;
import com.spring.service.Person;

public class Chinese implements Person {

    
    private Axc axc;
    
    public void setAxc(Axc axc){
        this.axc=axc;
    }
    @Override
    public void useAxc() {
        // TODO Auto-generated method stub
      System.out.println(axc.chop());
    }

}

     在创建被依赖对象的类Axc接口及其实现类

package com.spring.service;

public interface Axc {
    
public String chop();

}
package com.spring.service.impl;

import com.spring.service.Axc;

public class StoneAxc implements Axc {

    @Override
    public String chop() {
        // TODO Auto-generated method stub
        return "石斧砍柴好慢";
    }

}

  4.在工程src直接目录下创建beans.XML文件,开发者可以根据eclipse的提示在spring框架解压目录的schemas子目录下查找各种.xsd文件,这里选择4.0版本。下面是配置文件的代码

<?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 ../spring-2/src/spring-beans-4.0.xsd ">


<bean id="chinese" class="com.spring.service.impl.Chinese">
<property name='axc' ref='stoneAxc'/>
</bean>

<bean id='stoneAxc' class='com.spring.service.impl.StoneAxc'/>
</beans>

  上面配置文件中,spring文件配置bean实例通常指定id和class两个属性。另外引用ref属性指向其他bean的id,可以实现管理bean之间调用。bean的赋值方式一般有两种,一个是通过构造器赋值,                           使用<construtor-arg>标签配置,主要属性有两个:value(指向变量值),type(指向变量类型);一个是通过<properties/>标签赋值,相当于实体类的setter方法。

 

  5.新建com.spring.main包,创建程序测试类Main,下面是测试类代码

package com.spring.main;

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

import com.spring.service.Person;

public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
     
    ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
     
     Person p = ctx.getBean("chinese",Person.class);
     
     p.useAxc();
    }

}

  6.运行测试类,成功后结果如下:

    八月 10, 2017 11:09:24 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
    信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1c49094: startup date [Thu Aug 10 23:09:24 CST 2017]; root of context hierarchy
    八月 10, 2017 11:09:24 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    信息: Loading XML bean definitions from class path resource [beans.xml]
    石斧砍柴好慢

        至此,一个简单的spring管理bean实例创建成功!!!

 

posted @ 2017-08-10 23:29  一码定乾坤  阅读(242)  评论(1编辑  收藏  举报