TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
提到spring就不能不说控制反转Ioc//Inversion of Control
3 c+ Q0 ]/ N P1 S; W3 S和依赖注射DI//Dependency Injection 4 o* i# _7 x4 Q- H
什么叫控制反转呢? - r) I( U) Z( l R
套用好莱坞的一句名言就是:你呆着别动,到时我会找你。
8 ^* d2 n) D: {9 v) \什么意思呢?就好比一个皇帝和太监 * C& L0 e7 l8 W6 N9 J- `6 v' _
有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女 & d# I; V9 n+ f: ~$ b6 O# H
皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女
: ~8 v( z, r, b& `其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上 0 \1 E4 i5 s* d, T& n/ C
这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射 1 ?) l* n7 a% V
太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去 ( B$ W/ h) I& O1 d
整个后宫可以看成是Spring框架,美女就是Spring控制下的javaBean 0 G. ?& a! c& D! i
而传统的模式就是一个饥渴男去找小姐出台
, a6 S, ~) J% {/ }0 }& k7 O找领班,帮助给介绍一个云云,于是领班就开始给他张罗
& L j& B, B* u8 E, S* m8 J2 _介绍一个合适的给他,完事后,再把小姐还给领班,下次再来 % \1 s" c( ~# j" F" J |1 A
这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐
n3 v! z$ c% Q4 N% D) {这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface ( K. v' d. H1 c1 y# q* G
小姐就是EJB,饥渴男是客户端,青楼是EJB容器 % A q" t5 L$ ]
看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去 : V3 X$ f: b- p5 a2 l
而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了 / _7 }1 a% |) X% Q. M3 M Q5 w8 |
而不是皇帝,必要时候由太监给注射进去就可以了 , ?2 }% |( O; B! S. @
看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持
* |9 u/ ~0 G! w( c }可以和其它开源框架集成 / ^1 `) [& Z! n5 R: O2 M7 @
* [' P1 S; X' g" ]% Y7 [; ?, }9 J
|
|