第一步:注解配置业务类
使用@Component("Pservice")注解ProductService 类
1 package com.spring.service; 2 3 import org.springframework.stereotype.Component; 4 5 @Component("Pservice") 6 public class ProductService { 7 public void doSomeService() { 8 System.out.println("doSomeService"); 9 } 10 }
第二步:注解配置切面
@Aspect 注解表示这是一个切面
@Component 表示这是一个bean,由Spring进行管理
@Around(value = "execution(* com.spring.service.ProductService.*(..))") 表示对com.spring.service.ProductService 这个类中的所有方法进行切面操作
1 package com.spring.aspect; 2 3 import org.aspectj.lang.ProceedingJoinPoint; 4 import org.aspectj.lang.annotation.Around; 5 import org.aspectj.lang.annotation.Aspect; 6 import org.springframework.stereotype.Component; 7 8 @Aspect 9 @Component 10 public class LoggerAspect { 11 @Around(value = "execution(* com.spring.service.ProductService.*(..))") 12 public Object log(ProceedingJoinPoint joinPoint) throws Throwable { 13 System.out.println("start log:" + joinPoint.getSignature().getName()); 14 Object object = joinPoint.proceed(); 15 System.out.println("end log:" + joinPoint.getSignature().getName()); 16 return object; 17 } 18 }
第三步:修改applicationContext.xml
去掉原有信息,添加如下3行
<1>扫描包com.spring.aspect和com.spring.service,定位业务类和切面类
1 <context:component-scan base-package="com.spring.aspect"/> 2 <context:component-scan base-package="com.spring.service"/>
<2>找到被注解了的切面类,进行切面配置
1 <aop:aspectj-autoproxy/>
applicationContext.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:aop="http://www.springframework.org/schema/aop" 5 xmlns:tx="http://www.springframework.org/schema/tx" 6 xmlns:context="http://www.springframework.org/schema/context" 7 xsi:schemaLocation=" 8 http://www.springframework.org/schema/beans 9 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 10 http://www.springframework.org/schema/aop 11 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 12 http://www.springframework.org/schema/tx 13 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 14 http://www.springframework.org/schema/context 15 http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 16 <context:component-scan base-package="com.spring.aspect"/> 17 <context:component-scan base-package="com.spring.service"/> 18 <aop:aspectj-autoproxy/> 19 </beans>
第四步:测试
1 package com.spring.test; 2 3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5 6 import com.spring.service.ProductService; 7 8 public class TestSpring { 9 10 public static void main(String[] args) { 11 // TODO Auto-generated method stub 12 ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" }); 13 ProductService s = (ProductService) context.getBean("Pservice"); 14 s.doSomeService(); 15 } 16 17 }