|
该用户从未签到
|
spring容器对象
( q$ Q+ ^& Y4 U7 M; v" E1 W* l BeanFactory
+ Z! ]0 g9 b( h; c$ o/ N7 h- u //相对路径* c" v1 S$ N' z) P- [+ {2 _# f
XmlBeanFactory-->Resouce--->ClassPathResouce
4 K+ a7 l& y Y0 \1 G1 N Resource resouce = new ClassPathResource("applicationContext.xml");! E7 W* N, a! b" R, B& h
BeanFactory beanFactory = new XmlBeanFactory(resouce);
) `" v% L, G' w$ @0 Q4 r% q- n Bean bean = (Bean)beanFactory.getBean("bean");7 l; `# x7 y. w: n+ C6 ^
bean.show();6 ?' G8 P. g, c1 W0 b3 n; v
//绝对路径' N! h) G! X1 O. B8 ?, j! Z
XmlBeanFactory-->Resouce-FileSytemResouce
0 k8 G+ B; j, e/ @ Resource resouce = new FileSystemResource("d:\\applicationContext.xml");
$ d9 F& o4 x9 Z3 ^ BeanFactory beanFactory = new XmlBeanFactory(resouce);6 x4 O! s: i- J7 V- }3 R# Z& h
Bean bean =(Bean)beanFactory.getBean("bean");
% m( q$ j1 B) b0 ? bean.show();
* Z) W4 O5 N, r# s8 H# U1 ^
5 V3 r( W/ i: R4 b6 S' L8 {$ k
2 u; B. A# H+ `7 i$ f3 L. ?, Z. O ApplicationContext( D9 A* M! x' _- \$ h
ClassPathXmlApplicationContext
8 Z- A8 [) s$ _3 V ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");+ H; z, B% C4 Q$ {; X; @
Bean bean = (Bean)ac.getBean("bean");
! A3 w6 ~* p4 u' P! Y3 j& X bean.show();% `$ |7 J5 w$ }% g, s
/ Q2 k5 f* {( Y. P/ f0 J7 L FileSystemXmlApplicationContext
: D& J% G ~( `* a& t& h ApplicationContext ac = new FileSystemXmlApplicationContext("d:\\applicationContext.xml");% M- p( s: O8 B% I: p3 n# [
Bean bean =(Bean)ac.getBean("bean");+ l- m/ h7 L" S9 F* w6 [
bean.show();
7 w4 J( m7 `3 g$ z4 Z; B0 [) ^ Spring提供classpath访问器 可以直接访问; c1 `# Z v3 N7 O" x& ^
ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
# o2 ?7 I, g9 h* `# U' b Bean bean =(Bean)ac.getBean("bean");* q: v0 t# \- Z2 d( C. J
bean.show(); $ N) h3 V; n' v7 k! Z% T( s
FileSystemXmlApplicationContext支持国际化,功能更强大
: m: L- ]( o( X7 x T% Z) V5 a9 t& ?3 r* h, j
pring容器bean对象生命周期
7 k! j |: ^9 v; C4 } (1)bean创建
G7 U; f) G+ J7 P* b (a) lazy-init="false"==lazy-init="default" 7 e4 o7 G5 j+ O ^3 g; { |
创建spring容器对象,就创建spring容器里bean对象
0 q$ o) L/ d; A) f* Q& u$ N$ Q, r: u4 v( V
(b)lazy-init="true" ' o/ M* E) r: ?4 Z7 L2 g
调用getBean spring容器才去创建bean实例$ ~) N7 s+ r; _
0 E! T0 m8 I! Q- t 注意:timer定时器不能使用lazy-init="true"
( \( e* b2 [2 ?, W+ B& z (a)、(b)设置在<bean lazy-init="true"></bean>
3 t3 s/ W( r* @! M7 B+ S" _
0 h8 @8 u7 ^9 c9 y" V& p/ o 设置在<beans default-lazy-init="true"></beans> n7 s* w* f! f
default-lazy-init="true"设置一个全局的对象创建延时
" i* C: h2 z6 ]( F2 x
$ o, t5 A* v: |) r( n8 h; J6 JSpring Bean对象模式' t- H" B5 [! H+ ^* s: E; z3 R3 r
spring默认采用singleton模式; M+ l) T. ]* [" i* o, ^
singleton struts1)
; V- D- Q( I% O' u/ E' v 单态:每次只产生一个实例 w4 _, d- r6 d0 }; e* g1 e
prototype struts2)
) K/ }+ J7 ^0 ]& W 原型:可以产生多个对象- @3 K4 h1 T8 g9 G$ ?3 q& p
" M0 t' d# C* X2 ^
web框架使用:$ E! X7 {& Y6 r( y3 ?- Q3 p' K5 S
scope="session": 一次会话 2 x1 S( r4 ~4 D
session:多次请求与响应叫会话' M+ F& T$ b1 i: _7 c5 I
scope="request: 一次请求* t: ?: k/ t8 e! @$ d
. x1 R' w5 n; t ~' [Spring Bean初始化和销毁( l; S* t: e1 G
初始化:init-method="init" bean对象init方法名
$ ?- W) ^& H" c8 ^' Q lazy-init="true"也延时了init-method
k, o5 H, R7 g9 I/ Y destroy-method="destroy" bean对象destroy方法名. r$ M( ?" {* A; S3 v
完成资源释放3 h, [0 z a! y1 v0 ~9 s8 V" Q* g
destroy-method必须是singleton模式一起使用0 g$ p+ N( F; _4 n7 e; t
8 l* ^7 M: U3 e/ X+ t N1 x
# y. t" R9 |$ I |
|