TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
提到spring就不能不说控制反转Ioc//Inversion of Control / V4 _% X3 _0 P( Z' B o" z; ]
和依赖注射DI//Dependency Injection 8 v. k" a1 G1 X; }& D
什么叫控制反转呢? + N9 c1 g9 q- W) B. B. ]
套用好莱坞的一句名言就是:你呆着别动,到时我会找你。
6 u4 u6 |, K. Q7 b4 J* b! Q8 L+ N. C什么意思呢?就好比一个皇帝和太监
7 E' `4 h5 w% F0 E7 d/ a. x有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女
' p! ?1 f! e- N7 h% ~皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女 7 l3 T* P* K, a' T& @+ x% K, y5 Q
其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上
; S4 L0 z! ^9 o# v这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射
1 a+ l" S2 `0 y$ i1 }( a太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去
x9 q3 s. K0 k! u9 s% a整个后宫可以看成是Spring框架,美女就是Spring控制下的javaBean - m) {4 Z+ |7 j
而传统的模式就是一个饥渴男去找小姐出台 ) ~: E6 |3 h* \: F& P; t
找领班,帮助给介绍一个云云,于是领班就开始给他张罗 # d/ `. @+ m o X8 y4 }1 i
介绍一个合适的给他,完事后,再把小姐还给领班,下次再来
4 O/ j9 b2 T+ O9 E$ w2 J这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐 9 F- P0 j; x, z0 C: l1 n; D
这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface 8 [4 ^, A" m/ a+ p j9 T0 i5 P
小姐就是EJB,饥渴男是客户端,青楼是EJB容器 ( V1 n0 S- J6 z) A9 P- T
看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去 + f+ }/ X. g5 u' ]
而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了
1 S0 N2 w$ l+ K* _而不是皇帝,必要时候由太监给注射进去就可以了 R7 h5 w5 @3 P; T9 G
看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持 6 |% M$ u% X1 I. f2 j; }0 R
可以和其它开源框架集成 `6 g% B: ~8 j& [9 f5 u- y. f
9 ]2 q3 d* F- V1 c: {2 K
|
|