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包及其所有子包的所有类的所有方法.

  • 相关阅读:
    安卓开发1-开发第一个安卓hello word
    安卓开发系列
    Php调用工行支付接口时的问题解决
    angular模块
    angular自定义指令基础
    ajax跨域问题
    angular要点总结
    JS闭包函数
    避开ie6使用float后再使用margin兼容的2种方法
    如何学习面向对象编程
  • 原文地址:https://www.cnblogs.com/yang82/p/7954321.html
Copyright © 2011-2022 走看看