创建Maven项目。配置pom.xml引入所需的Spring依赖包
定义接口
package com.neo.service;
public interface IFridgeService {
void putInFridge();
}
创建实现类
package com.neo.service.impl;
import com.neo.service.IFridgeService;
public class FridgeServiceImpl implements IFridgeService {
@Override
public void putInFridge() {
System.out.println("============put in fridge");
}
}
创建切面类,放到冰箱里面的前后两个操作。
package com.neo.aop.aspect;
public class FridgeAspect {
public void beforePut(){
System.out.println("===beforePut");
}
public void afterPut(){
System.out.println("===afterPut");
}
}
两种方式配置Spring
1.xml:创建applicationContext.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"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
">
<!--基于schema-->
<!--被增强的Bean-->
<bean id="FridgeServiceImpl" class="com.neo.service.impl.FridgeServiceImpl"></bean>
<!--切面 -->
<bean id="aspect" class="com.neo.aop.aspect.HelloWorldAspect"></bean>
<aop:config>
<!--切点-->
<aop:pointcut id="pointcut" expression="execution(* com.neo.service.*.*(..))"/>
<aop:aspect ref="aspect">
<!--增强-->
<aop:before method="beforeAdvice" pointcut-ref="pointcut"/>
<aop:after method="afterFinallyAdvice" pointcut="execution(* com.neo.service.*.*(..))"/>
</aop:aspect>
</aop:config>
</beans>
构建测试类
package com.neo.spring;
import com.neo.service.IFridgeService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AOPMain {
public static void main(String [] args){
ApplicationContext context = new ClassPathXmlApplicationContext("META-INF/applicationContext.xml");
IFridgeService helloWorldService =
context.getBean("FridgeServiceImpl", IFridgeService.class);
helloWorldService.putInFridge();
}
}