TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
提到spring就不能不说控制反转Ioc//Inversion of Control + d0 H& I- A& F
和依赖注射DI//Dependency Injection 0 A; c$ X$ l+ h( u
什么叫控制反转呢? , j# q0 Y( p, N
套用好莱坞的一句名言就是:你呆着别动,到时我会找你。
/ ~. g+ p7 g6 c$ f什么意思呢?就好比一个皇帝和太监 / J2 u Y* h/ s* W2 c
有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女 3 }2 ?0 q8 z( D* X3 `) d) `
皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女 / K8 a8 a# s4 l) v% e
其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上
; k x. J: j: r- }2 m这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射 + e" n4 ~8 K2 |( U3 }3 u' ^/ k
太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去 6 o* \; v0 O. y8 m- O
整个后宫可以看成是Spring框架,美女就是Spring控制下的javaBean
, O$ m$ h& P+ u( h而传统的模式就是一个饥渴男去找小姐出台 ( m& l# r ~- e4 @ A& [& B" I. o U! a
找领班,帮助给介绍一个云云,于是领班就开始给他张罗 ; w8 ~) v% N9 J! A8 @
介绍一个合适的给他,完事后,再把小姐还给领班,下次再来 ) \' }( v: D& K# I9 i& F |, M
这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐 1 F, p$ [( C, @
这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface
, x/ B; `5 V7 C3 K( e小姐就是EJB,饥渴男是客户端,青楼是EJB容器
# a' I3 Y/ G* v y' i j看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去 2 o' L( I3 n& K' y' A6 F
而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了 - ~7 Z8 C, B; T, t
而不是皇帝,必要时候由太监给注射进去就可以了
3 I& Y G. c, `0 \3 x2 ?) i看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持
/ [; V; L6 U& W5 ]5 }可以和其它开源框架集成
: o) F' h- C( i9 ^" s+ e! v6 p$ ?: Y( }
|
|