一些关于Spring的随笔

Spring的IOC、AOPspring

 

IOC(Inversion of Control):编程

 

spring容器控制了全部的bean,不用spring之前,一个bean要依赖另外一个bean就在这个bean里初始化另外一个bean才能使用另外一个bean,是这个bean在控制另外一个bean。如今spring容器控制全部的bean,并把另外一个bean注入给这个bean。反转:是指控制bean的权利转移给容器了。设计模式

 

"不要给咱们打电话,咱们会打给你的(don‘t call us, we‘ll call you)"这是著名的好莱坞原则。  安全

在好莱坞,把简历递交给演艺公司后就只有回家等待。由演艺公司对整个娱乐项目彻底控制,演员只能被动式的接受公司的差使,在须要的环节中,完成本身的演出。 微信

这和软件开发有必定的类似性, 演员们就像一个个Java Object, 最先的时候本身去建立本身所依赖的对象, 有了演艺公司(Spring容器)的介入,全部的依赖关系都是演艺公司搞定的, 因而控制就翻转了 性能

 

应用控制反转后,当对象被建立时,由一个调控系统内的全部对象的外界实体将其所依赖的对象的引用传递给它。也就是说,依赖被注入到对象中。因此控制反转是关于一个对象如何获取它所依赖的对象的引用的,在这里,反转指的是责任的翻转ui

 

AOP(Aspect Oriented Programming):spa

 

在作系统设计的时候,一个很是重要的工做就是把一个大系统作分解,按业务功能分解成一个个低耦合、高内聚的模块,分解后会发现有些东西是通用的,或者是跨越多个模块的:设计

 

日志:对特定的操做输出日志来记录日志

安全:在执行操做以前进行的操做检查

性能:要统计每一个方法的执行时间

事务:方法开始前要开始事务,结束后要提交或回滚事务

等等....

若是每次用到他们都编写一遍代码过于麻烦还有大量的代码冗余,aop就是用来解决这个问题的。

 

大致能够理解为:把某一项功能的代码封装起来,在用到它的地方直接切入。

 

 

Spring 的 bean:

bean就至关于定义一个组件,这个组件是用于具体实现某个功能的。这里的所定义的bean就至关于给了你一个简洁方便的方法来调用这个组件实现你要完成的功能。

 

Spring的容器:

 

Spring容器能够帮助你管理全部的Bean对象,bean都放在容器里

Beanfactory 和 ApplicationContext 均可以当作是容器的具体表现形式。就像不一样样子的桶。用户须要什么样就用什么样的。

Beanfactory: 最基本的接口类  设定了最基本的功能规范。(最简单的桶,能装水,有把手)

Spring经过定义BeanDifinition 来管理基于Spring的应用中各类对象以及他们之间的相互依赖关系。BeanDifinition 抽象了咱们对Bean的定义,是让容器起做用的主要数据类型。

Beanfactory 定义了IOC容器的最基本的形式,而且提供了IOC容器所应该遵照的最基本的服务契约,也是咱们使用IOC容器所应遵照的最底层和最基本的编程规范。并无给出容器的具体实现。

 

用户使用容器时,可使用转义符“&”来获得FactoryBean自己,用来区分经过容器来获取FactoryBean产生的对象和获取FactoryBean自己。举例来讲,若是myJndiObject是一个FactoryBean,那么使用&myJndiObject获得的是FactoryBean,而不是myJndiObject这个FactoryBean产生出来的对象。 

 

区分FactoryBean和BeanFactory这两个在Spring中使用频率很高的类,它们在拼写上很是类似。一个是Factory,也就是IoC容器或对象工厂;一个是Bean。在Spring中,全部Bean都是由BeanFactory(也就是IoC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能产生或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式相似。

 

最后给你们分享一个链接:

 

Spring 的本质系列(一):依赖注入

该链接来自于 码农翻身,码农翻身是一个很是赞的微信公众号。

相关文章
相关标签/搜索