该用户从未签到
|
spring容器对象$ D. u' W7 ]( t8 r7 A
BeanFactory
; @$ t% a, A: l* R8 \4 p* Q //相对路径
& @& v& \& J) K1 ^9 p6 X XmlBeanFactory-->Resouce--->ClassPathResouce0 t' k; M7 H( n; I, p* l- q
Resource resouce = new ClassPathResource("applicationContext.xml");
2 m2 C0 W; H. _ n. A" _ BeanFactory beanFactory = new XmlBeanFactory(resouce);+ M5 a0 h' ~. z! ^- c% R
Bean bean = (Bean)beanFactory.getBean("bean");
, B" k4 J6 l T& s% R: F bean.show();
! P2 m0 w" e; Z //绝对路径# _/ x5 q+ C2 M" C9 m& g
XmlBeanFactory-->Resouce-FileSytemResouce) \* Q7 f" n3 V4 S6 P6 J
Resource resouce = new FileSystemResource("d:\\applicationContext.xml");
7 u9 u/ h7 t( }) O" \ BeanFactory beanFactory = new XmlBeanFactory(resouce);
. [. X! s% g1 X6 b/ ?- `) j$ X. ] Bean bean =(Bean)beanFactory.getBean("bean");6 i4 m9 f0 d; J' `6 |# F t
bean.show();1 r: ^* C( U- f# Z3 {! B: e5 i
5 C O/ ]5 a) n- K, w % |; @, w! G5 \ G2 W9 C
ApplicationContext7 G: I0 W: A- g Q( k- C3 }
ClassPathXmlApplicationContext
/ C$ h$ q4 l. y8 M8 O% X0 _ ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");5 |' Q' {- f, A7 Z4 }
Bean bean = (Bean)ac.getBean("bean");
! u$ f7 B4 U5 `- r5 r bean.show();
/ x8 U' Q z( J$ }+ D0 ]
! D# I& B+ U/ `. O% c \3 E" h FileSystemXmlApplicationContext
4 O. x% m* b% Z5 C; {' K ApplicationContext ac = new FileSystemXmlApplicationContext("d:\\applicationContext.xml");/ i* S) o3 ^% z' \) n4 d
Bean bean =(Bean)ac.getBean("bean");
7 N" m$ M! G) g7 e bean.show();" ]) i) o, S; ~8 X9 k8 {
Spring提供classpath访问器 可以直接访问
2 L& q9 l u8 Z ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
& ?! y- j2 j5 s( \* n+ u$ { Bean bean =(Bean)ac.getBean("bean");$ u" Y1 C0 y. b8 H! C# ^$ t/ ]7 J
bean.show();
4 u. ^+ c& }+ M$ A+ [ FileSystemXmlApplicationContext支持国际化,功能更强大
9 V" J/ ^6 i- E; S' l* x
$ w3 a2 T3 g3 ]' ]. S" x: Rpring容器bean对象生命周期
* b7 q; `! E1 K+ m/ R (1)bean创建2 N; K" \* S, l; E; Z% {! ^$ `
(a) lazy-init="false"==lazy-init="default" ' o& ^' w1 T2 P
创建spring容器对象,就创建spring容器里bean对象
$ k8 T0 p( N0 k8 i+ N8 F6 X4 n8 `9 C. w& v! ]
(b)lazy-init="true"
+ N3 W# Z& H9 K 调用getBean spring容器才去创建bean实例
7 O7 c4 I t1 {% r8 N8 ?9 r: |" q4 p, [6 F# U
注意:timer定时器不能使用lazy-init="true"
& {7 x3 e$ M; ?: X$ _ (a)、(b)设置在<bean lazy-init="true"></bean>) R0 V1 ~$ _2 j
* M! r* L0 E* }0 V" G 设置在<beans default-lazy-init="true"></beans>" D+ P7 v( w$ H A* H# V. N
default-lazy-init="true"设置一个全局的对象创建延时2 s. s. z/ A/ P) ?
0 t% X. I3 r+ g9 u
Spring Bean对象模式
6 W$ h. a. O% E) K) T; cspring默认采用singleton模式( G$ W' B' G2 x V- ?7 ?
singletonstruts1)- a8 o& z7 b* ~
单态:每次只产生一个实例
4 U7 W$ j8 l4 t3 e8 G( m% M+ ?+ c prototypestruts2)' ` {. e0 w8 j6 J& Q" v7 G8 C* h
原型:可以产生多个对象
" t5 H# F9 ~- i3 A9 V& a
. [8 [/ w9 |& I9 q, a- p8 R web框架使用:; I5 u# r3 ^1 f7 j9 n
scope="session": 一次会话 % \9 ^7 b6 V4 x3 F! `$ p, ^6 }7 m" Y
session:多次请求与响应叫会话
1 v* |4 \& C: v scope="request: 一次请求
7 z9 _: E! Y1 q+ ^& k X$ u. H z. W. b7 ^7 g
Spring Bean初始化和销毁
/ d, ?$ i1 A" N* E4 O# U6 i初始化:init-method="init" bean对象init方法名
]& f& R% {9 X% F" R4 B+ W4 v lazy-init="true"也延时了init-method
, b- @& g+ N, b destroy-method="destroy" bean对象destroy方法名/ g* u: ~3 P5 y F
完成资源释放5 `7 L* O4 s* x% s G# V
destroy-method必须是singleton模式一起使用
6 j/ s0 ^/ s: b0 \4 q
% N& l3 s( \+ r4 [9 P5 o1 l2 t$ I. Y& T6 O+ U8 Y; ^
|
|