白话spring!相当的形象!!

来源:互联网 发布:数据分析的ppt模板 编辑:程序博客网 时间:2024/05/12 22:19

spring 概念学习

spring 控制反转 -> spring 注射

有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女
皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女
其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上
这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射

---- 理解

太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去
整个后宫可以看成是Spring框架,美女就是Spring控制下的JavaBean

-- ejb spring 比较

而传统的模式就是一个饥渴男去找小姐出台 ,
找领班,帮助给介绍一个云云,于是领班就开始给他张罗
介绍一个合适的给他,完事后,再把小姐还给领班,下次再来
这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐
这就是lookup()方法,领班手中的小姐名录就是JNDI小姐就是EJB,饥渴男是客户端,青楼是EJB容器

看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去
而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了
而不是皇帝,必要时候由太监给注射进去就可以了

再说 饥渴男

-----------------------------------------------------------------------------------------------------------------
一个地方的那种生意火不火。归根究底要看妈咪的措施完不完善

Cross-cutting concers (这些是妈咪的一些措施 sprint-》(叫法)(advice)建议哦)

事务措施 (TranactionInterceptor) -> 对小姐措施

日志措施 (LogInteceptor)-> 对饥渴男的措施 记录一个地区的生意情况

安全措施 (SecurityInteceptor)-> 对警察的措施

呵呵。。措施越多。就会安全。生意就越稳定。

你看 webwork 不就默认带了一些措施。你 还可include进一些

这些都要搞成声明的。。因为要根据情况说话,传统的方式就要硬来.非常的不稳定啊。而现在,

想什么时候声明措施就采用声明式的。。。。就不会出现。一不采用某些措施而全盘崩溃


需要的时候就会采用一些措施(weave) sprint-》(叫法) 织入,会在事件发生那一时间点(joinpoint),做好相应的措施(pointCuts)

措施一般在三种情况下采用

进房间前(编译时期)-> Compile time ->

跟妈咪 会面时(类加载时期 ClassLoad time)

进行时..(有明显动作时) 执行时(Runtime)

以上的措施对于每一个 饥渴男(javabean )都不用关心。这样饥渴男就放心了。

所有的措施都是为了饥渴男 取得更好的服务。而又感觉不到。spring 强大之处啊。化有形为无形


joinpoint(方法切入点) 也就是 饥渴男 与 警察  饥渴男 与 妈咪  饥渴男与小姐。接触的那一刻

-------spring 只支持在方法./接触的那一该. 想要更细一点的话.请使用 aspectJ

因为 spring 哲学认为(现代社会). Field 的 joinpint 会破坏对象的封装-> 不穿衣服会说你神经病

所以.都要封装.(装上衣服吧),不能老在原始社会踏步(过程思想)

pointCut 就是定义一些 措施 要采用最佳的时候。

比如说 饥渴男 看到了 警察 就需要把(SecurityInteceptor)  安全措施 引入了 正发生的那一刻(joinpoint)

饥渴男 就是闻如其名的 Target

Introduction(引入) ->  传说中 妈咪的后台boss(老板)可以随心所欲地对饥渴男进行一些 敲诈 勒索

也就是可以动态地为一个类在饥渴男 进行那个事的时候.动态地改变一些方法和行为

一般来说我们不建议采用。 应为这样做不厚道。生意会火不起来的。

spring 的 Advice(措施) 都是在饥渴男(Target) 进行交易(weave)的那一刻进行采用.

在特殊情况(joinpoint)发生情况时.pointCut()就会采用之前定义好的措施(Interceptor)来抵御

正所谓 "上有对策  下有政策" --反转

spring aop (实践下)

dataSource 小姐同意的条件 -》 来做这种事的人。肯定是带了钱的,也就是说。这步操做必需通过。否则没有后戏可言.

TransactionInterceptor 妈咪对小姐的吩咐措施 -》

(这个是小姐会跟你谈好的) 这个就是用来管理你的服务。你可能添加服务,换服务,不需要某此服务.还可以查询服务

也就是用TrasactionAtribute来协调

妈咪 的原则
BeanNameAutoProxyCreator -》  只要男人进来的。都要收钱

日志措施-》 记录你的时间。。可能还会记录点其它的..

安全措施 -》 帮你放哨

来吧。。试着去写一个 sprng 的aop 容器吧

  注入dataSource 。。。。去找小姐时。带点钱

  小姐(transatrribute),给了钱的话。。跟我走吧

  所有小姐提供的服务。都是由妈咪的事务措施(TransactionInterceptor  ) 来操做 transactionAttributes

进入 妈咪 提供的房间你会碰到 妈咪

她会默认地对于你笑一个 ---->BeanNameAutoProxyCreator 呵呵。有来一个送钱的

日志拦截器 -》 记录你的时间 安全拦截器 -》 帮你放哨 和 (TransactionInterceptor ) 这个。。都是帮你的。。

放心去做吧。。 spring 就是这么简单!!!!!!

 

让我来说说spring的原理吧。。(动态代理)

其实就是把一些措施移山入海。。让妈咪帮你做好。

饥渴男 在做事的时候。完全感觉不到有一些措施正在被妈咪在实施


妈咪 -> 动态代理

做事之前的措施 --> before 拦截器

做那个事 (饥渴男)不用知道之前之后的事

做事之后的措施 --> after 拦截器

有的时候。。你可能会碰到一条龙服务。(aruond)拦截器

看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持 ,可以和其它开源框架集成