专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » spring异常处理:Spring中事件处理的小窍门技巧 »正文

spring异常处理:Spring中事件处理的小窍门技巧

来源: 发布时间:星期日, 2009年3月29日 浏览:0次 评论:0
 Spring中提供些Aware相关接口BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等其中最常用到是ApplicationContextAware实现ApplicationContextAwareBean在Bean被将会被注入 ApplicationContext例子ApplicationContextAware提供了publishEvent思路方法实现Observer(观察者)设计模式事件传播机提供了针对Bean事件传播功能通过Application.publishEvent思路方法我们可以将事件通知系统内所有ApplicationListener
?o T(ai
_ Q3BB5B-e/\*e+L  Spring事件处理般过程:
"k)Y`8zs IJFJ6es6\JAVA中文站社区门户1i+\7v9a"t.h3X)U'G
  ·定义Event类继承org.springframework.context.ApplicationEvent.
c(K\2MHc@5v+f*m5k9u%B/`5eJAVA中文站社区门户u0aI+}&P#?3wm
  ·编写发布事件类Publisher实现org.springframework.context.ApplicationContextAware接口.JAVA中文站社区门户_qB qsqa

'tnCLv(J+UF Z q`  ·覆盖思路方法ApplicationContext(ApplicationContext applicationContext)和发布思路方法publish(Object obj)
1V.fEA.eq"tl7pJAVA中文站社区门户;p.Zp ^%gT#y.H_
  ·定义时间监听类EventListener实现ApplicationListener接口实现思路方法onApplicationEvent(ApplicationEvent event).JAVA中文站社区门户 l8FR soH'c

c2b2xI%C-?)F@,v  java 代码
+l2?0i%n*f| x C7PcJAVA中文站社区门户$a {2z8G6p?6q ?7iz7`
import org.springframework.context.ApplicationEvent; JAVA中文站社区门户7z7ZM|K.m
JAVA中文站社区门户k`6Bch2w
/**
GxOye3gD* 定义事件信息
`$j/U9|\%O!D$`m Q* @author JAVA中文站社区门户v1^K}^
* JAVA中文站社区门户jjnLcm"z
*/ JAVA中文站社区门户A3b k'rjol r
public MessageEvent extends ApplicationEvent {
p6xbrk7_,j
7P~]lC_.] _ private String message;
B.}UGq+u%dG)oJAVA中文站社区门户L!`#e$s,oo
 public void Message(String message){ JAVA中文站社区门户5L$eVt g$N|
  this.message = message; JAVA中文站社区门户u+Z`6y~/[$R
 } JAVA中文站社区门户 F^(fm%f$j

4\ee K%dH8k public String getMessage{ JAVA中文站社区门户W K1mX3r7\
   message;
(c)Y-KZ!a5ThbJ+~ }
z%[uyiY{
S8|6\.H5KGL public MessageEvent(Object source, String message) {
s!Psn({7x4Pk6[  super(source);
3Jja%jGv;o6d2X9[ ?  this.message = message; JAVA中文站社区门户9CqH!di;m6R8`4b0A
  // TODO Auto-generated constructor stub JAVA中文站社区门户0?3a;j.f"F;h$O
 } JAVA中文站社区门户0x?h&D*^

&jYxlo"|(n$@ private final long serialVersionUID = 1L; JAVA中文站社区门户&y&Dp Eg/XH
}  
9])qn,vA7HJAVA中文站社区门户6s)_0o+Fn
  java 代码
^9Y4b*K_6@AJAVA中文站社区门户opsu w%}:z
import org.springframework.beans.BeansException; JAVA中文站社区门户1Z` Xdc {eS.a
import org.springframework.context.ApplicationContext;
(c'[9^w,E,Dimport org.springframework.context.ApplicationContextAware; JAVA中文站社区门户!l1u%f.J~9K4K
import org.springframework.context.support.FileXmlApplicationContext; JAVA中文站社区门户xb&q*bWd"jX3GU
JAVA中文站社区门户(m/A?%g.rZ p U
public Publisher implements ApplicationContextAware { JAVA中文站社区门户PAv:clv-j$EfB

Q9b0V @S vsL private ApplicationContext context; JAVA中文站社区门户x'Z"[v[
JAVA中文站社区门户}`})H7F f KT1{ r
 @Override JAVA中文站社区门户 Ha_8R9y(l
 public void ApplicationContext(ApplicationContext arg0) JAVA中文站社区门户eW)^*S\/K7h zr
 throws BeansException { JAVA中文站社区门户"bmm%oCG!ICc&M
  // TODO Auto-generated method stub
"Xr\v4`  this.context = arg0; JAVA中文站社区门户n yV&J-o8|2`
 }
Z!W ~ K HhJAVA中文站社区门户 [n E9~:j6QaJ+~
 public void publish(String message){
1b4i)t KL"G0~  context.publishEvent( MessageEvent(this,message));
T`.m||g0w } JAVA中文站社区门户Rv$Ft HF0_nQKA

:q&[$CLii b8I5f public void (String args) {
LOzHQr9z  ApplicationContext ctx = FileXmlApplicationContext("src/applicationContext.xml"); JAVA中文站社区门户"}(dM$c{9?H
  Publisher pub = (Publisher) ctx.getBean("publisher");
2|T&~#ZDN  pub.publish("Hello World!"); JAVA中文站社区门户'hC kBn3[:e__ \
  pub.publish("The quick brown fox jumped over the lazy dog");
9j iNr$U,F'X+cD } JAVA中文站社区门户3q`h%^ CY'E"q X0N:q
}  
0L8zO/b_|rNJAVA中文站社区门户+cS1\qO"G/nv
  java 代码
2IQ3l&y+Tn r.{rJAVA中文站社区门户9{&sMce+e2Vb.]^
import org.springframework.context.ApplicationEvent; JAVA中文站社区门户*vf$SfC4Xu$h
import org.springframework.context.ApplicationListener; JAVA中文站社区门户3Lr2bP/g{

+Ak(MJ4b kH spublic MessageEventListener implements ApplicationListener {
4k@a:K*}4BV-} ~E
Y/lV;O/~ b;Ni$n1S @Override
Mo#[r@6jb public void _disibledevent=> sZ3C2D tI m5c9B^s  // TODO Auto-generated method stub JAVA中文站社区门户4gO9C$C {hdE
  (event instanceof MessageEvent){
Y2n&h)xDm3Y9N2aiB   MessageEvent msEvent = (MessageEvent)event; JAVA中文站社区门户gZy:Q/KN*m g
   .out.prln("Received: " + msEvent.getMessage);
DiZ1u$^W  } JAVA中文站社区门户0t _+}0f5DR
 }
xPi T2NWsa!g5w)w"r}  JAVA中文站社区门户#_rB,T+GDQ7D

l.RE"I6a  在运行期ApplicationContext会自动在当前所有Bean中寻找ApplicationListener接口实现并将其作为事件接收对象当Application.publishEvent思路方法所有ApplicationListener接口实现都会被激发每个ApplicationListener可根据事件类型判断是否是自己需要处理事件如上面ActionListener只处理ActionEvent事件

TAG: Spring spring 窍门技巧
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: