SSM-Spring-10:Spring中cglib动态代理

简介: ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------   何为动态代理,就不扯皮了,上一篇博客刚刚提到,那cglib动态代理又怎么写,我拿个和上个例子相似的案例来写   具体案例:   一个SomeServiceImpl接口 package cn.

 

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

 

何为动态代理,就不扯皮了,上一篇博客刚刚提到,那cglib动态代理又怎么写,我拿个和上个例子相似的案例来写

 

具体案例:

  一个SomeServiceImpl接口

package cn.dawn.day10cglibdtproxy;


/**
 * Created by Dawn on 2018/3/8.
 */
public class SomeServiceImpl {
    public void doSome() {
        System.out.println("do something");
    }
}

  一个测试类,我直接在测试类中使用cglib动态代理

package cn.dawn.day10cglibdtproxy;


import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

/**
 * Created by Dawn on 2018/3/8.
 */
public class Test {
    public static void main(String[] args) {
        //模板
        final SomeServiceImpl service=new SomeServiceImpl();
        //cglib动态代理
        Enhancer enhancer=new Enhancer();
        //设置模板
        enhancer.setSuperclass(service.getClass());
        //回调函数
        enhancer.setCallback(new MethodInterceptor() {
            public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
                System.out.println("前置增强内容---------------");
                methodProxy.invoke(service,objects);
                return null;
            }
        });
        //创建代理对象
        SomeServiceImpl proxy = (SomeServiceImpl)enhancer.create();
        //代理对象调用原方法
        proxy.doSome();

    }
}

    他的写法就如上所示,需要以上的注释所标明的步骤

    值得一提的是MethodProxy这个东西,他见过吗?他类似Method都是对此类的方法的反射,但是前者是Spring在高版本后出现的,他的写法优良,更具性能

 

目录
相关文章
|
30天前
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
10 0
|
30天前
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
9 0
|
1月前
|
监控 Java 开发者
Spring AOP动态代理
Spring AOP动态代理
40 1
|
6天前
|
监控 Java 数据库连接
Spring高手之路17——动态代理的艺术与实践
本文深入分析了JDK和CGLIB两种动态代理技术在Spring框架中的应用。讨论了动态代理的基础概念,通过实例展示了如何实现和应用这两种方法,并比较了它们的性能差异及适用场景。进一步,探讨了在动态代理中实现熔断限流和日志监控的策略,以及如何利用动态代理优化Spring应用的设计和功能。
14 6
Spring高手之路17——动态代理的艺术与实践
|
7天前
|
Java 数据库 Spring
切面编程的艺术:Spring动态代理解析与实战
切面编程的艺术:Spring动态代理解析与实战
23 0
切面编程的艺术:Spring动态代理解析与实战
|
30天前
ssm(Spring+Spring mvc+mybatis)Dao层实现类——DeptDaoImpl
ssm(Spring+Spring mvc+mybatis)Dao层实现类——DeptDaoImpl
12 0
|
30天前
ssm(Spring+Spring mvc+mybatis)Dao接口——IDeptDao
ssm(Spring+Spring mvc+mybatis)Dao接口——IDeptDao
8 0
|
30天前
ssm(Spring+Spring mvc+mybatis)实体类——Dept
ssm(Spring+Spring mvc+mybatis)实体类——Dept
11 0
|
30天前
|
Java 关系型数据库 MySQL
ssm(Spring+Spring mvc+mybatis)
ssm(Spring+Spring mvc+mybatis)
12 0
|
30天前
|
前端开发 Java Spring
ssm中spring mvc找不到控制器,报错404
ssm中spring mvc找不到控制器,报错404
14 0