|
该用户从未签到
|
spring容器对象
1 s& D+ p1 u3 w) d" b BeanFactory
1 e8 X( ~: m' F5 B7 C //相对路径. Z7 J" M* U/ x& ^ X% b3 |+ m
XmlBeanFactory-->Resouce--->ClassPathResouce0 x; R; ?% H9 H6 b. N
Resource resouce = new ClassPathResource("applicationContext.xml");8 z% B* G3 U, n" n/ m- P
BeanFactory beanFactory = new XmlBeanFactory(resouce);, z2 d! B z& J6 p8 q4 `# [
Bean bean = (Bean)beanFactory.getBean("bean");. C k. u: I! s/ t! V! a) v$ J
bean.show();" t/ K! t& ]3 i! B7 t+ a
//绝对路径6 U8 P9 S+ y( s. }3 ?
XmlBeanFactory-->Resouce-FileSytemResouce
6 O r0 l+ E7 Z Resource resouce = new FileSystemResource("d:\\applicationContext.xml");% w& P. S2 f, Y9 l# N$ r
BeanFactory beanFactory = new XmlBeanFactory(resouce);
9 l; Q" x4 A [ Bean bean =(Bean)beanFactory.getBean("bean"); |0 X7 u5 S8 a! `5 R {+ W, J7 w
bean.show();, f4 F D2 L, W
: N6 [$ o- E2 r+ a3 l9 ~ 5 O- ]8 {* g, b* g- P# A
ApplicationContext- U8 Q. l! Y- O' V
ClassPathXmlApplicationContext
5 `$ y: |# J3 ~/ H |7 y ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");/ i3 d8 M! Y5 ^8 b
Bean bean = (Bean)ac.getBean("bean");7 w' @- k9 g8 p" y" i: Q) B
bean.show();( g$ s$ h. N& c4 e u
- _' m2 c9 R; |5 f' C" a: S FileSystemXmlApplicationContext
?8 e& x& {* V8 ] N8 f ApplicationContext ac = new FileSystemXmlApplicationContext("d:\\applicationContext.xml");
' b: P) d0 J: z. z+ g- G( _ Bean bean =(Bean)ac.getBean("bean");5 f. P" D% |( u! \( P
bean.show();8 X7 g$ }8 J: Q9 ^; v
Spring提供classpath访问器 可以直接访问
2 F' Y1 L, \3 p ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
& h, f- u! C- d! }& z8 N! } Bean bean =(Bean)ac.getBean("bean");
1 O8 v5 K5 k. X- |- ^& J: l' K bean.show();
1 Z+ f% o& T! J2 U0 a9 J# b FileSystemXmlApplicationContext支持国际化,功能更强大
6 b9 n! g g/ k9 r. L9 |0 B) F
pring容器bean对象生命周期
4 C+ L" o- H/ Q+ P# J. m7 ^; A (1)bean创建 J G! L6 j. G5 T6 r7 D+ @
(a) lazy-init="false"==lazy-init="default" 3 n$ T# _2 G( z" s" e6 I
创建spring容器对象,就创建spring容器里bean对象; W! T9 D) R2 F- u
& D- \. }' i$ k+ } (b)lazy-init="true" ! P9 w5 g# W* T. M( M
调用getBean spring容器才去创建bean实例
4 U* h& q; O& q. }7 o% e2 G1 \4 [6 J9 x( l) R0 l
注意:timer定时器不能使用lazy-init="true" % P5 z/ ~9 H, K' I
(a)、(b)设置在<bean lazy-init="true"></bean>0 z7 d( w) |; y8 r# D
% J7 z# U+ r8 O0 @! v; f
设置在<beans default-lazy-init="true"></beans>
: Z( {# e3 n: y6 C! H$ Y default-lazy-init="true"设置一个全局的对象创建延时
: e1 y$ o7 E1 ?/ a
9 P7 ?# p9 O# i* y9 z" WSpring Bean对象模式7 S1 l5 M L0 J& I! f5 j: h+ F8 t
spring默认采用singleton模式. F+ @: V/ R6 m. m4 l' |
singleton struts1)
: t( n+ V, X, I, H4 ^1 B 单态:每次只产生一个实例
9 y; l3 L. {- G; {* d prototype struts2)5 z; f9 Q- R m5 H; T
原型:可以产生多个对象: w! d; y& T4 K! @/ k
P8 k9 E( G$ K# ] web框架使用:+ m% E$ w' z6 b' y, {
scope="session": 一次会话 8 v0 ^; M }+ A0 d. \ N
session:多次请求与响应叫会话- Y. L1 q; W# Q" U( _
scope="request: 一次请求
! N4 k: @" B0 @6 b" Z# N3 c
& v& M& e! { kSpring Bean初始化和销毁3 H, s, g1 d* Z( q; H/ C
初始化:init-method="init" bean对象init方法名
- K: J$ J2 g7 j' ]# |8 |6 |5 Q lazy-init="true"也延时了init-method
$ J- U0 R; D+ L/ ^4 j8 {/ p0 d% z- A9 G destroy-method="destroy" bean对象destroy方法名
' U1 _& H: w1 y3 E$ v# w 完成资源释放
, |6 A0 ~3 @; t, z r3 ?) g9 M. J# k destroy-method必须是singleton模式一起使用# g1 v8 _$ J5 e/ c4 I
|5 E: n. m" v0 I: M9 }
$ r6 }( [% ~; A3 B. X( G5 _6 R! F2 ? |
|