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