|
该用户从未签到
|
spring容器对象6 N/ L4 R) W: b0 t; D4 A! A3 ]
BeanFactory l; H% v$ b' H1 j
//相对路径4 p8 R0 }: W& i
XmlBeanFactory-->Resouce--->ClassPathResouce% z+ d5 E3 K4 A
Resource resouce = new ClassPathResource("applicationContext.xml");
& K7 e9 v5 a" m# u9 B BeanFactory beanFactory = new XmlBeanFactory(resouce);
* X2 p/ ^1 Y$ n ?! U3 m# v/ L Bean bean = (Bean)beanFactory.getBean("bean");
$ `( _* a- u$ ?2 D bean.show();
, O5 }. G8 ^' N% z4 z# H! ? //绝对路径- z) V' @% L; o D: B, J. {
XmlBeanFactory-->Resouce-FileSytemResouce$ n$ _: ], Y- j. ~7 c% U
Resource resouce = new FileSystemResource("d:\\applicationContext.xml");" ?: }* s% T& }% |$ L
BeanFactory beanFactory = new XmlBeanFactory(resouce);/ |- u1 N8 k# w( `/ E
Bean bean =(Bean)beanFactory.getBean("bean");' p. D9 j' m! h: D& k- h! Q
bean.show();4 E9 ?6 j e+ _
+ g4 s* y6 q! l- G# n 6 v" u. E; T' Q' _ X
ApplicationContext7 g# y6 a+ |7 I4 G
ClassPathXmlApplicationContext6 p% |1 B! f0 O4 _8 n& `/ |. s
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
+ J! }. `! w( K' N# m Bean bean = (Bean)ac.getBean("bean");6 \# |5 m5 W% t# `: \) ^! X
bean.show();
8 X1 g- u) V: \; V$ `% |8 I # k# W9 q" T( l
FileSystemXmlApplicationContext
; J" F/ j/ J# Z, k: [ ApplicationContext ac = new FileSystemXmlApplicationContext("d:\\applicationContext.xml");
& l6 ], ~; y. ?) A; J* P Bean bean =(Bean)ac.getBean("bean");
+ K( m! O- G: r bean.show();
0 a3 ^% c8 G/ s: n& |0 _ Spring提供classpath访问器 可以直接访问+ T& c) F, U+ n2 L4 q( u1 R
ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");( [' n; h2 ]; r% b) ^* r# k0 f
Bean bean =(Bean)ac.getBean("bean");, `7 o& H2 B0 |- ^; _) e+ u
bean.show(); " ?/ X8 K. i- R/ r4 X
FileSystemXmlApplicationContext支持国际化,功能更强大
]3 O4 G9 O# R% K2 k% F; i4 n, v2 @0 }( Q7 T! i
pring容器bean对象生命周期- C. L# [/ _- h1 F/ F/ r& P
(1)bean创建
% \4 T6 I# @) C `( ^$ l8 p% V (a) lazy-init="false"==lazy-init="default" / z( y: l! |$ f, k2 o( s
创建spring容器对象,就创建spring容器里bean对象' v) Q' t; {% L0 \9 i
0 |) p. m6 N4 d+ C
(b)lazy-init="true" 8 w4 T, u0 t$ R" W; H) D' |: y
调用getBean spring容器才去创建bean实例4 j* Q8 b3 c( W$ y. _
8 t g t' L- G& J) W
注意:timer定时器不能使用lazy-init="true" . g$ y7 p" k+ q- Y6 |2 L6 J/ z! r
(a)、(b)设置在<bean lazy-init="true"></bean>% g6 Z- t$ Z$ u! O
$ @2 K2 x5 j- U& ]: o% v ^$ J* r
设置在<beans default-lazy-init="true"></beans>
( A" [: X. Y4 _# _% V. x default-lazy-init="true"设置一个全局的对象创建延时
6 D: w9 ? ]9 N( Y- [2 `. t% p9 G& y2 h% f8 B2 d1 M! f
Spring Bean对象模式
; M& U* G! ^9 j/ aspring默认采用singleton模式
( a9 u( b# M; P9 E& k% x" V4 |% o( R singleton struts1)4 Z# |+ B9 f8 [4 D7 j* |) x
单态:每次只产生一个实例
2 u4 |$ M% Z& p2 Q prototype struts2)
: s& {+ y; x0 f 原型:可以产生多个对象
! |: |1 r, O$ ]5 R7 F# y! O$ { . a. u+ L; [5 F) L
web框架使用:7 A) c" C' W% [4 N
scope="session": 一次会话 , D m( ]9 w) o7 x% W6 p2 J/ q
session:多次请求与响应叫会话6 k v! s% J) o; }
scope="request: 一次请求
- h/ m' D! n# C( X' H8 F# i! t
8 _* {2 z6 H, j) H3 Z5 ISpring Bean初始化和销毁
& j5 |6 L# [6 n2 R# s初始化:init-method="init" bean对象init方法名
( |( P% L: ]% i# ?0 B+ @ T lazy-init="true"也延时了init-method+ v2 \+ t& f c. P: |
destroy-method="destroy" bean对象destroy方法名5 ?) D: H; P2 k, @' V( R- |$ t
完成资源释放
# |: }. h- j5 S# ~! J! X2 T destroy-method必须是singleton模式一起使用8 V5 x3 `# c. v$ u
~$ T1 f3 n+ f( r7 V; b
3 v% X7 E+ Z# y [ |
|