LockedIPEvent.java
java 代码
- package com.gjx.spring.event;
- import org.springframework.context.ApplicationEvent;
- public class LockedIPEvent extends ApplicationEvent {
- public LockedIPEvent(Object source) {
- super(source);
- }
- }
LockedIPListener.java
java 代码
- package com.gjx.spring.event;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.context.ApplicationEvent;
- import org.springframework.context.ApplicationListener;
- public class LockedIPListener implements ApplicationListener {
- //在这里,监听器应该只作一个记录功能
- private Log logger=LogFactory.getLog(LockedIPListener.class);
- public void onApplicationEvent(ApplicationEvent event) {
- if (event instanceof LockedIPEvent) {
- logger.info("Locked IP ["+event.getSource()+"] try to login !");
- }
- }
- }
UserManager.java
java 代码
- package com.gjx.spring.event;
- import java.util.List;
- import org.springframework.beans.BeansException;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.ApplicationContextAware;
- /*实现啦这个接口就会通过ApplicationContext来取得 这是一个接口的注入
- * 如果使用这样的事件就会和Spring 偶合在一起啦
- *
- */
- public class UserManager implements ApplicationContextAware {
- private List lockedIPList;
- private ApplicationContext context;
- public List getLockedIPList() {
- return lockedIPList;
- }
- public void setLockedIPList(List lockedIPList) {
- this.lockedIPList = lockedIPList;
- }
- public boolean isLogin(String username,String password,String ip){
- if(lockedIPList.contains(ip)){
- context.publishEvent(new LockedIPEvent(ip)); //发布这个事件
- return true;
- }
- return false;
- }
- public void setApplicationContext(ApplicationContext context) throws BeansException {
- this.context=context;
- }
- }
beans.xml
xml 代码
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
- <beans>
- <!-- 监听器类的ID设不设置都无所谓 ,如果不想要日志信息,直接删掉下面这句就OK啦。所以很方便-->
- <bean class="com.gjx.spring.event.LockedIPListener"/>
- <bean id="userManager" class="com.gjx.spring.event.UserManager">
- <property name="lockedIPList">
- <list>
- <value>222.111.111.4</value>
- <value>222.111.111.7</value>
- <value>222.111.111.9</value>
- </list>
- </property>
- </bean>
- </beans>
JUnit的测试代码
TestSpring.java
java 代码
- package Test.com.gjx.spring;
- import java.io.BufferedOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.Date;
- import java.util.Locale;
- import junit.framework.TestCase;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import org.springframework.context.support.GenericApplicationContext;
- import org.springframework.core.io.Resource;
- import com.gjx.spring.HelloAction;
- import com.gjx.spring.event.UserManager;
- public class TestSpring extends TestCase {
- public void testEvent() {
- ApplicationContext context = new ClassPathXmlApplicationContext(
- "beans.xml");
- UserManager userManager = (UserManager) context.getBean("userManager");
- userManager.isLogin("冬国", "1234567", "222.111.111.4");
- }
- }
测试结果:
Locked IP [222.111.111.4] try to login !