该用户从未签到
|
spring容器对象
6 H! |! o" \( r- @, |7 @8 v# m BeanFactory
% w A/ J# O* ] J6 Z //相对路径! E2 c* O3 G- D n. O9 a: C" v
XmlBeanFactory-->Resouce--->ClassPathResouce6 U5 k' O' I9 Q4 x; ^$ o
Resource resouce = new ClassPathResource("applicationContext.xml");& c$ |0 |$ H1 ?* O. L* N2 K) G2 M
BeanFactory beanFactory = new XmlBeanFactory(resouce);
: V* v6 s0 J" |6 ~, j, [# G# {, B Bean bean = (Bean)beanFactory.getBean("bean");
5 n0 A* ~1 r, ]6 M3 u& L8 [( v( T bean.show();# Q0 V; m5 {( Y; e' _5 K
//绝对路径
% Z3 Z( ~( M& e2 s3 F! i, z XmlBeanFactory-->Resouce-FileSytemResouce
. O/ i+ E" B* [- p4 N& } Resource resouce = new FileSystemResource("d:\\applicationContext.xml");+ L% Z$ z q5 I# @4 c
BeanFactory beanFactory = new XmlBeanFactory(resouce);" d/ L* e G0 g& g% a' |6 K
Bean bean =(Bean)beanFactory.getBean("bean");
+ u5 r3 |- R5 r w bean.show();: o' |- ~/ ?$ ]( D- c5 z4 R
8 u, ~, Y* D$ _
8 ?) R' @+ L! b
ApplicationContext
5 U$ B) | U! p, X8 } ClassPathXmlApplicationContext
`2 F* S$ z/ X: q; c1 V0 \% P9 J9 f ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
! W' I- n* H( i7 w7 z7 M' W5 r* ` Bean bean = (Bean)ac.getBean("bean");
! d! a: B( a4 c8 g- _3 b bean.show();! g; G- S7 N. R1 G. K
) ~ U# K" c; Z. n7 _1 \
FileSystemXmlApplicationContext
) s+ Q' g' e4 \5 a# | ApplicationContext ac = new FileSystemXmlApplicationContext("d:\\applicationContext.xml");
4 g9 ]% g% S, N Q1 A. b Bean bean =(Bean)ac.getBean("bean");
# H! d2 s: ~3 T* p- u9 J( k1 F bean.show();
6 G8 l6 T! W, E; h Spring提供classpath访问器 可以直接访问
; i* ]% y! |) L ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");" c- h m6 s J) k v7 i
Bean bean =(Bean)ac.getBean("bean");
$ E6 K1 a( a- e# v' b bean.show(); 3 w9 I$ N) ] C' l0 `2 U
FileSystemXmlApplicationContext支持国际化,功能更强大* A* x# Z# ?( g9 [
" E! r) v" x1 S$ D. Cpring容器bean对象生命周期
3 P1 x+ x- E: b; I. h; {, h (1)bean创建
$ e+ s. Y/ G' q& s( I7 m (a) lazy-init="false"==lazy-init="default"
, N$ v5 l0 P# p f/ k. X+ r 创建spring容器对象,就创建spring容器里bean对象
# u0 g: p! S1 U' \* j( S ?) `6 z! J5 O% R: ]4 c! \
(b)lazy-init="true" 8 R' x6 {- ]( ?. G; I
调用getBean spring容器才去创建bean实例4 E7 L1 J+ ?; y d. {! `9 y
1 G% M. |* v% l 注意:timer定时器不能使用lazy-init="true" 1 b8 W E! {& a
(a)、(b)设置在<bean lazy-init="true"></bean>7 U" e& B# ?5 q2 A: ]3 h4 D$ D6 v
0 G6 S0 h' Q5 B5 S5 C 设置在<beans default-lazy-init="true"></beans>( e4 p( H: r% a: E/ N
default-lazy-init="true"设置一个全局的对象创建延时
% D. H+ n: {" }2 X+ g8 ]4 u
6 ?7 Z t T" VSpring Bean对象模式; Z; B& U) C. P- L o1 i" a. s
spring默认采用singleton模式
. T: g( z% ^9 D: B) R/ H7 d singletonstruts1)9 O( |7 t6 }: d: [& k
单态:每次只产生一个实例
- `; k" S, C, y+ T, P prototypestruts2)$ ~1 L4 r( E) D* [- v' ?5 J, A2 r R
原型:可以产生多个对象, u6 l# X3 A( A" c
# v9 l( P' S% t; D: f6 a+ _
web框架使用:
0 R8 n [( m* N scope="session": 一次会话 $ Z' U$ @* a0 D8 x
session:多次请求与响应叫会话
) i* Y, m" Z1 N1 e scope="request: 一次请求
$ I4 F4 P2 W0 q2 c0 I" a 7 k7 T; k$ j8 V' I/ T
Spring Bean初始化和销毁
& W b9 j$ N: k& G6 G8 Y) G初始化:init-method="init" bean对象init方法名3 L" y+ I, [2 p# r' i7 R
lazy-init="true"也延时了init-method. }$ Y0 r+ O3 f7 i5 T
destroy-method="destroy" bean对象destroy方法名6 k' e- B- e7 H, M3 S! @7 J
完成资源释放# V8 A% x5 {+ k( k- w
destroy-method必须是singleton模式一起使用% Q6 ]. A% H0 l# k {
8 p" f7 K/ |; N% Y. G9 a1 p( s) u7 }+ R4 w* c
|
|