该用户从未签到
|
spring容器对象 K$ d7 ^9 f0 ]5 w
BeanFactory) u* @ I4 `1 Y1 b/ Z
//相对路径( m# L! L/ }% @$ H
XmlBeanFactory-->Resouce--->ClassPathResouce' j4 C/ `) e, Z
Resource resouce = new ClassPathResource("applicationContext.xml");) K2 S. c; i. a8 Z4 m
BeanFactory beanFactory = new XmlBeanFactory(resouce);" Y0 B4 A: {9 h1 u' v* \
Bean bean = (Bean)beanFactory.getBean("bean");
8 q' H4 j3 Y7 L+ Q) i- j1 W! | bean.show();
% e0 z4 e/ w$ d" k0 ?, m" T //绝对路径% @0 a, c% @' R% f: {
XmlBeanFactory-->Resouce-FileSytemResouce
/ _- u1 b1 |' X& l; C Resource resouce = new FileSystemResource("d:\\applicationContext.xml");
& o8 N& W9 Y2 ] BeanFactory beanFactory = new XmlBeanFactory(resouce);
[3 l- z- m% p M) s Bean bean =(Bean)beanFactory.getBean("bean");4 Q7 S: i8 f6 v! _' R0 B8 Y. v" }
bean.show();
( A9 k8 Z) r: M2 {/ ?6 X
- [( o0 o5 }* Q/ x' W$ p
7 A5 Y/ E' l. ~: X9 F9 W1 S ApplicationContext% O2 U, c2 g- c1 A9 N
ClassPathXmlApplicationContext/ A! p) q" I; i% w' p
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
$ E/ n! Q, {% i: b Bean bean = (Bean)ac.getBean("bean");3 E7 j2 b f- ^9 H% o5 W' Q
bean.show();1 c( c. a- j0 n6 q
7 v' V( r3 ]7 l) [/ n* ]' x; t FileSystemXmlApplicationContext 4 I% \# i1 e: l g7 \ Y- ?' T
ApplicationContext ac = new FileSystemXmlApplicationContext("d:\\applicationContext.xml");9 A& Q6 ?9 ]5 n: ~! c
Bean bean =(Bean)ac.getBean("bean");
6 W4 L( p* T# _* m5 d6 A- J( E( } bean.show();( ?6 B! |, D' `
Spring提供classpath访问器 可以直接访问 z0 O7 v+ P; s
ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
$ Z5 t$ m2 [9 K* M; ~) o1 | Bean bean =(Bean)ac.getBean("bean");
' t+ w9 K' c! Z' z5 J7 H. I bean.show(); ) {2 R( _; K% \: Q9 U
FileSystemXmlApplicationContext支持国际化,功能更强大
2 y8 {; j' B% f+ L( h& x% R$ D1 H& H! M
pring容器bean对象生命周期
4 Z) L% W3 ]- t# ^5 F( ^9 k" M( e2 k: V) { (1)bean创建. e) a. ` I7 ~. c# q/ r
(a) lazy-init="false"==lazy-init="default" 7 q- ?' {0 P0 I& Q
创建spring容器对象,就创建spring容器里bean对象
# }* S1 N6 ]4 `. _7 y
; p! m# M! X" i. k, R (b)lazy-init="true" 1 k8 k# A% A! t
调用getBean spring容器才去创建bean实例
% }/ ~( m" c; d( q! J! V& {0 H
, M# r7 B' S4 x0 ?7 s 注意:timer定时器不能使用lazy-init="true" * e) m1 U# U1 Y0 d: K: g6 b
(a)、(b)设置在<bean lazy-init="true"></bean>) Z0 D1 E- n: D6 W
3 A4 r% T& ~& U+ x6 a 设置在<beans default-lazy-init="true"></beans>( \ i6 x& r2 X9 G5 }# w7 A! T
default-lazy-init="true"设置一个全局的对象创建延时+ ~1 T1 ^( `! ~9 F" ^8 f
: k, E' [+ [. g$ O8 N( |Spring Bean对象模式5 p1 z/ V+ u% c8 r
spring默认采用singleton模式
' v5 A1 [& v' I# E$ @5 u: ?& } singletonstruts1)
. [# V$ V( R: u; j$ z 单态:每次只产生一个实例
* Y8 {" M+ {3 k1 c7 x prototypestruts2)1 R2 `% S7 y; l2 N; p
原型:可以产生多个对象1 |1 q- C/ h6 G1 Y8 K- a' t
; X5 S4 y7 J' {( }. U1 v2 V, O web框架使用:
, l3 s- x. E) Q0 H scope="session": 一次会话
( I9 }6 B2 M. X0 L% L1 L7 R session:多次请求与响应叫会话
% s* H3 F) A7 _9 ]8 H scope="request: 一次请求( O) s7 p* L" ]- N5 A/ J
) J9 M; n2 W7 }1 Q/ \7 L
Spring Bean初始化和销毁
1 a( S1 G }* h/ ]% t8 J$ R9 {初始化:init-method="init" bean对象init方法名
% U& b+ R' |' E+ } lazy-init="true"也延时了init-method
: _6 j$ P, D# s0 e destroy-method="destroy" bean对象destroy方法名) e/ r# E+ Y) o. H# x
完成资源释放/ h, `* e( T0 Z1 v$ Z0 |) P+ u
destroy-method必须是singleton模式一起使用
: G4 B0 `( R' Q" ~/ V; ` / e6 R9 v) b* m r: O( T: C5 M( H
, ?! R! @/ i6 F+ i |
|