zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Google Data Highlighter
    java里的单例实现
    zuul实现的限流
    vscode解决nuget插件不能使用的问题
    springboot~yml里的自定义配置~续
    Cocos2d—X游戏开发之CCToggle(菜单标签切换)CCControlSwitch(开关切换)
    Flash Builder 4的快捷方式和调试技巧
    无刷电机之无感方案控制难点解析
    UVa10815
    [置顶] 学生管理系统验收出现的问题及解决方法
  • 原文地址:https://www.cnblogs.com/lyj-gyq/p/8835242.html
Copyright © 2011-2022 走看看