该用户从未签到
|
spring容器对象" A1 u2 B9 L3 D- O$ u2 s
BeanFactory
& u/ ~' m" j' J- a: G //相对路径1 f+ U" g* A+ O o# v, P
XmlBeanFactory-->Resouce--->ClassPathResouce) E5 ^) H) `% {7 M
Resource resouce = new ClassPathResource("applicationContext.xml");
5 I, _5 c K3 G1 Z6 P BeanFactory beanFactory = new XmlBeanFactory(resouce);
6 m: k# T5 Y6 D; A* L Bean bean = (Bean)beanFactory.getBean("bean");
, P5 ^) g* z/ ]! S) O bean.show();
; A4 R3 ?7 Z. Q- W8 L& s. R+ X //绝对路径6 X7 z, x2 @6 \4 r) \3 _
XmlBeanFactory-->Resouce-FileSytemResouce( i. B- e, A% v7 @% i5 N5 F
Resource resouce = new FileSystemResource("d:\\applicationContext.xml");0 G" v( t& _ V9 M$ C/ E: O, M9 ?; m
BeanFactory beanFactory = new XmlBeanFactory(resouce);
/ Z! p F8 h' \9 Y- c Bean bean =(Bean)beanFactory.getBean("bean");
6 J# n- s1 r+ U bean.show();5 n1 D* l' n( Q9 c* f
* v2 w0 p: c1 ~) T$ j% r ! T5 V. U9 ~' ]9 @" Q: `/ w
ApplicationContext, ~' p& d/ H% j. C2 i
ClassPathXmlApplicationContext) j6 z# |1 n- R& x/ H" ~4 S
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
; {4 K* d( _9 I& T" ? Bean bean = (Bean)ac.getBean("bean");
# C+ o+ c# R! x bean.show();& i6 w" U8 z4 K, T
$ p: ^6 j7 L# X2 r9 F4 h7 s FileSystemXmlApplicationContext 3 @2 |4 T) ]8 S. T" m7 S0 J
ApplicationContext ac = new FileSystemXmlApplicationContext("d:\\applicationContext.xml");! i: n; @8 k8 Y5 H
Bean bean =(Bean)ac.getBean("bean");7 m. W) q- n0 t: x# T& s9 ?: n
bean.show();
$ }* l" Q! X+ w8 m Spring提供classpath访问器 可以直接访问
7 R3 I, f9 I4 H: e. u ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
5 l6 w, |" y4 v. S Bean bean =(Bean)ac.getBean("bean");
' q9 W1 u" C3 n* }" @% F. X bean.show();
: ]+ M ~* S# Y/ X2 ~: W/ }2 @ FileSystemXmlApplicationContext支持国际化,功能更强大
$ {* v# E9 S9 l
" N0 K& s+ d9 f0 Zpring容器bean对象生命周期$ F' C' K6 d0 c7 C0 F
(1)bean创建& n8 k9 C( b; i* m9 S l
(a) lazy-init="false"==lazy-init="default"
4 ?3 E8 K* H! B- A+ l2 r( E 创建spring容器对象,就创建spring容器里bean对象
/ T( g2 s; h4 B2 T( H, m8 M8 W# m! B, A" _! i" T
(b)lazy-init="true"
9 J* z+ e% _+ J A/ o 调用getBean spring容器才去创建bean实例* k# ~: [/ D' Y& J
* R* \2 T( U% ~: X8 I 注意:timer定时器不能使用lazy-init="true"
5 G$ k7 o5 P% O: ?8 N (a)、(b)设置在<bean lazy-init="true"></bean>& Y* x# F) S* L2 W) S
( ~1 |& B5 w! q
设置在<beans default-lazy-init="true"></beans>/ _# }- j+ t4 h4 U
default-lazy-init="true"设置一个全局的对象创建延时6 ^2 F; r0 F( x2 g# h2 a7 x
# j9 _: m% ?2 E" C w A, O! W1 P& R
Spring Bean对象模式( b" N! k" A: m: Y, S
spring默认采用singleton模式
% J# b( u" z% c- R singletonstruts1)
' {, \# _5 Z8 P3 P5 a 单态:每次只产生一个实例' R; ?6 j6 I' l; E" n; [
prototypestruts2)% ]& x8 k9 M" r9 F1 j) H) p$ s
原型:可以产生多个对象/ Y( Z4 w! @# W! z" t" B# b- \# Z
" [: c) f+ [% S8 g0 I3 C web框架使用:
9 A, @( g. t2 Y! W4 |7 Y/ W. t; x scope="session": 一次会话
% K8 C! B+ A* w' ]# Y session:多次请求与响应叫会话
, G$ k2 p+ _, J9 p, f0 _ scope="request: 一次请求
( p/ M$ S5 L: m, }$ v ]
Z) `' P4 j! `5 hSpring Bean初始化和销毁
: S# r! {3 x# { B2 ^% J* n初始化:init-method="init" bean对象init方法名
! C, M) h2 u+ \: t; E! }/ N( H4 Z2 c lazy-init="true"也延时了init-method
) w" i; M4 ?1 e& Q+ ^3 | destroy-method="destroy" bean对象destroy方法名
0 x" J9 h4 u, B 完成资源释放) i6 G: a. w/ j+ r4 Q. {% S
destroy-method必须是singleton模式一起使用- H' v) _. K" w0 o9 @1 z
( z: i& y0 w1 p$ X" g# G% |0 T, q) f2 @
|
|