TA的每日心情 | 衰 2021-2-2 11:21 |
---|
签到天数: 36 天 [LV.5]常住居民I
|
提到spring就不能不说控制反转Ioc//Inversion of Control 1 |2 v5 T1 Y6 Y5 y! j; t& r
和依赖注射DI//Dependency Injection
9 C% Q: [3 i7 Y0 C! w; S什么叫控制反转呢? / b- ]; D8 c2 b; z* H
套用好莱坞的一句名言就是:你呆着别动,到时我会找你。 * F7 q2 L: h$ E# }" f
什么意思呢?就好比一个皇帝和太监
7 {/ c9 p7 H# h5 W0 m有一天皇帝想幸某个美女,于是跟太监说,今夜我要宠幸美女
$ w1 C7 B2 u% ]& n皇帝往往不会告诉太监,今晚几点会回宫,会回哪张龙床,他只会告诉太监他要哪位美女
- H# M$ s5 ] i其它一切都交由太监去安排,到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上 . ]% U. v+ w/ w( W3 n Y) I9 v+ P: m
这就是控制反转,而把美女送到皇帝的寝宫里面去就是注射
8 N* i2 e @) h太监就是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去
3 n. m- I8 E9 u! ]* x整个后宫可以看成是Spring框架,美女就是Spring控制下的javaBean # T2 e5 l g$ g
而传统的模式就是一个饥渴男去找小姐出台
/ d+ D- W3 C) K3 Q5 Y4 M1 E8 F7 [ O找领班,帮助给介绍一个云云,于是领班就开始给他张罗
8 W+ M) F5 g; V8 b, O介绍一个合适的给他,完事后,再把小姐还给领班,下次再来
' n4 W" i; L; s. }0 I. Y这个过程中,领班就是查询上下文Context,领班的一个职能就是给客户找到他们所要的小姐 1 N) N/ O. j% }8 c! c X6 t
这就是lookup()方法,领班手中的小姐名录就是JNDI//Java Naming and Directory Interface & b" B( ]8 V& |9 Q9 N
小姐就是EJB,饥渴男是客户端,青楼是EJB容器
6 x* _! O- O& D" f& S% w z看到区别了么?饥渴男去找小姐出台很麻烦,不仅得找,用完后还得把小姐给还回去
& L, o0 V; q) J M" I& _3 ~: I而皇帝爽翻了,什么都不用管,交给太监去处理,控制权转移到太监手中去了
* P& O, o) W; c0 K" v而不是皇帝,必要时候由太监给注射进去就可以了
/ G" Q/ c# {' J; E0 c6 `# O看到Spring的美妙了吧,Spring还提供了与多个主流框架的支持 4 o# i: h! C! J& B
可以和其它开源框架集成
0 ^7 o1 N& C" J- }/ c0 d
# A3 @# b" O7 \0 K: X |
|