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生成一个被代理对象的子类作为代理;

浙公网安备 33010602011771号