1Spring的aop
a:aop概念
1)aop:面向切面(方面编程),扩展功能不修改源代码实现
2)aop采取横向抽取机制,取代了传统纵向继承体系重复性代码
b:aop原理
c:aop相关术语
Jointpoint(连接点):是指那些被拦截到的点,在spring中 ,这些点指的是方法,因为spring只支持方法类型的连接点
Pointcut(切入点):是指要对哪些Joinpoint进行拦截定义
Advice(通知/增强):是指拦截到Jointpoint之后所要做的事情就是通知,通知分为前置通知、后置通知、异常通知、最终通知、环绕通知。
Aspect(切面):是切入点和通知(引介)的结合
d:Spring的aop操作
1)在Spring里面进行aop操作,使用aspectj实现
(1)aspectj不是Spring的一部分,和spring一起使用进行aop操作
(2)Spring2.0以后新增了对aspectj支持
2)使用aspectj实现aop有两种方式
(1)基于aspectj的xml配置
(2)基于aspectj的注解方式
3)使用表达式配置切入点
(1)切入点:实际增强的方法
(2)常用的表达式 execution(<访问修饰符>?<返回类型><方法名>(<参数><异常>))
execution(* 增强方法的全路径.类.类中方法(..))
execution(* 增强方法的全路径.类.*(..))
execution(* *.*(..))
(3)基于aspectj的aop操作
<!--1配置对象--> <bean id="book" class="com.sun.aop.Book"></bean> <bean id="myBook" class="com.sun.aop.MyBook"></bean> <!--2配置aop操作--> <aop:config> <!--配置切入点--> <aop:pointcut id="pointcut1" expression="execution(* com.sun.aop.Book.add(..))"></aop:pointcut> <!--配置切入面--> <aop:aspect ref="myBook"> <aop:before method="before1" pointcut-ref="pointcut1"></aop:before> </aop:aspect> </aop:config>
2log4j
1)通过log4j能看到更详细的信息
(1)经常使用log4j来查看日志
2)log4j的使用
(1)导入log4j的jar包
(2)复制log4j的配置文件,复制到src下面
log4j.properties
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:\mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=info, stdout