该用户从未签到
|
spring容器对象
5 m3 t; K! V0 @ BeanFactory. s* K1 v; Q. v; Q
//相对路径2 X2 d0 V2 Z& c' C
XmlBeanFactory-->Resouce--->ClassPathResouce; f& g! H: C" ^# Z- j" \
Resource resouce = new ClassPathResource("applicationContext.xml");1 S, T+ H. e6 O }' j
BeanFactory beanFactory = new XmlBeanFactory(resouce);
6 V2 I: A; n3 [5 v; L0 m1 @ Bean bean = (Bean)beanFactory.getBean("bean");
$ F2 g: U( K; [& v7 m' z9 e bean.show();
; _: S/ s6 g4 D& K+ C //绝对路径5 O, ^ Y+ \- D7 ]3 A6 |& ?" _
XmlBeanFactory-->Resouce-FileSytemResouce# o) n/ E# n% S1 L+ n8 V: x3 V* p9 L
Resource resouce = new FileSystemResource("d:\\applicationContext.xml");: h" S0 z/ f. J" V+ G
BeanFactory beanFactory = new XmlBeanFactory(resouce);. i5 Z, p; a8 F' f- N/ T# d
Bean bean =(Bean)beanFactory.getBean("bean");$ u: Y4 Q: a7 [/ c7 B) @: R
bean.show();
0 g$ I( ?8 p% m7 O, u ( m& h4 E* f* O1 Q6 M
6 E H* s; S. }+ s6 E% F
ApplicationContext& a1 J! Z2 x' ^
ClassPathXmlApplicationContext2 A1 T$ t( C, Z/ f6 S# M. [3 @
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
6 ] C, ^. Y4 a Bean bean = (Bean)ac.getBean("bean");
* j3 B- ~- z) g v# D5 Q g6 X bean.show();
* b2 p0 f: O7 a* W2 k- n
4 O" A6 |" E7 k FileSystemXmlApplicationContext 2 l+ m+ \, t/ {5 I' r
ApplicationContext ac = new FileSystemXmlApplicationContext("d:\\applicationContext.xml");
+ c8 P. U0 i! v0 x6 v, R) ~: i Bean bean =(Bean)ac.getBean("bean");$ N; q& D4 X$ l# i$ q$ g! U
bean.show();
! \- A" I- j# F1 J. `" x( T2 |( f; H Spring提供classpath访问器 可以直接访问 _; T' J Z' z) v* Z0 E
ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
1 H/ x9 s5 O5 y7 p) v* S Bean bean =(Bean)ac.getBean("bean");) n% G( }5 Q. V7 l' H1 c( i
bean.show();
% {) ?' ~/ H" V- c0 K FileSystemXmlApplicationContext支持国际化,功能更强大
* I( i: |/ \5 v ^8 C m8 A0 J2 W) C8 w
pring容器bean对象生命周期
% o' f! K, y' l" t* c k" d (1)bean创建, O: s" T/ Z5 v
(a) lazy-init="false"==lazy-init="default"
1 G8 `- ^3 w" r1 i- p 创建spring容器对象,就创建spring容器里bean对象
$ {/ a+ g( @& x6 ]. s, ~
, s7 h# Y. D6 }4 m (b)lazy-init="true"
& j# K# q0 O' Z! D, [ 调用getBean spring容器才去创建bean实例2 M; Q3 p6 P) ]
9 o' u5 }+ D. L 注意:timer定时器不能使用lazy-init="true"
# N, i9 d) ~1 M0 K (a)、(b)设置在<bean lazy-init="true"></bean>$ F3 X% U+ m2 k/ j$ v, n
1 F: I5 Q9 _. V0 M& v" ~" r, g
设置在<beans default-lazy-init="true"></beans>
9 q* I8 D y# h default-lazy-init="true"设置一个全局的对象创建延时; C/ [3 ?: M6 R) F" f& Q
& K' X$ O* ?) c. [- F% p$ DSpring Bean对象模式. z: ?# a, o7 r8 a" [8 Z) @1 G- q( F
spring默认采用singleton模式
7 r% S3 r8 K" d* E" X# ^* l singletonstruts1)
' ~! \: F. q( C( y( ~$ A 单态:每次只产生一个实例) X8 n, e0 N G' [0 S# C
prototypestruts2)' K; n$ t$ E+ e/ C! v3 p( i
原型:可以产生多个对象
% i+ |; d( F7 {3 ^ + k5 W1 B2 L- R! L* C
web框架使用:# d: w5 M' g8 r6 D8 p
scope="session": 一次会话
; a. M& A( k1 v2 f2 t2 E0 q session:多次请求与响应叫会话! X, b2 Z2 K3 Q& v% W2 j9 g" e
scope="request: 一次请求" J/ \; S2 y! W5 G9 d( L
# U5 X0 i+ t4 O \
Spring Bean初始化和销毁9 Z6 [* Z6 M; g) E& J
初始化:init-method="init" bean对象init方法名8 J F3 a' R( e8 Z; F# X
lazy-init="true"也延时了init-method
; w. a- l" t1 u& F0 I4 N- M7 q& G destroy-method="destroy" bean对象destroy方法名3 G" c: \0 y/ j4 q% c0 T
完成资源释放5 }0 \8 |# f. n( Z2 [" a
destroy-method必须是singleton模式一起使用
. F+ b4 `3 \: ?3 d5 B" N/ L 7 b0 h" u: P- N! ?$ r
2 ?( ~6 m: p! {+ w
|
|