当前位置: 首页 > news >正文

银川住房和城乡建设局网站福永网站建设公司

银川住房和城乡建设局网站,福永网站建设公司,广州网站建设论坛,做外贸的都有那些网站大家好#xff0c;我是网创有方#xff0c;接下来教大家如何理解Spring的两个特性IOC和AOP。本节有点难#xff0c;大家多理解。 IOC#xff08;控制反转#xff09; 定义与核心思想#xff1a; IOC#xff0c;全称Inversion of Control#xff0c;即控制反转。 其核…大家好我是网创有方接下来教大家如何理解Spring的两个特性IOC和AOP。本节有点难大家多理解。 IOC控制反转 定义与核心思想 IOC全称Inversion of Control即控制反转。 其核心思想在于资源的使用不由使用资源的各方管理而是交给一个不直接使用资源的第三方进行管理。这样的好处是资源是集中管理的可配置、易维护同时也降低了双方的依赖度实现了低耦合。 实现与优势 在传统的编程方式中如果一个类A需要使用类B那么A会自己去创建B的实例。这会导致类A与类B之间的高耦合维护成本较高。而在使用Spring的IOC容器后类A不再直接创建类B的实例而是由Spring容器来创建并管理这些实例。类A只需要从容器中获取类B的实例即可从而降低了类A与类B之间的耦合度。 Spring容器通过配置文件或注解等方式来定义和管理Bean即对象实例使得对象的创建、配置和销毁等操作都交由Spring容器来管理。这样做的好处是代码更加清晰、易于维护同时也提高了系统的可扩展性和可测试性。 AOP面向切面编程 定义与核心思想 AOP全称Aspect-Oriented Programming即面向切面编程。它是一种编程范式允许程序员将横切关注点cross-cutting concerns从他们所影响的业务逻辑中分离出来。这些横切关注点通常包括日志记录、事务管理、安全性等。通过AOP我们可以将这些横切关注点封装成一个个切面Aspect然后在适当的时候将它们织入到业务逻辑中。 实现与优势 AOP的实现通常依赖于动态代理技术如JDK动态代理或CGLIB。在Spring中当一个方法被调用时Spring会检查该方法是否需要进行AOP处理即是否匹配某个切面的切入点。如果需要处理则Spring会创建一个代理对象来拦截该方法的调用并在方法调用前后执行切面的通知Advice。 AOP的优势在于它可以减少代码的冗余和复杂性。通过将横切关注点封装成切面我们可以避免在多个业务逻辑中重复编写相同的代码如日志记录、事务管理等。同时AOP也使得这些横切关注点更加易于管理和维护。 总结 IOC和AOP是Spring框架的两个核心特性。它们分别解决了对象之间的依赖关系管理和横切关注点的分离问题。通过使用IOC和AOP我们可以降低代码的耦合度、提高代码的可维护性和可扩展性、减少代码的冗余和复杂性。 好了上面是不是看着很难理解接下来我简单归纳下。 第一一个类被称作一个bean传统方式创建一个类对象都是通过new对象实现有了IOC这玩意之后直接通过工厂factory创建好类了统一管理。简单来说就是你不要再通过new啊这种方式创建对象了销毁创建都不用你来管你直接丢给我工厂我来帮管。 第二AOP就是创建切入点然后拦截拦截处实现自己的逻辑。打个比方早上上班本来坐公交路上遇到了道路施工然后改成骑自行车就这个道理。 如果对Spring的源码感兴趣的可以去看看。 下面附上书中的BeanFactory获取bean的代码下面代码非常简单。用的泛型看不懂的自己回去补java基础。 package org.springframework.beans.factory;import org.springframework.beans.BeansException; import org.springframework.core.ResolvableType; import org.springframework.lang.Nullable;public interface BeanFactory {String FACTORY_BEAN_PREFIX ;Object getBean(String name) throws BeansException; //获取bean的几种方法T T getBean(String name, ClassT requiredType) throws BeansException;Object getBean(String name, Object... args) throws BeansException;T T getBean(ClassT requiredType) throws BeansException;T T getBean(ClassT requiredType, Object... args) throws BeansException; //获取BeanProvider的几种方法T ObjectProviderT getBeanProvider(ClassT requiredType);T ObjectProviderT getBeanProvider(ResolvableType requiredType);boolean containsBean(String name); //是否单例模式boolean isSingleton(String name) throws NoSuchBeanDefinitionException; //是否原型模式boolean isPrototype(String name) throws NoSuchBeanDefinitionException;boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;boolean isTypeMatch(String name, Class? typeToMatch) throws NoSuchBeanDefinitionException;NullableClass? getType(String name) throws NoSuchBeanDefinitionException;NullableClass? getType(String name, boolean allowFactoryBeanInit) throws NoSuchBeanDefinitionException;String[] getAliases(String name); }参考杨开振老师的《深入浅出Spring boot 3.x》
http://www.hkea.cn/news/14562158/

相关文章:

  • 已被网站管理员设置拦截网络营销推广的方案
  • 福清网站商城建设合肥网站开发招聘
  • 大理州住房和城乡建设局网站深圳品牌女装前十名
  • seo网站的优化流程佛山市官网网站建设多少钱
  • 商城网站源码dede做教程网站资源放哪里
  • 天河门户网站建设廊坊网站建设制作电话
  • 商超网站网站续费管理系统
  • 网站开发简答题家居装修设计
  • 在一个空间建两个网站注册城乡规划师难度
  • 企业做网站公司怎么做三维制图培训班在哪里
  • 徐州网站建设市场分析wordpress采集1024
  • 加强网站集约化建设怎么推广游戏叫别人玩
  • 投诉举报网站 建设方案把wordpress动静分离
  • 网站开发说明wordpress文章自动更新
  • 自己做网站 最好的软件下载河南网站建设的公司
  • 我被钓鱼网站骗了骗取建设信用卡建设银行会怎么处理钱会还回吗wordpress微博同步
  • 国外做珠宝的网站有哪些公司的 SEO与网站建设
  • 地产网站建设方案wordpress调用多媒体
  • 镇平建设局网站企业网站如何上存
  • 廊坊设计网站公司网站建设去哪里找客户
  • 网站开发的源代码怎么算侵权黄页推广2021
  • 国内炫酷的网站设计请人做个网站多少钱
  • 国外做鞋子的网站吗天津个人做网站
  • 合肥市建设工程合同备案网站生成论坛网站
  • 网站建设与维护 计算机平顶山市网站建设
  • 社区app网站模板下载南宁网站推广优化
  • 中国舆情观察网搜索引擎优化的对比
  • 青岛英文建站公司西安网站价格
  • 天津环保网站建设概念tp5网站开发模板
  • 郑州设计师网广州seo排名