|
该用户从未签到
|
spring容器对象
8 c! k. Z+ z, p% ~' z BeanFactory
4 u$ [5 W1 l3 L/ x1 [ //相对路径; {' X3 Q( N8 i& W6 K9 @! B
XmlBeanFactory-->Resouce--->ClassPathResouce Z( P) n$ l( K
Resource resouce = new ClassPathResource("applicationContext.xml");
; r9 {' q: Y: H) P/ S! l6 O0 g7 U BeanFactory beanFactory = new XmlBeanFactory(resouce);
/ p! f& Q9 N6 P9 s% i Bean bean = (Bean)beanFactory.getBean("bean");/ I; `, i0 R6 z: \7 G/ a* }1 G( q
bean.show();5 B! n, h" R! ? h4 B! V+ G/ w$ ^
//绝对路径
' `( n, [! l1 t* N' _! a a5 C* i G XmlBeanFactory-->Resouce-FileSytemResouce, J S! G; F+ u6 S6 u9 p
Resource resouce = new FileSystemResource("d:\\applicationContext.xml");4 u8 _6 k5 q }4 R g& ^' j: P
BeanFactory beanFactory = new XmlBeanFactory(resouce);
& P+ ^) ^3 P; ~; r& f& d! G6 m Bean bean =(Bean)beanFactory.getBean("bean"); U# R" }; i1 t6 u
bean.show();, \7 l- j+ U" J4 k$ z K
& g3 s$ z2 `3 N 8 r! R# b2 ]; A' k% g! R9 j& f" V$ C; L
ApplicationContext
. q) J. ~/ t# b8 { ClassPathXmlApplicationContext
]; ~* [; I+ e0 h' { ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");: F6 d0 O, d7 w% Y- w
Bean bean = (Bean)ac.getBean("bean");
) J; x3 d+ M! k8 {, B" M bean.show();
( F( D8 X( ]1 Y6 }' t8 G+ ?
2 a$ ? }3 O' J% w: p/ p, u5 T2 t FileSystemXmlApplicationContext 7 ?' B. T* I( l Q
ApplicationContext ac = new FileSystemXmlApplicationContext("d:\\applicationContext.xml");0 A! D0 Y* O2 l& d( Q# q
Bean bean =(Bean)ac.getBean("bean");
. c! o8 ^7 S; b- ~4 G5 k bean.show();' r7 |- r0 L- Y) I v
Spring提供classpath访问器 可以直接访问2 a" _: k, B! {) y, Z5 u
ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");0 G) {8 ^: i! Q$ b4 c8 g0 ?
Bean bean =(Bean)ac.getBean("bean");- S* {- \: |, }
bean.show(); ) d2 h2 T% P, T" |' @. R) f+ I) H
FileSystemXmlApplicationContext支持国际化,功能更强大
$ h" s" J2 O4 `8 W4 ~7 K: d P; @% o f3 P N, y3 x3 m
pring容器bean对象生命周期, s K; E; \4 ?* |3 E8 R& D
(1)bean创建
& J; _+ r) T( ?$ A {5 } (a) lazy-init="false"==lazy-init="default"
6 \, L {6 D# x8 T3 _ 创建spring容器对象,就创建spring容器里bean对象3 `6 ^9 i! d8 A; B
3 `$ O) @ ^; b' L5 i$ Y
(b)lazy-init="true" % C6 O. B9 q8 a; o" F
调用getBean spring容器才去创建bean实例
8 ]+ K3 a. i6 s3 A
1 S; ?4 c7 K! \" s 注意:timer定时器不能使用lazy-init="true" + M4 p4 G5 z6 F9 b
(a)、(b)设置在<bean lazy-init="true"></bean>6 l0 A9 W" h. C
/ ]) N& e1 O1 f9 B8 Y$ O 设置在<beans default-lazy-init="true"></beans>
K' r! ]( X G9 ]8 [& ] default-lazy-init="true"设置一个全局的对象创建延时
: Y7 n% B. F- T- I1 H$ ?! K1 W4 N# n( }/ U( v* z
Spring Bean对象模式
5 D! M( q3 z% p0 K1 k! b$ Vspring默认采用singleton模式( i4 |# u7 s* }& S$ F% @
singleton struts1)" b0 E7 x& I& ~! ^3 j, o. ^5 `
单态:每次只产生一个实例' x5 B) f9 N( U# `7 P$ w
prototype struts2)
2 u/ K( P, u7 o& e5 K8 e5 U 原型:可以产生多个对象1 O$ r" ~( G5 S
4 p& P; u- v) @8 E& s4 @
web框架使用:
" a& Q( W' d; |- X. I scope="session": 一次会话
$ M, }3 P- B% |2 t" R8 z session:多次请求与响应叫会话
4 B, z8 }+ G/ X E4 I2 c3 |( d6 n/ ~ scope="request: 一次请求5 P8 [% r/ }6 Z; \2 W; t
) t8 P2 q* `' v) G" gSpring Bean初始化和销毁1 _7 @) O$ r t+ }# k, S
初始化:init-method="init" bean对象init方法名
1 X5 A" N- S" b6 u2 j lazy-init="true"也延时了init-method
- Y$ E0 Q0 |/ C- p$ e# G# D- i5 D destroy-method="destroy" bean对象destroy方法名
1 s9 Y. l- J& g 完成资源释放6 O8 p2 N: V9 C S1 r# A
destroy-method必须是singleton模式一起使用3 k$ Y. [( ]3 t& N- l8 |
) a4 g. Z- y g% Q
. t* m! S" ]& l: `( h/ G/ b2 }% [
|
|