TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
提到spring就不能不说控制反转Ioc//Inversion of Control
; {4 _. K7 n: w7 N和依赖注射DI//Dependency Injection
( i: A. G. x, w- m什么叫控制反转呢?
8 x& ?4 q3 r, o G8 E; [套用好莱坞的一句名言就是:你呆着别动,到时我会找你。
/ L* X. i& y8 }9 {2 `3 d7 V什么意思呢?就好比一个皇帝和太监 & }' t! o8 k: q* ?2 p- U
有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女 - e6 B* `9 N% W
皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女
# f9 T+ |* k" _% `3 u0 e p其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上
/ M5 e; c% `5 Y% t, O% i" `; F# r0 d这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射 # J b, o8 U7 [! `) T1 K
太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去
2 x# d/ L3 h; \整个后宫可以看成是Spring框架,美女就是Spring控制下的javaBean
1 i( m: W! T7 c而传统的模式就是一个饥渴男去找小姐出台
0 i7 M( f' _# z! d" d! F0 E( K$ P! L找领班,帮助给介绍一个云云,于是领班就开始给他张罗
H1 }9 i! c1 ~3 F- ?介绍一个合适的给他,完事后,再把小姐还给领班,下次再来 3 y2 I3 E3 H/ W" h3 E7 {
这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐 " |8 D1 R( K+ A" I
这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface 1 R! r* k; v: @ S+ t J
小姐就是EJB,饥渴男是客户端,青楼是EJB容器 $ G j" R% ]: b8 r* P& M# W+ o! O( w. g
看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去
( b* w- B P' ?2 _) ^ `0 N8 v7 s而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了
' H, h: `% |! N) M而不是皇帝,必要时候由太监给注射进去就可以了 _! [6 Q" Q* z/ H
看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持
+ J6 T3 d" O# h: f) i# U7 Q: V2 X可以和其它开源框架集成 " t/ Z8 p' ` A. q3 \2 _0 |3 h
% R7 j! M1 E% V: B" ]: ^ |
|