TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
提到spring就不能不说控制反转Ioc//Inversion of Control 7 X o) [, C2 W* \. v( j Q
和依赖注射DI//Dependency Injection 0 F6 l" P% p `% j
什么叫控制反转呢?
2 Y# S8 Q) w0 N套用好莱坞的一句名言就是:你呆着别动,到时我会找你。
{5 C9 h5 r8 w# B& ]1 I什么意思呢?就好比一个皇帝和太监 1 T# e% K/ c# d- H
有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女 / o8 r9 Y) u* Y# X, S1 N! k
皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女 ! J4 v- z6 O, N/ I
其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上 - L% ~9 m4 x- c( x; A5 R& H
这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射
' i+ c* N$ b6 U4 N( p* M! x; v太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去 : E8 I( A* s" h. r9 }* a$ v
整个后宫可以看成是Spring框架,美女就是Spring控制下的javaBean ! k/ H4 S" O% d+ u+ V' V' d
而传统的模式就是一个饥渴男去找小姐出台
! N" ]3 D! i. f找领班,帮助给介绍一个云云,于是领班就开始给他张罗
6 d- g+ m, L5 r2 J介绍一个合适的给他,完事后,再把小姐还给领班,下次再来 8 ?" X4 B* U( U) Q3 K; D7 o
这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐
6 f6 w$ W+ S S! v4 I! W& k这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface % J7 q5 i3 D- `/ C* z" T8 Y
小姐就是EJB,饥渴男是客户端,青楼是EJB容器
8 K, K" h7 o0 T& G看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去 7 R" Z0 h! K* d
而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了
* D/ S# l. {9 ^1 D而不是皇帝,必要时候由太监给注射进去就可以了 $ J3 u0 [& @1 z6 J% k
看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持 " v% p6 J7 V( o; @; h" }
可以和其它开源框架集成
b% z$ e: R1 w& F, k# |' U
' P$ b" j' Y3 @( a0 ~' S+ F |
|