TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
提到spring就不能不说控制反转Ioc//Inversion of Control
" x5 S ~1 }2 z. X) [和依赖注射DI//Dependency Injection 0 S' c2 n3 S+ C; P
什么叫控制反转呢? 9 r7 }( U9 l" R2 U7 J; H5 s# ~
套用好莱坞的一句名言就是:你呆着别动,到时我会找你。 ; T n* E& |. U6 c+ w
什么意思呢?就好比一个皇帝和太监
; Y/ V. J8 a. @1 j0 J0 E有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女
# }1 c" O0 f7 r( e0 |" j& B! G3 J皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女
( L* @$ ]' I; U6 |& d其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上 7 |$ Y$ X; {/ J& i' d
这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射
$ t: `( B. Y( L1 A太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去
0 @# O7 o$ @4 e( @整个后宫可以看成是Spring框架,美女就是Spring控制下的javaBean 0 F- P# g) q1 z9 c& D
而传统的模式就是一个饥渴男去找小姐出台
9 |4 ~" d1 P ]! ^+ [) Y, O* U找领班,帮助给介绍一个云云,于是领班就开始给他张罗 + ]. l# [- X, e- z: ]7 t
介绍一个合适的给他,完事后,再把小姐还给领班,下次再来
& s& m' a5 W0 s u# |4 d/ J" h这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐 % F( v, ~+ y* L
这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface
: u& S7 b. m% ^6 t+ V- S小姐就是EJB,饥渴男是客户端,青楼是EJB容器
+ _+ y3 @$ y5 o5 c. C看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去
1 N( K% ?- d6 F! ?而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了 2 e- C3 g- |/ B2 n
而不是皇帝,必要时候由太监给注射进去就可以了
4 o& B2 ~7 R2 ^6 [. S看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持 + }5 j* p1 u) s9 }& H
可以和其它开源框架集成 % _! _9 c* G0 X
% ~8 g6 H" b0 S: J# E$ S! H
|
|