该用户从未签到
|
spring容器对象
# O" r" \2 Z* T BeanFactory! x, [1 j" ^1 f1 B
//相对路径
1 N2 Q! E0 ]9 E& W6 C XmlBeanFactory-->Resouce--->ClassPathResouce
; u, H% x% R( H4 l6 Q; a Resource resouce = new ClassPathResource("applicationContext.xml");
9 [& e' C( a. f8 r# ~5 O. P: S6 k/ @ BeanFactory beanFactory = new XmlBeanFactory(resouce);2 J' m3 }3 K/ h) @$ T
Bean bean = (Bean)beanFactory.getBean("bean");
9 w5 I( e6 _' A9 y& h: J+ t bean.show();
M, `+ Q) x. N1 c: ]8 p //绝对路径
. _) Z0 [ z/ c; n$ T+ d XmlBeanFactory-->Resouce-FileSytemResouce
E* u0 e, j+ L Resource resouce = new FileSystemResource("d:\\applicationContext.xml");
, S: e1 I- f* R2 C3 ~3 Z BeanFactory beanFactory = new XmlBeanFactory(resouce);
/ ^0 L1 b+ J5 l7 \+ m Bean bean =(Bean)beanFactory.getBean("bean");5 H6 M0 O& l9 u2 o
bean.show();3 y, U+ ^% H: A K. N
2 ?7 i" n9 M' @+ G7 ?
3 A0 J/ ?* }& o9 k0 p$ r
ApplicationContext
) M) i/ p- F3 B# l6 W6 t ClassPathXmlApplicationContext
) w8 w t/ N, p1 r) ]! Y ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");, E8 Y3 |- C8 Z+ |" q# v. ] f+ u
Bean bean = (Bean)ac.getBean("bean");
z( S* F1 M5 Y; Q bean.show();# j- k& P# e2 \: P# v
1 k: e& e1 B" U
FileSystemXmlApplicationContext
3 @7 r! a$ f# f I4 w$ Q. j ApplicationContext ac = new FileSystemXmlApplicationContext("d:\\applicationContext.xml");9 G/ w, ~ N/ C9 `% \3 v! L
Bean bean =(Bean)ac.getBean("bean");+ a. [& e$ L; T% j: z' ]
bean.show();9 i6 M8 Q3 V/ T4 L- w: a& E- F' W
Spring提供classpath访问器 可以直接访问
% |* w, H% N7 N1 S- X0 a ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml"); N% T$ q; |0 V/ i5 [! W
Bean bean =(Bean)ac.getBean("bean");$ ~- O$ Z: _ A3 A7 P' W
bean.show(); 3 {7 @( B! u9 W: Z# K& a7 H- o
FileSystemXmlApplicationContext支持国际化,功能更强大
' F; X8 y1 D5 C9 Y' P8 y" D0 K, w( a6 O2 T' L4 n: b- s$ H" |
pring容器bean对象生命周期9 B' o1 M$ E5 e' X. L9 z; p
(1)bean创建
* ]& E5 r/ s. g8 H) Z1 W (a) lazy-init="false"==lazy-init="default" 7 l5 ?7 K5 k: O4 J
创建spring容器对象,就创建spring容器里bean对象
+ s/ ]+ V L5 L' r, F' N0 ^/ P' q$ V- i! W! f) f: E
(b)lazy-init="true"
% s7 k \' e) v! C 调用getBean spring容器才去创建bean实例# u& h1 C+ Y% M$ E; \* {8 }5 e( `
* d6 M8 V# E, H6 ^1 E( V/ v 注意:timer定时器不能使用lazy-init="true" , ~+ \9 C5 b; a) ? R# k) X
(a)、(b)设置在<bean lazy-init="true"></bean>5 {4 D% }! b. W- a# Z& L2 P6 K% K
$ N6 Z) M4 K2 g
设置在<beans default-lazy-init="true"></beans>8 q9 z/ d: G. e4 L: I
default-lazy-init="true"设置一个全局的对象创建延时
5 {1 i3 m7 p, R( ?9 W- W8 L8 b7 A7 |4 M9 ?( t/ M
Spring Bean对象模式
- m* x1 T3 e9 ~% A% X; xspring默认采用singleton模式* X# d) B( e, B# w" [
singletonstruts1)
6 i4 `3 V! k5 e2 M0 ~1 z0 S 单态:每次只产生一个实例
a# G3 \7 M7 z) T! l- w prototypestruts2): a# S: p6 P! G b6 q, b# K
原型:可以产生多个对象/ k: m: M0 A; R
0 g2 V! y7 N3 @8 ?
web框架使用:
! x* L( I3 ?) t/ ~ scope="session": 一次会话 , C7 g) ~6 J: j+ t: l( z. L7 l
session:多次请求与响应叫会话
0 W3 d( l2 ?! X scope="request: 一次请求
& f- B. n$ X9 c5 q* k( W) x ; p Q: W" Y, Q- ?8 b# s9 Z
Spring Bean初始化和销毁
% f3 C. F- [3 p9 ]7 m# {3 ]% o初始化:init-method="init" bean对象init方法名9 a1 X/ x+ `- B5 e. |+ a4 B Y
lazy-init="true"也延时了init-method
! H* E7 g" p; r- P destroy-method="destroy" bean对象destroy方法名
' u/ ?* m6 H* d" u5 I: Q 完成资源释放5 |, E( X" a) J! n& v6 {3 J# \
destroy-method必须是singleton模式一起使用
m0 y7 N& X4 ]! ^1 T + [- s0 K6 k6 ~3 [$ A& u' P/ U$ v5 H
" ^# Y" ~- t5 z2 d r- t
|
|