TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
提到spring就不能不说控制反转Ioc//Inversion of Control / R- f, K4 G2 @/ `# V% t" @
和依赖注射DI//Dependency Injection
; `! X2 `9 ?6 n: u l* o$ O. A什么叫控制反转呢? " l- m2 a6 n7 z
套用好莱坞的一句名言就是:你呆着别动,到时我会找你。
8 ^5 O3 U: L$ V/ w什么意思呢?就好比一个皇帝和太监 5 R0 {7 ?. g) e% w
有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女 3 X5 Z" `- C6 n2 G
皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女
0 A! S f( \0 b, @% y9 ]' a! u, b其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上 0 i- v" G# j7 G
这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射
5 h9 x( p' z6 @% C! Z2 Y/ F4 P太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去
% W7 ~8 O( M+ t$ X" l5 A ^整个后宫可以看成是Spring框架,美女就是Spring控制下的javaBean + ]+ Q: v' N/ y% [
而传统的模式就是一个饥渴男去找小姐出台 ?% ~0 s" D+ f& z# X& z
找领班,帮助给介绍一个云云,于是领班就开始给他张罗
" g, c% ]! p% p) h- Z/ n# x介绍一个合适的给他,完事后,再把小姐还给领班,下次再来
7 |. K2 p) Y. n& k& w0 F这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐
0 }& o; z/ h1 e这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface
7 g' m. h. c2 }* P' ]; _小姐就是EJB,饥渴男是客户端,青楼是EJB容器 # h" S4 e w- c9 [
看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去 . f8 J/ ~5 d7 l5 J3 r1 }
而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了
# H) H+ U2 L; z. @8 U6 c$ L而不是皇帝,必要时候由太监给注射进去就可以了
, n. F, N O2 S" N- J8 E# \看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持
( M x. @& b" c" [可以和其它开源框架集成 - f2 B% @) y. U4 p# m
- w/ m0 J5 M; ]( }1 t# f; L8 g |
|