zoukankan      html  css  js  c++  java
  • Spring核心概念(二)

    IOC/DI

    IOC(控制反转):对象(组件)的创建由代码中转移到外部容器(XML,注解) .

    DI(依赖注入):当类A需要使用类B,那么我们需要为类A的属性赋值类B的对象.

      这种现象我们称为依赖注入.

    注意:IOC/DI指的是同一个东西,理解的角度不一样.

    补充:组件化思想:分离关注点,使用接口,不再关注实现.

    AOP(面向切面编程)

    AOP:是一种通过预编译和运行期动态代理的方式实现在

    不修改源代码的情况下给程序动态添加功能的技术.

    原理:

    a.将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决.

    b.采用代理机制组装起来运行,在不改变原程序的基础上对

        代码段进行增强处理,增加新的功能.

    术语:

    增强处理(Advice

    前置增强

    后置增强

    环绕增强、异常抛出增强、最终增强等类型.

    切入点(Pointcut

    连接点(Join Point

    切面(Aspect:切入点+增强处理.

    目标对象(Target object

    AOP代理(AOP proxy)

    织入(Weaving

    开发步骤:

    第一步:写增强功能

    第二步:配置核心文件

    <!-- 注册增强类 -->

    <bean id="tp" class="增强类">

    <!-- 配置切面-->

    <aop:config>

    <!-- 配置切入点-->

    <aop:pointcut id="名称" expression="

    execution(匹配类和方法的表达式)

    "/>

    <!-- 配置切面-->

    <aop:aspect ref="增强类的id">

    <!-- 切面的增强方法和切入点 -->

    <aop:before  method="增强方法" pointcut-ref="切入点的id" />

    </aop:aspect>

    </aop:config>

    第三步:测试

    匹配表达式

    public * addUser(entity.User) //"*":任意返回值类型.

    public void *(entity.User) //"*":任意方法名

    public void addUser(..)     //"..":任意个任意类型的参数

    * com.service.*.*(..) //com.service包下的所有直接子类的所有方法.

    * com.service..*.*(..) //com.service包及其所有子包的所有类的所有方法.

  • 相关阅读:
    CF460 A. Vasya and Socks
    HDU-2159FATE(二维完全背包)
    HDU-2844 Coins(多重背包)
    POJ 1014 Dividing(多重背包)
    HDU2191(多重背包)
    数据结构课程设计:稀疏矩阵(加、减、乘、求逆矩阵)
    (转载)线段树模板(来自胡浩大牛)
    poj2386(简单dfs)
    Poj1852
    poj2109
  • 原文地址:https://www.cnblogs.com/yang82/p/7954321.html
Copyright © 2011-2022 走看看