Spring 中事件的传递

LockedIPEvent.java

java 代码
  1. package com.gjx.spring.event;   
  2.   
  3. import org.springframework.context.ApplicationEvent;   
  4.   
  5. public class LockedIPEvent extends ApplicationEvent {   
  6.   
  7.     public LockedIPEvent(Object source) {   
  8.         super(source);   
  9.     }   
  10.   
  11. }   

LockedIPListener.java

java 代码
  1. package com.gjx.spring.event;   
  2.   
  3. import org.apache.commons.logging.Log;   
  4. import org.apache.commons.logging.LogFactory;   
  5. import org.springframework.context.ApplicationEvent;   
  6. import org.springframework.context.ApplicationListener;   
  7.   
  8. public class LockedIPListener implements ApplicationListener {   
  9.     //在这里,监听器应该只作一个记录功能   
  10.     private Log logger=LogFactory.getLog(LockedIPListener.class);   
  11.     public void onApplicationEvent(ApplicationEvent event) {   
  12.         if (event instanceof LockedIPEvent) {   
  13.             logger.info("Locked IP  ["+event.getSource()+"] try to login !");   
  14.         }   
  15.     }   
  16.   
  17. }   

UserManager.java

java 代码
  1. package com.gjx.spring.event;   
  2.   
  3. import java.util.List;   
  4.   
  5. import org.springframework.beans.BeansException;   
  6. import org.springframework.context.ApplicationContext;   
  7. import org.springframework.context.ApplicationContextAware;   
  8.   
  9. /*实现啦这个接口就会通过ApplicationContext来取得 这是一个接口的注入  
  10.  * 如果使用这样的事件就会和Spring 偶合在一起啦  
  11.  *   
  12.  */  
  13. public class UserManager implements ApplicationContextAware {   
  14.     private List lockedIPList;   
  15.   
  16.     private ApplicationContext context;   
  17.     public List getLockedIPList() {   
  18.         return lockedIPList;   
  19.     }   
  20.   
  21.     public void setLockedIPList(List lockedIPList) {   
  22.         this.lockedIPList = lockedIPList;   
  23.     }   
  24.     public boolean isLogin(String username,String password,String ip){   
  25.         if(lockedIPList.contains(ip)){   
  26.             context.publishEvent(new LockedIPEvent(ip)); //发布这个事件   
  27.             return true;   
  28.         }   
  29.         return false;   
  30.     }   
  31.   
  32.     public void setApplicationContext(ApplicationContext context) throws BeansException {   
  33.         this.context=context;   
  34.            
  35.     }   
  36. }   

beans.xml

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">  
  3.   
  4. <beans>  
  5.        
  6.     <!-- 监听器类的ID设不设置都无所谓 ,如果不想要日志信息,直接删掉下面这句就OK啦。所以很方便-->  
  7.     <bean class="com.gjx.spring.event.LockedIPListener"/>  
  8.        
  9.     <bean id="userManager" class="com.gjx.spring.event.UserManager">  
  10.         <property name="lockedIPList">  
  11.             <list>  
  12.                 <value>222.111.111.4</value>  
  13.                 <value>222.111.111.7</value>  
  14.                 <value>222.111.111.9</value>  
  15.             </list>  
  16.         </property>  
  17.     </bean>  
  18. </beans>  

JUnit的测试代码

TestSpring.java

java 代码
  1. package Test.com.gjx.spring;   
  2.   
  3. import java.io.BufferedOutputStream;   
  4. import java.io.IOException;   
  5. import java.io.InputStream;   
  6. import java.util.Date;   
  7. import java.util.Locale;   
  8.   
  9. import junit.framework.TestCase;   
  10.   
  11. import org.springframework.context.ApplicationContext;   
  12. import org.springframework.context.support.ClassPathXmlApplicationContext;   
  13. import org.springframework.context.support.GenericApplicationContext;   
  14. import org.springframework.core.io.Resource;   
  15.   
  16. import com.gjx.spring.HelloAction;   
  17. import com.gjx.spring.event.UserManager;   
  18.   
  19. public class TestSpring extends TestCase {     
  20.   
  21.     public void testEvent() {   
  22.         ApplicationContext context = new ClassPathXmlApplicationContext(   
  23.                 "beans.xml");   
  24.         UserManager userManager = (UserManager) context.getBean("userManager");   
  25.         userManager.isLogin("冬国""1234567""222.111.111.4");   
  26.     }   
  27. }   

测试结果:

 Locked IP  [222.111.111.4] try to login !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值