Spring框架入门基础,springcloud视频百度云

  • 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术

  • AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型

  • 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率

其实AOP可以在不修改源代码的前提下,对程序进行增强!!

Spring框架的AOP的底层实现

1. Spring框架的AOP技术底层也是采用的代理技术,代理的方式提供了两种

1. 基于JDK的动态代理


 必须是面向接口的,只有实现了具体接口的类才能生成代理对象 

2. 基于CGLIB动态代理


对于没有实现了接口的类,也可以产生代理,产生这个类的子类的方式 

2. Spring的传统AOP中根据类是否实现接口,来采用不同的代理方式

  1. 如果实现类接口,使用JDK动态代理完成AOP
  1. 如果没有实现接口,采用CGLIB动态代理完成AOP

JDK的动态代理

注意:需要实现类接口

例子:假设我有两个工作,工作1,工作2.


//写一个接口

public interface Working {

    void wokingOne();



    void WorkingTwo();

} 

//接口实现类

public class WorkingImpl implements Working {

@Override

public void wokingOne() {

    System.out.println("做任务1");

}



@Override

public void WorkingTwo() {

    System.out.println("做任务2");

}

}




> 好的,现在我要先做任务1,然后再做任务2我们的写法为:



public static void main(String[] args) {

    Working working = new WorkingImpl();

    working.wokingOne();//做任务1

    working.WorkingTwo();//做任务2

} 



> 好的精彩的地方来了,我再做任务2之前我要先休息10分钟,但是不能修改源代码。怎么办呢?这时候就用到我们的JDK动态代理了。代码如下:



> 先写一个代理的工具类。再做任务2前我们休息十分钟



public class MyProxyUtils {

public static Working getProxy(final Working working) {

    // 使用Proxy类生成代理对象

    Working proxy = (Working) Proxy.newProxyInstance(working.getClass().getClassLoader(),

            working.getClass().getInterfaces(), new InvocationHandler() {



                // 代理对象方法一直线,invoke方法就会执行一次

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

                    //再做工作2之前我先休息10分钟

                    if ("WorkingTwo".equals(method.getName())) {

                        System.out.println("休息10分钟");

                    }

                    //工作继续进行下去

                    return method.invoke(working, args);

                }

            });

    // 返回代理对象

    return proxy;

}

}


 public static void main(String[] args) {

        Working working = new WorkingImpl();

        Working proxy = MyProxyUtils.getProxy(working);

        proxy.wokingOne();

        proxy.WorkingTwo();



    } 

```



运行的结果可想而知:



```

做任务1

休息10分钟

做任务2 

```



**CGLIB动态代理**



**注意:没有实现类接口**



> CGLIB也是一个java项目,所以要使用它就要引入CGLIB的开发的jar包,**因为在Spring框架核心包(core)中已经引入了CGLIB的开发包了**。所以直接引入Spring核心开发包即可




### 最后

**如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!**

**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](

)**

![](https://img-blog.csdnimg.cn/img_convert/daf8cfc84fdb5227b0b1618c391814ae.png)

要使用它就要引入CGLIB的开发的jar包,**因为在Spring框架核心包(core)中已经引入了CGLIB的开发包了**。所以直接引入Spring核心开发包即可




### 最后

**如果觉得本文对你有帮助的话,不妨给我点个赞,关注一下吧!**

**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](

)**

[外链图片转存中...(img-14gDyBAz-1631185180615)]

![](https://img-blog.csdnimg.cn/img_convert/6e6463247e74e06477dd5eb773261f4b.png)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
spring boot+spring cloud视频教学下载全套。( ├1 公开课.avi ├10 4.6 Ribbon-3使用配置文件自定义Ribbon Client.avi ├11 4.7 Ribbon-4 Ribbon脱离Eureka使用.avi ├12 4.8 Feign-1 Feign的简介及基础使用.avi ├13 4.9 Feign-2覆写Feign的默认配置.avi ├14 4.10 Fegion-3覆写Fegion的默认配置及Fegion的日志.avi ├15 4.11 Fegion-4解决Fegion第一次请求timeout的问题.avi ├16 4.12 Eureka深入理解.avi ├17 4.13 Eureka常用配置详解.avi ├18 4.14 Eurek Ribbon Feign常见问题及解决.avi ├19 5.1超时机制,断路器模式简介.avi ├2 1.1 微服务架构概述.avi ├20 5.2 Hystrix简介及简单代码示例.avi ├20 5.2Hystrix简介及简单代码事例.avi ├21 Hystrix Health Indicator及Metrics Stream.avi ├22 5.4 Hystrix Health Indicator及Metrics Stream支持.avi ├23 5.5 Fegion的Hystrix支持.avi ├24 5.6如何禁用单个FegionClient的Hystrix的支持.avi ├25 5.7 Feign使用fallbackFactory属性打印fallback异常.avi ├26 5.8 Hystrix Dashboard的使用与常见问题总结.avi ├27 5.9 Turbine-上.avi ├28 5.9 Turbine-下.avi ├29 6.1 API Gateway简介.avi ├3.开始使用Spring Cloud实战微服务.avi ├30 6.2 Zuul简介及代码示例.avi ├31 6.3 Zuul指定path+serviceid.avi ├32 6.4 Zuul指定Path+url以及指定可用的服务节点时如何负载均衡.avi ├33 6.5 Zuul使用正则表达式指定路由规则.avi ├34 6.6 Zuul路由的strip-prefix与order.avi ├35 6.7 Zuul的各种姿势.avi ├36 6.8通过Zuul上传文件,禁用Zuul的Filters.avi ├37 6.9 Zuul的回退.avi ├38 6.10 使用Sidecar支持异构平台的微服务.avi ├39 6.10 Sidecar补充.avi ├4 服务提供者与服务消费者.avi ├4 服务提供者与服务消费者new.avi ├40 6.11-1 Zuul过滤器.avi ├41 6.11-2禁用Zuul的过滤器.avi ├42 7.1 Spring Cloud Config简介.avi ├43 7.2 编写Config Server.avi ├44 7.3 编写Config Client.avi ├45 7.4 Git仓库配置详解.avi ├46 7.5配置属性加解密之对称加密.avi ├47 7.6配置属性加解密之非对称加密.avi ├48 7.7 Spring Cloud Config与Eureka.avi ├49 7.8 Spring Cloud Config 与Eureka配合使用.avi ├5 4.1服务发现与服务注册.avi ├50 7.9 Spring Cloud Config配置属性刷新之手动刷新.avi ├51 7.10 Spring Cloud Config配置属性刷新之自动刷新.avi ├52 7.11 Spring Cloud Config配置属性刷新之自动刷新补充.avi ├53 7.12 Config Server的高可用.avi ├6 4.2Eureka简介与Eureka Server上.avi ├7 4.3将微服务注册到Eureka Server上.avi ├8 4.4 Ribbon-1 Ribbon的基本使用.avi ├9 4.5 Ribbon-2通过代码自定义配置ribbon.avi )

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值