版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kaizuidebanli/article/details/83052588
一、AOP的相关术语
二、AOP的入门开发
我们要增强的类
public class ProductDao {
public void save(){
System.out.println("ProductDao save ...........................");
}
}
IOC配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<context:component-scan base-package="dao.impl, service" />
<!-- 配置目标对象:被增强的对象-->
<bean id="productDao" class="dao.ProductDao"></bean>
</beans>
(1)创建切面类
public class MyAspectXML {
public void checkPri(){
System.out.println("checkPri........................");
}
}
(2)将切面类交给spring进行管理
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<context:component-scan base-package="dao.impl, service" />
<bean id="productDao" class="dao.ProductDao"></bean>
<bean id="myAspectXML" class="service.MyAspectXML"></bean>
<!--通过AOP的配置完成对目标类产生代理-->
<aop:config>
<!-- 表达式配置哪些类的哪些方法需要进行增强 -->
<aop:pointcut id="pointcut1" expression="execution(* dao.ProductDao.save(..))"/>
<!--配置切面-->
<aop:aspect ref="myAspectXML">
<aop:before method="checkPri" pointcut-ref="pointcut1"/>
</aop:aspect>
</aop:config>
</beans>
(3)测试
package service;
import dao.ProductDao;
import org.junit.Test;
import org.junit.Before;
import org.junit.After;
import org.junit.runner.RunWith;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
/**
* ProductService Tester.
*
* @author chengruru
* @since 10/14/2018
* @version 1.0
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
public class ProductServiceTest {
@Resource(name = "productDao")
private ProductDao productService;
/**
*
* Method: save()
*
*/
@Test
public void testSave() throws Exception {
productService.save();
}
}
结果显示: