TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
提到spring就不能不说控制反转Ioc//Inversion of Control 8 j3 l7 R. E/ z9 R& a# v% ^
和依赖注射DI//Dependency Injection : d6 P. x. c5 s/ t1 F
什么叫控制反转呢?
; @& K, L. O9 j套用好莱坞的一句名言就是:你呆着别动,到时我会找你。 * W+ a4 G( a3 d
什么意思呢?就好比一个皇帝和太监
3 f) m f4 P+ ^2 g" u% w有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女
8 ^( L3 \" D8 ^+ A g/ q皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女
) E, |' S) g4 s4 V; U其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上
$ f6 n& d8 m. n- G0 h. m这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射
) {1 P6 T5 @* Z7 X5 U太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去
# J$ C3 _1 W0 b9 n b) Y$ E整个后宫可以看成是Spring框架,美女就是Spring控制下的javaBean / a8 e8 U. X5 T
而传统的模式就是一个饥渴男去找小姐出台 7 T7 c8 O' T0 d! A
找领班,帮助给介绍一个云云,于是领班就开始给他张罗 ) j, E- T; V& i3 n# H
介绍一个合适的给他,完事后,再把小姐还给领班,下次再来 % h( h# o+ T- p3 ~0 \! z
这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐
: O, s+ \+ @4 W5 N `+ O9 @* v这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface ( _0 O( F( \! E: u8 l' [
小姐就是EJB,饥渴男是客户端,青楼是EJB容器
0 Q0 y7 V G7 c2 K6 }看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去 2 _1 @8 `" a9 e& y; z8 O7 t( T
而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了
2 K6 L$ Z" m. m5 s! |5 l L1 A; C2 S而不是皇帝,必要时候由太监给注射进去就可以了
' d) c) ~, R1 b. d! `: @看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持 : G0 ^$ f0 l4 E$ S9 ?
可以和其它开源框架集成 . C2 ~# M) O5 q
9 s( P6 B2 E; ~! y: m- O |
|