• spring基础


    1含义:为解决企业应用开发的复杂性而创建的开源框架,用基本的javaBean来完成EJB的事情 从大小和开销方向spring都是轻量级的。

    2,用途

    ① Ioc容器可以将对象之间的依赖关系交由spring管理,进行控制。

    ② AOP:方便进行面向切面的编程,是oop的扩展,想加什么功能直接加。

    ③ 能够集成各种优秀的框架,struts hibernate等。

    3,spring 组成内容

    4,准备配置工作

    ① 下载SpringFramework的最新版本,并解压缩到指定目录。在IDE中新建一个项目,并将Spring.jar将其相关类库加入项目。

    ② 配置文件 bean.xml。

    ③ 在classpath创建日志输出文件。log4j.properties。

    ④ org.springframework.beans及org.springframework.context包是Spring IoC容器的基础。

    5,Spring 基础语义

    1)IoC (Inversion of Control)=DI (Dependency Injection)控制反转和依赖注入,它是一种基于接口的编程,bean由容器创建在需要的时候拿来用即可,主要是采用反射来实现,其核心组建就是BeanFactory 但实际开发常用XmlBeanFactory

    2)依赖注入的几种实现类型

    Type1设值注入:通过类的setter方法完成依赖关系的设置,就是给bean类中属性加set方法。

    Type3 构造子注入:即通过构造函数完成依赖关系的设置。

    
    public class DIByConstructor {
    
        private final DataSource dataSource;
    
        private final String message;
    
        public DIByConstructor(DataSource ds, String msg) {
    
            this.dataSource = ds;
    
            this.message = msg;
    
        }
    
    }
    

    3)几种依赖注入模式的对比总结

    Type2 设值注入的优势

    1.对于习惯了传统JavaBean开发的程序员而言,通过setter方法设定依赖关系显得更加直观,更加自然。

    2.如果依赖关系(或继承关系)较为复杂,那么Type3模式的构造函数也会相当庞大(我们需要在构造函数中设定所有依赖关系),此时Type2模式往往更为简洁。

    3.对于某些第三方类库而言,可能要求我们的组件必须提供一个默认的构造函数(如Struts中的Action),此时Type3类型的依赖注入机制就体现出其局限性,难以完成我们期望的功能。

    Type3 构造子注入的优势:

    1.“在构造期即创建一个完整、合法的对象”,对于这条Java设计原则,Type3无疑是最好的响应者。

    2.避免了繁琐的setter方法的编写,所有依赖关系均在构造函数中设定,依赖关系集中呈现,更加易读。

    3.由于没有setter方法,依赖关系在构造时由容器一次性设定,因此组件在被创建之后即处于相对“不变”的稳定状态,无需担心上层代码在调用过程中执行setter方法对组件依赖关系产生破坏,特别是对于Singleton模式的组件而言,这可能对整个系统产生重大的影响。

    4.同样,由于关联关系仅在构造函数中表达,只有组件创建者需要关心组件内部的依赖关系。对调用者而言,组件中的依赖关系处于黑盒之中。对上层屏蔽不必要的信息,也为系统的层次清晰性提供了保证。

    5.通过构造子注入,意味着我们可以在构造函数中决定依赖关系的注入顺序,对于一个大量依赖外部服务的组件而言,依赖关系的获得顺序可能非常重要,比如某个依赖关系注入的先决条件是组件的DataSource及相关资源已经被设定。

    理论上,以Type3类型为主,辅之以Type2类型机制作为补充,可以达到最好的依赖注入效果,不过对于基于Spring Framework开发的应用而言,Type2使用更加广泛。

    4)bean.xml配置文件

    Bean Factory,顾名思义,负责创建并维护Bean实例。

    Bean Factory负责根据配置文件创建Bean实例,可以配置的项目有:

    1.Bean属性值及依赖关系(对其他Bean的引用)

    2.Bean创建模式(是否Singleton模式,即是否只针对指定类维持全局唯一的实例)

    3.Bean初始化和销毁方法

    4.Bean的依赖关系

    5)XmlBeanFactory两中注入方式的配置

    ①property-------?set方法的注入配置

    
    <p:bean id=”hello” class=”com.kettas.HelloIFImp”>
    
       <p:property name=”user” value=”xxx”></p:property>
    
    </p:bean>
    

    ②constructor---------?构造方法的注入配置

    
    <p:bean id="hello2" class="com.kettas.spring.ioc.day1.HelloIFImpl">
    
        <p:constructor-arg index=”0” value="world"></p:constructor-arg> 
    
        <p:constructor-arg type="java.lang.String"”ref="calendar"></p:constructor-arg>
    
    </p:bean>
    

    说明: index=”0”构造方法第一个参数,用index可以稍微减少冗余,但是它更容易出错且不如type属性可读性高。你应该仅在构造函数中有参数冲突时使用index。

    6) 依赖的目标类型分成三种形式:

    1) 基本类型+String

    data类型自动转化

    2) 对其他bean 的引用

       <ref bean="target"/>
    

    3) 集合类型 list props set map

    list set properties配置类似:

    
    <p:property name="intList">
    
        <p:list>
    
            <p:value>1</p:value>
    
            <p:value>2</p:value>
    
        </p:list>
    
    </p:property>
    
    <p:property name="objMap">
    
        <p:map>
    
            <p:entry>
    
                <p:key>
    
                    <p:value>1</p:value>
    
                </p:key>
    
                <p:ref local="hello2"/>
    
            </p:entry>
    
        </p:map>
    
    </p:property>
    
    <p:property name="pros">
    
        <p:props>
    
            <p:prop key="1">red</p:prop>
    
            <p:prop key="2">green</p:prop>
    
        </p:props>
    
    </p:property>
  • 相关阅读:
    VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)转
    转载 获取管理员权限
    Linux端图形处理工具ImageMagick在Centos上的安装
    JQUERY 的AJAX只执行一次问题
    ASP.NET项目常见错误信息:HRESULT:0x800736B1
    存储过程(我们简称SP)的编写和优化
    sql server中扩展存储过程大全
    Range对象基本操作应用示例(2)
    让IIS支持DZ和PW的伪静态方法
    js日期时间函数(经典+完善+实用)
  • 原文地址:https://www.cnblogs.com/yuyu666/p/9795601.html
Copyright © 2020-2023  润新知