全国计算机等级考试二级Java 重点内容学习是要持之以恒的一件事,坚持就是胜利! 以下的全国计算机等级考试二级Java 重点内容,希望对大家有所帮助,更多信息请关注!
1. AOP 的概念及优点
AspectOrientedProgramming 面向方面编程. 面对象编程的关注点是对象, 面向方面编程以面向对象编程为基础, 关注点是切面, 切面组件可以作用在若干目标对象的方法上, 封装了具有通用性的一些处理.例如日志记录,事务处理,异常处理等等.
面向方面编程优点: 将共通处理封装成了一个独立组件,利用配
置形式作用在了某一批目标对象上,实现组件的重复利用, 将切面和目标对象解耦, 实现了低耦合应用.
*a. 切面(Aspect) 封装了共通处理的组件, 可用于切入到目标对象的处理方法中
*b. 切入点(Pointcut) 用于指定目标对象和方法的一个表达式. 是连接点的集合. 连接点是切面组件与某一个目标对象方法的作用点, 例如方法调用和异常发生
*c. 通知(Advice) 用于指定切面功能切入目标对象方法的位置. 例如切入到目标方法调用之前, 目标方法调用之后等.
通知类型:前置通知,后置通知,环绕通知,最终通知,异常通知try{ // 执行前置通知
// 执行环绕通知-- 前置
执行目标对象方法
// 执行环绕通知-- 后置
// 执行后置通知
}catch(Exceptionex){
// 执行异常通知
}finally{
// 执行最终通知
}
d. 目标对象(Target)
需要使用切面功能的,被切入的Bean对象.使用切入点表达式指定
e. 动态代理(AutoProxy)
在Spring采用了AOP之后,从容器取出的目标对象是一个动态代理类型,调用代理对象方法时,代理对象会调用切面功能和目标对象功能.
动态代理类生成技术:
有接口的目标对象采用JDKProxy技术.
没有接口的目标对象采用CGLIB技术.
2. 切入点表达式的定义
1) 方法限定execution
execution( 修饰符?返回类型方法名(参数类型)throws 异常?)
a. 匹配https://www.doczj.com/doc/467683811.html,erDAO 的save() 方法
execution(*https://www.doczj.com/doc/467683811.html,erDAO.save(..))
b. 匹配https://www.doczj.com/doc/467683811.html,erDAO 的所有方法
execution(*https://www.doczj.com/doc/467683811.html,erDAO.*(..))
c. 匹配https://www.doczj.com/doc/467683811.html,erDAO 的所有publicvoid 方法
execution(https://www.doczj.com/doc/467683811.html,erDAO.*(..))
d. 匹配.tarena 包下所有类型的所有方法
execution(*.tarena.*.*(..))
e. 匹配.tarena 包下及其子包所有类型的所有方法
execution(*.tarena..*.*(..))
f. 匹配UserDAO中有一个参数并且是String类型的方法execution(*https://www.doczj.com/doc/467683811.html,erDAO.*(https://www.doczj.com/doc/467683811.html,n
g.String))
2) 类型限定within within( 类型)
a. 匹配https://www.doczj.com/doc/467683811.html,erDAO的所有方法within(https://www.doczj.com/doc/467683811.html,erDAO)
b. 匹配.tarena包下的所有类的所有方法within(.tarena.*)
c. 匹配.tarena包下及其子包的所有类的所有方法
within(.tarena..*)
3) i d 名限定bean
bean(idOrName 属性值)
a. 匹配容器中所有id或name属性值以dao结尾的bean对象bean(*dao)