第一步:创建一个项目导入Spring相应的配置文件(AOP、IOCjar包)(此处省略,相应的jar包可在我的下载资源中下载)
第二步:编写一个UserService类,其中定义一个用户登录的方法,方法内容如下:
public void userLogin() {
System.out.println("用户登录中....");
}
第三步:编写一个切面类,主要用定义切面方法(具有共通业务逻辑的方法),此处的方法为在调用目标对象方法之前获取当前系统时间。切面类的方法如下:
public void beforeMethodLog() {
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String date = sdf.format(d);
System.out.println("当前系统时间是:"+date);
}
第四步:在配置文件中编写相应的配置,主要有三个方面:
1、目标对象组件
2、切面对象组件
3、配置AOP 实现在目标对象方法调用之前获取当前系统时间
具体配置如下:
<!-- 目标对象bean组件 -->
<bean id="userService" class="cn.ww.service.UserService"></bean>
<!-- 切面对象bean组件 -->
<bean id="logAspect" class="cn.ww.aspect.LogAspect"></bean>
<!-- aop的配置 切面通知切点 -->
<aop:config>
<!-- 切点表达式,此表达式表示定位到目标对象的用户登录的方法 -->
<aop:pointcut expression="execution(public void userLogin())" id="login"/>
<aop:aspect ref="logAspect">
<aop:before method="beforeMethodLog" pointcut-ref="login"/>
</aop:aspect>
</aop:config>
注意事项:
1、切点表达式可以直接写在<aop:before中,如<aop:before method="beforeMethodLog" point="excution(public void userLogin())" />
2、切点表达式中的方法返回值跟方法名是必须要有的,其他的可以没有。可以使用通配符 *。当然还有其他的一些实现细节,此处不一一说明!!