目录
一、准备工作
二、步骤
(一)导入需要的jar包
(二)创建目标类
(三)创建切面类
(四)创建xml文件
(五)创建测试类
三、例子
一、准备工作
(一)导入JAR包:
aopalliance-1.0.jar 这个jar包可以到官网去下载。
二、步骤
(一)导入需要的jar包
(二)创建目标类
(三)创建切面类
(四)创建xml文件
(五)创建测试类
三、例子
(一)导入需要的jar包
(二)创建目标类接口,名为:userDao,接口实现类,名为:UserDaoIpml
package com.stx.chapter03.jdkProxy.jdk;
public interface UserDao {
public void addUser();
public void deleteUser();
}
package com.stx.chapter03.jdkProxy.jdk;
/**
* 目标类。
* */
public class UserDaoImpl implements UserDao {
@Override
public void addUser() {
System.out.println("添加用户 chapter03");
}
@Override
public void deleteUser() {
System.out.println("删除用户 chapter03");
}
}
(三)创建切面类,名为:MyAspect
package com.stx.chapter03.factoryBean;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class MyAspect implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
check_Permission();
// 执行目标方法。
Object obj=methodInvocation.proceed();
log();
return obj;
}
public void check_Permission(){
System.out.println("检查日志!");
}
public void log(){
System.out.println("模拟记录日志!");
}
}
(四)创建xml文件,名为:applicationContext1.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--目标类-->
<bean id="userDao" class="com.stx.chapter03.jdkProxy.jdk.UserDaoImpl"></bean>
<!-- 切面类-->
<bean id="myAspect" class="com.stx.chapter03.factoryBean.MyAspect"></bean>
<!-- 使用Spring代理工厂定义一个名称为userDaoProxy的代理对象。-->
<bean id="userDaoProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<!-- 指定代理实现的接口-->
<property name="proxyInterfaces" value="com.stx.chapter03.jdkProxy.jdk.UserDao"></property>
<!-- 指定目标对象-->
<property name="target" ref="userDao"></property>
<!-- 指定切面,植入环绕通知-->
<property name="interceptorNames" value="myAspect"></property>
<!-- 指定代理方式,true:使用CGLIB ,false(默认):使用jdk动态代理-->
<property name="proxyTargetClass" value="true"></property>
</bean>
</beans>
(五)创建测试类,名为:ProFactoryBeanTest
package com.stx.chapter03.factoryBean;
import com.stx.chapter03.jdkProxy.jdk.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class ProFactoryBeanTest {
public static void main(String[] args) {
String xmlPath = "com/stx/chapter03/factoryBean/applicationContext1.xml";
ApplicationContext applicationContext
= new ClassPathXmlApplicationContext(xmlPath);
UserDao userDao =(UserDao) applicationContext.getBean("userDaoProxy");
userDao.addUser();
userDao.deleteUser();
}
}