Spring学习笔记5——注解方式AOP

 

第一步:注解配置业务类

  使用@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 }

 

posted @ 2018-04-14 20:55  雨落忧伤-  阅读(180)  评论(0编辑  收藏  举报