Spring代理方式2

原创 2015年11月20日 23:11:53

一:UserService.java

package com.cloud.demo6;

public interface UserService {

   void querUsers();

   void saveUser();

   void deleteUser();

}

二:UserServiceImpl.java

package com.cloud.demo6;

public class UserServiceImpl implements UserService{

   @Override

   public void querUsers() {

      System.out.println("UserServiceImpl.querUsers()");

   }

   @Override

   public void saveUser() {

      System.out.println("UserServiceImpl.saveUser()");

   }

   @Override

   public void deleteUser() {

      System.out.println("UserServiceImpl.deleteUser()");

   }

}

三:LogJdkProxy.java

package com.cloud.demo6;

import java.lang.reflect.InvocationHandler;

import java.lang.reflect.Method;

import java.lang.reflect.Proxy;

public class LogJdkProxy implements InvocationHandler{

   private Object target;

   public LogJdkProxy(Object target){

      this.target=target;

   }

   /**

    * 创建代理对象

    * @return

    */

   public Object createProxyInstance(){

      return Proxy.newProxyInstance(getClass().getClassLoader(), target.getClass().getInterfaces(), this);

   }

   public Object invoke(Object proxy, Method method, Object[] args)

         throws Throwable {

      System.out.println("操作前");

      //执行原始对象方法

      Object result=method.invoke(target, args);

      System.out.println("操作后");

      return result;

   }

}

四:MainTest.java

package com.cloud.demo6;

import org.junit.Test;

public class MainTest {

   @Test

   public void test1() throws Exception {

      UserService userService=new UserServiceImpl();

      userService=(UserService) new LogJdkProxy(userService).createProxyInstance();

      userService.querUsers();

   }

}





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Spring动态代理的两种方式

第一种方式:利用JDK的反射机制(proxyJDK) package cn.xhx.jdkproxy; import java.lang.reflect.InvocationHandler; imp...

Spring声明式事务之代理机制与tx标签两种方式

Spring的事务管理分为编程式事务和声明式事务。 接下来以

Spring三种代理方式

一.静态代理代理对象要实现与目标对象一样的接口; eg: 保存用户 UserDao(save)直接保存 UserDaoProxy 给保存方法添加事务处理IUserDao.jav...

Spring动态代理的两种方式

http://m.blog.csdn.net/article/details?id=51051258 说明:spring AOP就是用aspectj来实现的,是依赖关系!Aspe...

Spring的代理方式

方式一、二公共代码 编写一个接口 package com.cloud.daili; public interface UserService { void queryUser(); void ...
  • dzy21
  • dzy21
  • 2016年07月06日 23:10
  • 2026

Spring AOP动态代理原理与实现方式

一、代理模式 代理模式的英文叫做Proxy或Surrogate,中文都可译为”代理“,所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引...

Spring中AOP实现的两种方式之JDK和cglib的动态代理

AOP的实现原理: 都是基于代理模式,都是生成一个大代理对象 静态AOP: AspectJ实现的AOP, 将切面代码直接编译到Java类文件中 ...
  • he90227
  • he90227
  • 2016年08月31日 20:03
  • 2355

Spring与Mybatis的整合之Mapper代理的整合方式

1.项目的目录 2.将Mapper和Mapper.xml放在同一个目录                                            3....

######【spring属性注入(Ioc的DI)总结】:注解方式属性注入,属性名任意.=for理解:Aop注入代理对象时,注入被增强类对象时,属性名为proxy(自定义)。

//===spring 注解方式属性注入,属性名任意。不需要和bean的id相同。@Service("userService") public class UserService { ...

spring中BeanNameAutoProxyCreator和AnnotationAwareAspectJAutoProxyCreator两种AOP代理方式使用总结

昨天代码review的过程中,我们遇到了两种AOP代理的方式,一种是BeanNameAutoProxyCreator,另外一种是AnnotationAwareAspectJAutoProxyCreat...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring代理方式2
举报原因:
原因补充:

(最多只允许输入30个字)