zoukankan      html  css  js  c++  java
  • 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实例创建成功!!!

  • 相关阅读:
    = =写个prim希望能够巨巨们看的懂
    poj2389 普通的大数乘法
    Codeforces 378C
    hdoj1272 小希的迷宫
    hihoCoder搜索二·骑士问题
    hihoCoder扩展欧几里得
    hihoCoder 1032
    664A
    【水水水】678A
    Codeforces Round #357 (Div. 2)C. Heap Operations
  • 原文地址:https://www.cnblogs.com/yumiaoxia/p/7342056.html
Copyright © 2011-2022 走看看