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.0</modelVersion>

  <groupId>cn.pg</groupId>
  <artifactId>maven-three</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>maven-three</name>
  <url>http://maven.apache.org</url>

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

  <dependencies>
   <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-context</artifactId>
           <version>5.2.8.RELEASE</version>
     </dependency>
     <dependency>
         <groupId>org.aspectj</groupId>
         <artifactId>aspectjweaver</artifactId>
         <version>1.9.4</version>
     </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      
    </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>
   <!-- 配置aop -->
   
   <!--<aop:config>-->
           <!-- 切入点 -->
           <!--<aop:pointcut expression="execution(* cn.pg.service.UserImpl.*(..))" id="pointcut"/>-->
           <!-- 执行环绕 -->
           <!--<aop:advisor advice-ref="log" pointcut-ref="pointcut"/>-->
           <!--<aop:advisor advice-ref="afterLog" pointcut-ref="pointcut"/>-->
           
   <!--</aop:config>-->
    <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>

 

posted @ 2020-10-12 15:29  leo0362  阅读(165)  评论(0)    收藏  举报