Spring中的设计模式

IOC:控制反转

  对象控制权由系统内部转移到外部容器;不需要我们去new了,达到了解耦的目的;

  结合DI来说,如果没有IOC容器,当对象A需要使用到对象B的时候必须自己去创建,对A来说这种依赖是主动的;引入IOC之后,当对象A需要使用到对象B时,可以指定IOC容器创建一个对象B注入到对象A中,此时对A来说这种依赖是被动的,也为控制权反转的体现;

 

实现IOC的设计模式:

工厂设计模式:

  Spring使用工厂模式通过BeanFactory或ApplicationContext创建bean对象;

  BeanFactory: 延迟注入,使用到某个bean时才会注入,占用更少内存,程序启动速度快;

  ApplicationContext: 容器启东时,一次性创建所有bean;

单例设计模式:

  优点: 频繁使用的对象可省去创建时间,对重量级对象而言,省去一笔系统开销;

     new次数减少,可减轻GC压力;

  Spring中默认单例;

  实现方式: <bean id="userService" class="top.snailclimb.UserService" scope="singleton"/>   @Scope(value = "singleton")

      源码通过ConcurrentHashMap实现单例注册表: 检查缓存中是否存在实例,如果不存在,注册到单例注册表;

 

AOP,将与业务无关但为业务模块共同调用的逻辑(事务处理,日志管理,权限控制)封装,降低模块间的耦合,提高代码复用性,可维护性和可扩展性;

代理设计模式:

  基于动态代理;如果要代理的对象实现了某接口,Spring AOP使用JDK Proxy创建代理对象,对于没有实现接口的对象,Spring AOP使用Cglib生成一个被代理对象的子类作为代理;

posted @ 2022-03-16 16:09  peachblossom  阅读(32)  评论(0)    收藏  举报