SPRING AOP 面向切面编程 基本配置和注解配置 火推

准备业务类 ProductService

package com.lj.service;

public class ProductService {
     public void doSomeService(){

            System.out.println("doSomeService");

        }
}

TestSpring类

package com.lj.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.lj.service.ProductService;

public class TestSpring {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });
        ProductService s = (ProductService) context.getBean("s");
        s.doSomeService();
    }
}

准备日志切面 LoggerAspect

package com.lj.aspect;

import org.aspectj.lang.ProceedingJoinPoint;

public class LoggerAspect {
     public Object log(ProceedingJoinPoint joinPoint) throws Throwable {
            System.out.println("start log:" + joinPoint.getSignature().getName());
            Object object = joinPoint.proceed();
            System.out.println("end log:" + joinPoint.getSignature().getName());
            return object;
        }
}

applicationContext.xml





    
        
    

    
        
        
    

    
       

    

    
        

        
            
        
        



运行 TestSpring类
SPRING AOP 面向切面编程 基本配置和注解配置 火推_第1张图片


注解方式配置 SPRING AOP

ProductService类

package com.lj.service;

import org.springframework.stereotype.Component;

@Component("s")
public class ProductService {
     public void doSomeService(){

            System.out.println("doSomeService");

        }
}

注解配置切面
@Aspect 注解表示这是一个切面
@Component 表示这是一个bean,由Spring进行管理
@Around(value = “execution(* com.lj.service.ProductService.*(..))”) 表示对com.lj.service.ProductService 这个类中的所有方法进行切面操作
LoggerAspect 类

    package com.lj.aspect;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class LoggerAspect {
     @Around(value = "execution(* com.lj.service.ProductService.*(..))")
     public Object log(ProceedingJoinPoint joinPoint) throws Throwable {
            System.out.println("start log:" + joinPoint.getSignature().getName());
            Object object = joinPoint.proceed();
            System.out.println("end log:" + joinPoint.getSignature().getName());
            return object;
        }
}

applicationContext.xml




 
    
     

扫描包com.how2java.aspect和com.how2java.service,定位业务类和切面类
找到被注解了的切面类,进行切面配置


运行TestSpring类

package com.lj.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.lj.service.ProductService;

public class TestSpring {

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });
        ProductService s = (ProductService) context.getBean("s");
        s.doSomeService();
    }
}

SPRING AOP 面向切面编程 基本配置和注解配置 火推_第2张图片


你可能感兴趣的:(java笔记相关)