三个重要的概念
IoC
英文名称:Inversion fo Controll,中文名称:控制反转
作用:是将之前由程序员主动通过new实例化对象的事情转交给Spring来负责
最大的作用:解耦 程序员不需要管理对象,接触了对象管理和程序员之间的耦合
控制:指代的是控制类的对象 反转:指代转交给Spring
DI
英文名称:Dependency Injection 中文名称:依赖注入
作用:当一个类A需要依赖另一个类B对象的时候,把B赋值给A的过程就叫做依赖注入
类A为People 类B为desk <bean></bean>中关于对象使用ref
<bean id="peo" class="com.xiduancao.pojo.People">
<property name="des" ref="desk">
</property>
</bean>
<bean id="desk" class="com.bjsxt.pojo.desk">
<property name="id" value="1"></property>
<property name="address">
<value>泰国</value>
</property>
</bean>
上述就是依赖注入的实例
AOP
1.中文名称:面向切面编程
2.英文名称:Aspect-Oriented Programming
3.在程序执行过程中,正常的都是纵向执行
- AOP在原有纵向执行流程中加入横切面
- 使用AOP不需要修改原有代码,具有高扩展性,原有功能释放部分逻辑,代码块之间职责更加明确
4.什么叫做面向切面编程?
在程序原有的纵向流程中,针对某一个或一些方法添加通知,形成横切面过程,并降低各部分代码之间耦合性的过程。
5.概念:
- 原有功能:pointcut,切点
- 前置通知:before advice,在切点之前执行的功能
- 后置通知:after advice,在切点之后执行的功能
- 切点执行过程中遇到异常,会触发异常通知:throw advice
- 所有功能总称为:切面
- 织入:切面嵌入原有功能之中的过程
6.Spring中AOP的两种实现方式
1.Schema-based
- 每个通知都要实现接口或者类 只能单配置
- 配置Spring相关配置文件<aop:config>中配置
2.AspectJ
- 每个通知不需要实现接口或者类 可以多配置
- 配置文件在<aop:config>的子标签<aop:aspect>中配置