java aop学习


package cn.pg.service;

public interface UserService {
    public void add();
    public void edit();
    public void delete();
    public void select();
}
package cn.pg.service;

public class UserImpl implements UserService {
    public void add() {
        System.out.println("增加用户");
    }
    public void edit() {
        System.out.println("修改用户");
    }
    public void delete() {
        System.out.println("删除用户");
    }
    public void select() {
        System.out.println("查找用户");
    }
}
package cn.pg.log;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

public class AfterLog implements MethodBeforeAdvice {

    public void before(Method method, Object[] args, Object target) throws Throwable {
        // TODO 自动生成的方法存根
        System.out.println(target.getClass().getName()+"的11"+method.getName()+"被执行");
    }

}
package cn.pg.log;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

public class Log implements MethodBeforeAdvice {

    public void before(Method method, Object[] args, Object target) throws Throwable {
        // TODO 自动生成的方法存根
        System.out.println(target.getClass().getName()+"的"+method.getName()+"被执行");

    }

}
package cn.pg.diy;

public class DiyPoin {
    public void after() {
        System.out.println("执行操作之前");
    }
    public void before() {
        System.out.println("执行操作之后");
    }
}
package cn.pg.maven_three;

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

import cn.pg.service.UserService;

public class Mytest {
   public static void main(String[] args) {
     ApplicationContext context=new ClassPathXmlApplicationContext("app.xml");
     UserService userImpl=(UserService)context.getBean("userService");
     userImpl.add();
     userImpl.select();
     
  }
}
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0modelVersion>

  <groupId>cn.pggroupId>
  <artifactId>maven-threeartifactId>
  <version>0.0.1-SNAPSHOTversion>
  <packaging>jarpackaging>

  <name>maven-threename>
  <url>http://maven.apache.orgurl>

  <properties>
    <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
  properties>

  <dependencies>
   <dependency>
           <groupId>org.springframeworkgroupId>
           <artifactId>spring-contextartifactId>
           <version>5.2.8.RELEASEversion>
     dependency>
     <dependency>
         <groupId>org.aspectjgroupId>
         <artifactId>aspectjweaverartifactId>
         <version>1.9.4version>
     dependency>
    <dependency>
      <groupId>junitgroupId>
      <artifactId>junitartifactId>
      <version>3.8.1version>
      
    dependency>
  dependencies>
project>
<?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:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"  
    xmlns:jaxws="http://cxf.apache.org/jaxws"   
    xsi:schemaLocation=" http://www.springframework.org/schema/beans                       
                    http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://www.springframework.org/schema/context                       
                    http://www.springframework.org/schema/context/spring-context.xsd
                    http://www.springframework.org/schema/aop                       
                    http://www.springframework.org/schema/aop/spring-aop.xsd                         
                    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd  
                ">
   <bean id="userService" class="cn.pg.service.UserImpl">bean>
   <bean id="log" class="cn.pg.log.Log">bean>
   <bean id="afterLog" class="cn.pg.log.AfterLog">bean>
   
   
   
           
           
           
           
           
           
   
    <bean id="diy" class="cn.pg.diy.DiyPoin">bean>
    <aop:config>
        
        <aop:aspect ref="diy">
          
          <aop:pointcut expression="execution(* cn.pg.service.UserImpl.*(..))" id="pointcut"/>
          <aop:after method="after" pointcut-ref="pointcut"/>
          <aop:before method="before" pointcut-ref="pointcut"/>
        aop:aspect>
    aop:config>
beans>