|
该用户从未签到
|
spring容器对象
7 }1 I+ v% c/ [; Z. s BeanFactory* L v+ q5 k! L, x* Z
//相对路径
3 U, x0 m# U+ y, T: V" Z/ T XmlBeanFactory-->Resouce--->ClassPathResouce
+ `5 }4 `3 B, }7 T; W2 ~ Resource resouce = new ClassPathResource("applicationContext.xml");8 K% \9 V% \4 ? p0 i
BeanFactory beanFactory = new XmlBeanFactory(resouce);
# o! S3 ~! }2 k* b- ^! C) K Bean bean = (Bean)beanFactory.getBean("bean");3 ?# m! k( K, F0 i+ ^( g! l
bean.show();4 r9 E3 U, u# y2 H! P4 ]
//绝对路径, S* E2 k; v7 x& c
XmlBeanFactory-->Resouce-FileSytemResouce, y2 \: d4 y9 E! M# u4 l
Resource resouce = new FileSystemResource("d:\\applicationContext.xml");/ e4 ]3 I* [2 t0 ?
BeanFactory beanFactory = new XmlBeanFactory(resouce);. K0 B2 u9 J3 \: h3 h3 u- Y6 G5 R# K
Bean bean =(Bean)beanFactory.getBean("bean");4 o8 R6 j2 m/ v0 e: n( S9 i! P# `
bean.show();
- Q6 C- q u4 K* J# J* Y. r
6 _5 o: h. I0 r9 s
( h; U+ K7 @. n3 Y {+ ^" X ApplicationContext" l1 f/ t2 c( ]
ClassPathXmlApplicationContext% P. G0 S! y) h% p( a6 x0 C
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
) y* J! ~, R* e0 t1 ] Bean bean = (Bean)ac.getBean("bean");
/ ^ I4 r; A) }) [: c3 r- j: c) C bean.show();
J9 `% t" W+ C1 N( ]$ S" _0 s7 v% t # [2 X) ~& S) {) C
FileSystemXmlApplicationContext
# w% @0 Y, Z' O4 Q6 h2 s2 m! w9 x5 C ApplicationContext ac = new FileSystemXmlApplicationContext("d:\\applicationContext.xml");
( W. S7 a( p+ N- ~/ N Bean bean =(Bean)ac.getBean("bean");
- p% l+ j: r; `' I8 J+ v3 E bean.show();+ Y4 t# h8 v9 ?
Spring提供classpath访问器 可以直接访问( |2 ?# F- T4 e) q
ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
- _ L/ F+ Y8 r1 X8 E Bean bean =(Bean)ac.getBean("bean");' E) q! N7 W% U+ J* H
bean.show();
6 |; P" P( G, ]* z! R, _ FileSystemXmlApplicationContext支持国际化,功能更强大
. }& ^( B0 ?& @. r; H, ] D
/ T2 a/ E0 ~6 `0 t( x8 W5 d) f0 y7 cpring容器bean对象生命周期: p4 s3 u0 z: u* B
(1)bean创建. y8 G! o7 M4 t6 X( F- ]
(a) lazy-init="false"==lazy-init="default"
2 I" o2 b9 ?5 M4 B3 O7 |; Z 创建spring容器对象,就创建spring容器里bean对象2 v1 \( D/ m# |8 O9 p4 m
6 [/ M' Y! Z% I# _+ W# @/ p (b)lazy-init="true"
! _/ `4 P* t9 Z6 x5 ^ 调用getBean spring容器才去创建bean实例7 T- |1 C4 X. B- B, s2 l. C
7 }% P$ N( _7 M* r! v# \/ { 注意:timer定时器不能使用lazy-init="true"
. H$ o# a7 \9 @& L2 {8 p (a)、(b)设置在<bean lazy-init="true"></bean>
5 L9 w# H( V# A3 P+ w. z0 N4 E6 B. K% l9 J/ u
设置在<beans default-lazy-init="true"></beans>
4 C# l z9 K) [% }) r! A0 ~+ _8 ]# t default-lazy-init="true"设置一个全局的对象创建延时6 \# n; g ]4 p/ {
- A* n: ^6 l' e8 I7 ZSpring Bean对象模式, n8 _4 X3 {1 u; \' `& i: a
spring默认采用singleton模式) m8 u- D3 h" S( C
singleton struts1)
# @3 H b4 d1 g$ e 单态:每次只产生一个实例- m+ m: y6 K( I$ n$ Y
prototype struts2)5 [! [% ^) H) C& _7 K( y& J
原型:可以产生多个对象
2 I- K/ O$ T4 T$ [
' U& N/ ]% {$ ~+ C) P web框架使用:; Y" s& b( q, I1 }5 F7 p
scope="session": 一次会话
% J6 {: G9 B( F$ n. T+ S session:多次请求与响应叫会话7 [; i A9 O& K" D2 d
scope="request: 一次请求
1 k n9 l5 z3 ~# v % s0 w1 r$ W6 K% q: z4 d X4 o
Spring Bean初始化和销毁
; R# H2 j6 s3 R" T初始化:init-method="init" bean对象init方法名
9 p* G8 V% W3 E8 L lazy-init="true"也延时了init-method$ ^% y9 U0 F G/ k5 J. s
destroy-method="destroy" bean对象destroy方法名
* i9 [ w f6 B, J3 C 完成资源释放: E2 O- ?+ X! ?. n u
destroy-method必须是singleton模式一起使用
& V3 p# | z+ ^4 l * p: \4 }+ G+ t9 e! K
1 x+ b9 R. L$ p |
|