TA的每日心情 | 衰 2021-2-2 11:21 |
|---|
签到天数: 36 天 [LV.5]常住居民I
|
提到spring就不能不说控制反转Ioc//Inversion of Control
( `7 C7 _% D8 d: c8 H4 u8 U( Y和依赖注射DI//Dependency Injection - y6 ]# p. t/ C9 \* ?4 d' H4 C
什么叫控制反转呢?
u3 A) H! {/ M& v套用好莱坞的一句名言就是:你呆着别动,到时我会找你。
# U" i$ p( q( i, M, C+ R什么意思呢?就好比一个皇帝和太监
+ g- }4 K' E3 n, W有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女
/ P( W$ G8 e z$ `, z6 C皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女 $ s# U' T. U3 A/ ]6 S+ {
其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上
3 s& K Y1 H, ]# g- s这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射
/ g5 `; |9 |: S, L1 H/ k; y0 @. u太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去
: m; q2 _, ]4 q, m4 c; R$ u整个后宫可以看成是Spring框架,美女就是Spring控制下的javaBean
6 W% Q* s9 t( z而传统的模式就是一个饥渴男去找小姐出台
( [5 v6 j9 F- C7 }% H# ^7 b找领班,帮助给介绍一个云云,于是领班就开始给他张罗
; x' s+ I% s- X) A介绍一个合适的给他,完事后,再把小姐还给领班,下次再来 ; Y2 o% s: g3 p' K% m- t( t$ L
这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐 3 F" O1 k4 Q9 }0 W2 M5 s
这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface % o `/ A/ G2 }7 z7 s. q4 i
小姐就是EJB,饥渴男是客户端,青楼是EJB容器
' ~- f. H# R' @9 _% T看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去 * H+ ]1 ]4 j* q& T5 `: J3 p
而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了 3 s- f8 b# Q- z& T6 R
而不是皇帝,必要时候由太监给注射进去就可以了
3 |* ^2 H/ x, `7 {看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持
" |! p, ?7 m$ P" [7 g可以和其它开源框架集成
$ | R$ y: s) m& e) \- p8 n. [7 S) A8 E+ H4 }) ~ f& P
|
|