• 【Java】关于Spring框架的总结 (二)


    上文提到了 Spring 的 IoC 特性和 AOP 特性,只提到个别的实现方法。本文将对 IoC 和 AOP 其他方法进行讲解。

    多种方式实现依赖注入

    1.设值注入

    上文中使用的注入方法:通过 setter 访问器实现对属性的赋值。

    2.构造注入

    通过类的构造方法实现属性的注入。

    如何通过构造注入为业务类注入所依赖的数据访问层对象?下面是步骤

    1)获取Spring开发包并为工程添加Spring支持。

    2)为业务层和数据访问层设计接口,声明所需方法。

    3)编写数据访问层接口UserDao的实现类,完成具体的持久化操作。

    4)在业务实现类中声明UserDao接口类型的属性,并添加适当的构造方法为属性赋值。

    5)在Spring的配置文件中将DAO对象以构造注入的方式赋值给业务实例中的 UserDao 类型的属性。

    6)在代码中获取Spring配置文件中装配好的业务类对象,实现程序功能。

    一个 <constructor-arg> 元素表示构造方法的一个参数,且使用时不区分顺序。当构造方法的参数出现混淆,无法区分时,可以通过 <constructor-arg> 元素的 index 属性指定该参数的位置索引,位置从0开始。

    3.使用 p 命名空间实现属性注入

    p 命名空间的特点是使用属性而不是子元素的形式配置 Bean 的属性,从而简化了 Bean 的配置。注意使用前要先添加 p 命名空间的声明。

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
         http://www.springframework.org/schema/tx
         http://www.springframework.org/schema/tx/spring-tx.xsd
         http://www.springframework.org/schema/aop 
         http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    对于直接量(基本数据类型、字符串)属性  语法:

    p:属性名="属性值"

    对于引用 Bean 的属性  语法:

    p:属性名-ref="Bean的id"

    注入不同的数据类型

    1.注入直接量(基本数据类型、字符串)

    对于基本数据类型及其包装类、字符串,除了可以使用value属性,还可以通过 <value> 子元素进行注入。

    2.引用其他 Bean 组件

    Spring 中定义的 Bean 可以互相引用,从而建立依赖关系,除了使用 ref 属性,还可以通过 <ref> 子元素实现。

    3.使用内部 Bean

    如果一个Bean组件仅在一处需要使用,可以把它定义为内部Bean。

    4.注入集合类型的属性

    对于 List 或数组类型的属性,可以使用 <list> 标签注入。

    <property name="hobbies">
        <list>
            <value>足球</value>
            <value>篮球</value>
        </list>
    </property>

    对于 Set 类型的属性,可以使用 <set> 标签注入。

    <property name="hobbies">
        <set>
            <value>足球</value>
            <value>篮球</value>
        </set>
    </property>

    对于 Map 类型的属性,可以使用 <map> 标签注入。

    <property name="hobbies">
        <map>
            <entry>
                 <key><value>football</value></key>
                 <value>足球</value>
             <entry>
             <entry>
                 <key><value>basketball</value></key>
                 <value>篮球</value>
             <entry>
        </map>
    </property>

    对于 Properties 类型的属性,可以使用 <props> 标签注入。

    <property name="hobbies">
        <props>
            <prop key="football">足球</prop>
            <prop key="basketball">篮球</prop>
        </props>
    </property>

    5.注入 null 和空字符串值

         <!-- 注入空字符串值 -->
         <bean id="user" class="pojo.User">
             <property name="email"><value></value></property>
         </bean>
         <!-- 注入 null 值 -->
         <bean id="user" class="pojo.User">
             <property name="email"><null/></property>
         </bean>

    其他增强类型

    1.异常抛出增强

    异常抛出增强的特点是在目标方法抛出异常时织入增强代码。使用异常抛出增强,可以为各功能模块提供统一的、可拔插的异常处理方案。

    在增强类中添加异常抛出增强代码

    在配置文件中添加异常抛出增强相关配置

    2.最终增强

    最终增强的特点是无论方法抛出异常还是正常退出,该增强都会得到执行,类似于异常处理机制中的 finally 块的作用,一般用于释放资源。

    在增强类中添加最终增强代码

    在配置文件中添加最终增强相关配置

    3.环绕增强

    环绕增强在目标方法的前后都可以织入增强处理。环绕增强是功能最强大的增强处理,Spring 把目标方法的控制权全部交给了它。在环绕增强处理中,可以获取或修改目标方法的参数、返回值,可以对它进行异常处理,甚至可以决定目标方法是否被执行。

    在增强类中添加环绕增强代码

    在配置文件中添加环绕增强相关配置

    下次更新Spring注解相关配置

  • 相关阅读:
    Lookup Method
    ReLocated Record in Grid
    Call Form By FormString
    Send Mail
    十大已亡或正在灭亡的电脑技术
    一个程序员的内心自白摘录
    数据库中null和''具体的区别
    gridview 横向显示
    Exchange2007获取OWA邮箱容量的代码
    owa实现清空邮箱的代码
  • 原文地址:https://www.cnblogs.com/xiaotie666/p/LiujinSpring2Summary.html
Copyright © 2020-2023  润新知