关于Spring 收集记录非原创

Spring的优点

  1. 轻量级、非侵入式,对现有的类结构没有影响。
  2. 可以提供众多服务,如事物管理,WebServices等。
  3. AOP的很好支持,方便面向切面编程,使得业务逻辑和系统服务分开
  4. 对主流的框架提供了很好的集成支持,如hibernate,Struts2,JPA等,像粘合剂把一些好的框架粘合在一起方便实用
  5. 使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑
  6. Spring DI机制降低了业务对象替换的复杂性。
  7. Spring 的高度开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部

Spring的缺点

  1. 缺少一个公用控制器
  2. 没有SpringBoot好用
  3. Spring像一个胶水,将框架粘在一起,后面拆分的话就不容易拆分了

IOC

  1. 传统Java SE程序设计是在对象内部通过new去创建对象,是程序主动创建依赖对象。

  2. IOC是有专门的一个容器来创建这些对象,即由IOC容器来控制对象的创建。

  3. 反转:由容器帮我们查找及注入依赖对象,对象只是被动地接受依赖对象,由对象主动反转为了容器主动。

  4. 谁依赖谁?为什么需要依赖?谁注入谁?注入了什么?

    1. 应用程序依赖于IOC容器。
    2. 应用程序需要IOC容器来提供对象需要的外部资源。
    3. IOC容器注入应用程序某个对象,应用程序依赖的对象。
    4. 注入了某个对象所需要的外部资源(包括对象、自愿、常量数据)。
  5. IOC和DI是对同一概念的不同描述。

如何理解IOC容器?
比如我是应用程序,我需要一个对象,我之前都是自己去找这个对象,我需要找一个我喜欢的类型,有各种条件,比如有车、有房、长得好看、没爹没娘,但是找起来很费劲。现在IOC容器就相当于婚介所,我这个类在婚介所登记之后,它会替我照着要求去找这个对象,那我就被动接受就好了。

如何理解DI?
DI实现了IOC在系统运行时动态地提供对象。底层是Java反射,允许在运行时动态地生成对象、执行对象的方法、改变对象的属性。

IOC的意义在于解耦,对象不再自己创建对象,这样会对创建对象有着很强的依赖性,现在对象都交由IOC容器来控制,依赖关系变为由IOC容器建立。

Bean

Bean的作用范围

  1. singleton:单例模式,默认,不管收到多少个Bean请求,每个容器中只有唯一一个Bean实例。
  2. prototype:原型模式,与singleton相反,每次Bean请求都会创建一个新的实例。
  3. request:每次HTTP请求都会创建一个新的Bean并把它收到request域中,在请求完成后Bean会失效并被垃圾回收器回收。
  4. session:和request类似,确保每个session中有一个Bean实例,session过期后bean会随之失效。
  5. global session:当应用部署在Portlet容器时,如果想让所有Portlet共享全局存储变量,那么该变量需要存储在global session中。

Spring框架中Bean的生命周期

  1. Spring容器从XML文件中取bean的定义,并实例化bean。
  2. Spring根据bean的定义填充所有的属性。
  3. 如果bean实现了BeanNameAware接口,Spring传递bean的ID到setBeanName方法。
  4. 如果Bean实现了BeanFactoryAware接口,Spring传递beanFactory给setBeanFactory方法。
  5. 如果有任何与bean相关的BeanPostProcessors,Spring会在postProcesserBeferInitialization方法内调用它们。
  6. 如果bean实现intializingBean了,调用它的afterPropertySet方法,如果bean声明了初始化方法,调用此初始化方法。
  7. 如果有BeanPostProcessors和bean关联,这些bean的postProcessAfterInitialization方法将被调用。
  8. 如果bean实现了DisposableBean,它将调用destroy方法。

Spring框架中用到了哪些设计模式

  1. 代理模式:在AOP和remoting中被用的比较多。
  2. 单例模式:在spring配置文件中定义的bean默认为单例模式。
  3. 模板方法:用来解决代码重复问题,比如RestTemplate、JMSTemplate、JPATemplate。
  4. 前端控制器:Spring提供了DispatcherServlet来对请求进行分发。
  5. 视图帮助(View Helper):Spring提供了一系列的JSP标签,高效宏来辅助将分散的代码整合在视图里。
  6. 依赖注入:贯穿于BeanFactory/ApplicationContext接口的核心理念。
  7. 工厂模式:BeanFactory用来创建对象的实例。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值