码迷,mamicode.com
首页 > 编程语言 > 详细

Spring核心概念(二)

时间:2017-12-02 16:22:30      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:exec   情况下   步骤   method   第一步   表达式   ssi   控制   概念   

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

 

Spring核心概念(二)

标签:exec   情况下   步骤   method   第一步   表达式   ssi   控制   概念   

原文地址:http://www.cnblogs.com/yang82/p/7954321.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!