TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
提到spring就不能不说控制反转Ioc//Inversion of Control & L7 L. l& Y7 K- Y; y: @
和依赖注射DI//Dependency Injection
! G) Y z( {! A+ ^( @什么叫控制反转呢?
. N. J/ D5 u$ V( l! U6 ^& `套用好莱坞的一句名言就是:你呆着别动,到时我会找你。 - O, Z- J% m( W# K7 B6 ^5 Y
什么意思呢?就好比一个皇帝和太监
0 L0 I- i; O" `, a5 k# U/ _8 M有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女 3 n+ I& F& c& o, ~1 V3 K+ Y
皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女 : X% ?4 ~! X: t0 P0 I
其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上 ! E8 z: ^' P5 S# Q7 V
这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射 / Q8 m- v0 C/ J% B
太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去
3 }& k, G7 H) S+ i& _4 b6 B# q4 t整个后宫可以看成是Spring框架,美女就是Spring控制下的javaBean % H+ A d5 ~- Z
而传统的模式就是一个饥渴男去找小姐出台 - P6 }& T- X: U* c% [& b
找领班,帮助给介绍一个云云,于是领班就开始给他张罗 # y' w4 C' Y3 k7 ?
介绍一个合适的给他,完事后,再把小姐还给领班,下次再来 ) d/ h9 e& w' e. ?1 O' {. @% y8 E& _
这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐 " N9 t4 C; W V4 x
这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface
! G+ [2 S3 K( t8 {+ m) ~7 s4 j小姐就是EJB,饥渴男是客户端,青楼是EJB容器 2 q# [ K8 f& I6 k; W$ E+ a
看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去 5 H# j. I# v( k q8 T3 k: s B& g
而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了
" _# N @& I, W2 U5 D而不是皇帝,必要时候由太监给注射进去就可以了 ' o) P& G0 F0 n" l2 \- V6 Q
看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持 & T1 k7 J' u: s3 g
可以和其它开源框架集成 ; ^; m. P' y' Y- N9 o
o/ }. v( I: ]% B% I, a7 n# ~
|
|