一 问题
1 控制反转ioc为程序开发带来的好处是什么?
专心做事 减低程序代码之间的耦合度
2
面向切面编程的核心思想是什么?
简单的说就是在不改变原程序的基础上为代码段增加新的功能
|
3
Spring AOP的增强处理类型有哪些?
前置 后置 环绕 最终增强
|
4
简单工厂模式的作用是什么?如何实现?
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
|
作用是:
让对象的调用者与对象创建过程进行分离,当对象调用者需要对象时只需直接向工厂请求即可,
从而避免了对象调用者与对象实现类以硬编码方式进行耦合。 |
5
代理模式的作用是什么?如何实现?
是给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。 |
|
二 控制反转(IOC)/依赖注入
控制反转
|
把以前创建对象和组建对象由内部完成转换为Spring完成
将组件对象的控制权从代码本身转移到外部容器 |
目的:解耦合。实现每个组件时只关注组件内部的事情
|
要点:明确定义组件间的接口
|
依赖注入
|
组件化的思想:分离关注点,接口和实现分离
|
依赖的注入:将组件的构建和使用分开
|
提高灵活性
目的:解耦合。实现每
三 面向切面编程
AOP的目标:让我们可以“专心做事”
|
AOP原理:
|
将复杂的需求分解出不同方面,将散布在系统中的公共功能集中解决
采用代理机制组装起来运行,在不改变原程序的基础上对代码段进行增强处理,增加新的功能
|
代理模式创建
1 植入给Biz的Dao是接口类型?
是接口类型
|
2 为什么Dao的Bean对象是代理模式?
因为它被植入了
|
3 Dao的Bean的代理对象生成的原理?
找出真实类的接口
|
生成代理类(用动态代理技术生成代理的类 配置文件中有bean 第二 aop里面匹配调用真实类的匹配方法)
|
使用代理类创建代理对象(调用真实对象的同名方法)
|
生成真实对象()
|
真实对象是代理对象内部的一个字段
|
植入的原理?
代理对象
前置植入代码 |
运行代码(真实类对象方法)
|
后置植入代码
|
切面表达式的内涵?
<aop:config>
<aop:pointcut id="loggerBeforePointcut"
expression="execution(public * cn.jbit.demo.dao.UserDaoImpl.saveUser(cn.jbit.demo.entity.User))"/>
<!-- 前置 -->
<aop:advisor advice-ref="loggerBefore" pointcut-ref="loggerBeforePointcut" />
<!-- 前置对象 -->
<aop:advisor advice-ref="loggerAfterReturning" pointcut-ref="loggerBeforePointcut" />
</aop:config>
配置文件的aop:config
|
里面的<aop:pointcut id="" expression="execution(public * 包名.类名.方法名)"/>匹配所有的返回值 *匹配所有 (‘’) 匹配所有参数 可以有可以没有
|