TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
提到spring就不能不说控制反转Ioc//Inversion of Control
" d% l. p( j% i8 R2 ^" M和依赖注射DI//Dependency Injection 6 i+ ?( c# N: r, a' e4 v
什么叫控制反转呢?
4 w. E ^! b# C5 x套用好莱坞的一句名言就是:你呆着别动,到时我会找你。 0 Y0 a- F: p- a4 E( D
什么意思呢?就好比一个皇帝和太监 # c! x; h( F, c- L) q/ e
有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女
* w* k1 ?% @" i( J, I皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女
2 j9 y7 [5 J' Q. O其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上 - R+ y. A7 k, c" u5 K2 N8 m1 ~4 b) M
这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射 6 v7 p0 f( b2 |( p5 [/ O! v1 S
太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去 ) O( }1 c* {! M5 F% \4 |, y' y/ v
整个后宫可以看成是Spring框架,美女就是Spring控制下的javaBean
6 I! X% `$ l) R+ M3 D而传统的模式就是一个饥渴男去找小姐出台
3 G1 _' d3 y5 a8 X$ d+ D找领班,帮助给介绍一个云云,于是领班就开始给他张罗 ( V$ D4 d* ^+ w' c: w. |+ O& h0 K
介绍一个合适的给他,完事后,再把小姐还给领班,下次再来
, j2 }: a% l. Z这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐
i1 b2 Q3 ]8 ?3 s* x这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface
5 c9 A% z% O2 z+ t4 E2 U, @) p小姐就是EJB,饥渴男是客户端,青楼是EJB容器
V( K% I K/ W, d. Y看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去 : g7 F' u2 V9 w0 f
而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了
4 [6 ]0 L1 e! v' q而不是皇帝,必要时候由太监给注射进去就可以了
+ T1 y1 r8 z2 R' a. K, [4 J看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持 - S; @) {7 s* }# K9 j2 i3 H
可以和其它开源框架集成 9 z6 K( ]8 c/ f5 p) Y4 p$ W
" @- c$ s' K, P" Z! k8 ^* G |
|