zoukankan      html  css  js  c++  java
  • 关于Spring

    在SpringBoot火爆2019的年代,Spring框架也逐渐变成了底层。对于具体的应用,使用Spring开发的效率远远比不上使用SpringBoot,IOC与AOP的xml在SpringBoot中被取代,包依赖也被进一步被封装成各个模块。

    简化开发的同时带来了更多的透明性,欲戴皇冠,必承其重。

    Spring有两大特性:IOC和AOP。

    关于IOC,

    之前在CSDN写了一篇描述:https://blog.csdn.net/qq_40754146/article/details/90815333

    在Spring的时代,就推荐使用注解而不是xml来配置,在SpringBoot中完全实现了注解的全面占领。

    IOC有什么用?

    1574085455811

    IOC容器的背景是构建大型应用时会用到很多类,而完成对类与类之间的各种依赖关系管理成为了一个问题,于是IOC容器出现了。

    IOC容器的作用就是管理类之间复杂的依赖关系。

    用专业的名词解释,就是降低类之间的耦合度,方便后期开发和维护。

    降低耦合本质上是将类与类之间的耦合转为类和IOC容器之间的耦合,PS:耦合不能完全消除,只能减小。

    关于AOP

    AOP中文名叫面向切面编程。

    AOP使用动态代理实现。包括两种方式:

    • 使用JDK动态代理实现。
    • 使用cglib来实现

    关于动态代理:

    • 静态代理:自己编写创建代理类,然后再进行编译,在程序运行前,代理类的.class文件就已经存在了。
    • 动态代理:在实现阶段不用关心代理谁,而在运行阶段(通过反射机制)才指定代理哪一个对象。

    关于反射:反射机制允许程序在运行期 借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 (最高权限)

    AOP的实现本质是反射加上代理模式。

    面向切面的思想本质上就是通过动态代理(反射)实现各个类的代码控制。

    依然是很抽象的一句话。。。。。

    【举个栗子】

    现在有5个类,每个类有5个方法,如果我想要在每个方法执行完成之后打印方法名,按照没有aop的思想就是在每个方法后面加上logger.info或者system.out.println。

    一共就需要些25行代码,这个时候,aop登场。建立一个切面类,然后定位到这5个类的每个方法,加一个后置通知(就是方法执行完之后会执行这个通知,本质上是一个方法)。

    这样25行的代码简化成了一个方法加方法体的一行代码,如果说IOC是解决类与类之间的依赖关系(有点无形),那么AOP是看得见可以简化大量代码。

    AOP的应用场景有日志记录,性能统计,安全控制,事务处理,异常处理等。目前用过的就是日志处理(hhh)

  • 相关阅读:
    MFC基于对话框的程序添加菜单
    iOS远程推送原理及实现过程
    基于SolrCloud的内容搜索和热点推送
    Android 常用抓包工具介绍之Charles
    帮你快速实现全景应用性能可视化
    Android常用抓包工具之TcpDump
    JAVA IO 序列化与设计模式
    《2015中国移动应用性能管理白皮书》欢迎来看
    利用听云Server和听云Network实测Kubernetes和Mesos在高并发下的网络性能
    魅族电商运维之路
  • 原文地址:https://www.cnblogs.com/noneplus/p/11885981.html
Copyright © 2011-2022 走看看