自定义Java监听器

转载至:https://www.cnblogs.com/be-forward-to-help-others/p/5627290.html

1.原理:

当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。

例如:创建一个“人”类Class Person

人拥有吃的方法public void eat(){},我们的目的就是,在这个人吃之前要提醒他洗手,所以我们就要监听这个人,不管他在什么时候吃,我们都要能够监听到并且提醒他洗手,通俗点讲这个就是监听器的作用(在吃之前提醒他洗手)。

2.组成:

2.1Java的时间监听机制涉及到三个组件:事件源、事件监听器、事件对象

2.2当事件源上发生操作时,它会调用事件监听器的一个方法,并且调用这个方法时,会传递事件对象过来

2.3事件监听器是由开发人员编写,开发人员在事件监听器中,通过事件对象可以拿到事件源,从而对事件源上的操作进行处理

3.实现:

3.1创建一个人类,人具有跑、吃的方法  (创建一个事件源)

3.2创建一个接口用来监视人的跑、吃   (事件监听器)

3.3创建一个事件对象,里面用来封装人(Person)这个对象  (事件对象)

3.4创建一个测试类,用来测试Java监听机制

4.源码下载:http://pan.baidu.com/s/1kUOOoV9

首先创建事件源

复制代码
//事件源
public class Person {
//1.1首先定义一个私有的、空的监听器对象,用来接收传递进来的事件监听器(相当于一个全局变量)
private PersonListener listener;
//1.2将传递进来的事件监听器付给1.1中的listener
public void registerListener(PersonListener personListener){
this.listener=personListener;
}
//1.3判断listener是否为null,如果不为空,则执行监听器中的方法,否则照常调用
public void run(){
if(listener!=null){
Even even=new Even(this);
this.listener.dorun(even);
}
System.out.println(“人具有跑的方法”);
}
//1.4和1.3一个道理
public void eat(){
if(listener!=null){
Even even=new Even(this);
this.listener.doeat(even);
}
System.out.println(“人具有吃的方法”);
}
}
复制代码
创建事件监听器

//事件监听器
interface PersonListener{
public void dorun(Even even);
public void doeat(Even even);

}

创建事件对象

//事件对象
class Even{
private Person person;

public Even(Person person) {
    super();
    this.person = person;
}

public Even() {
    super();
}

public Person getPerson() {
    return person;
}

public void setPerson(Person person) {
    this.person = person;
}

}

*到这步我们已经把一个完整的Java监听器做完,下一步我们做测试

注意:要实现监听,必须调用它所对应的方法例如下面的registerListener,而且必须要实现监听器接口PersonListener

public class TestListener {

public static void main(String[] args) {
    Person person=new Person();
    person.registerListener(new MyPersonListener());
    person.run();
    person.eat();
}

}

//实现监听器接口中的方法
class MyPersonListener implements PersonListener{

@Override
public void dorun(Even even) {

Person person = even.getPerson();  //拿到事件源
System.out.println(“人在跑之前执行的动作”);
}

@Override
public void doeat(Even even) {
    System.out.println("人在吃之前执行的动作");
}

}

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Spring 中,您可以通过实现 ApplicationListener 接口来创建自定义监听器。ApplicationListener 接口有一个 onApplicationEvent() 方法,该方法在特定事件发生时调用。要监听具体的方法,您需要发布一个特定类型的事件,然后在自定义监听器的 onApplicationEvent() 方法中处理该事件。 下面是一个简单的示例,演示如何创建自定义监听器来监听方法的调用: ```java import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; public class CustomMethodCallEvent extends ApplicationEvent { private String methodName; public CustomMethodCallEvent(Object source, String methodName) { super(source); this.methodName = methodName; } public String getMethodName() { return methodName; } } public class CustomMethodCallListener implements ApplicationListener<CustomMethodCallEvent> { @Override public void onApplicationEvent(CustomMethodCallEvent event) { // 处理事件 System.out.println("Method " + event.getMethodName() + " was called."); } } ``` 然后,您可以在需要监听的方法中发布事件: ```java import org.springframework.context.ApplicationEventPublisher; public class SomeService { private final ApplicationEventPublisher eventPublisher; public SomeService(ApplicationEventPublisher eventPublisher) { this.eventPublisher = eventPublisher; } public void someMethod() { // 调用方法 eventPublisher.publishEvent(new CustomMethodCallEvent(this, "someMethod")); } } ``` 最后,在 Spring 配置中将自定义监听器注册为 Spring Bean 即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值