springboot(14)监听器

Spring Boot 的监听器是一种能够响应应用程序生命周期事件的组件。当应用程序启动、停止或出现错误时,监听器会被触发,可以在监听器中编写自定义代码来处理这些事件。通常,监听器用于在应用程序启动时执行一些初始化操作,或者在应用程序关闭时执行一些清理操作。

1. 各种场景

在 Spring Boot 中,监听器可以用于各种场景,例如:

  • 应用程序启动时加载配置文件
  • 应用程序停止时保存数据
  • 应用程序出错时发送警报或通知

使用监听器的好处在于可以轻松地扩展应用程序的功能,同时也能够提高应用程序的可靠性和稳定性。监听器能够帮助我们更好地掌握应用程序的生命周期,从而更好地管理应用程序。

2.使用

在 Spring Boot 中使用监听器很简单,只需要创建一个监听器类,实现 Spring 的 ApplicationListener 接口,然后在应用程序的启动类中添加监听器即可。

在Spring Boot中使用监听器十分简单,只需要遵循以下步骤即可:

  1. 创建一个监听器类,实现Spring的ApplicationListener接口。
  2. 在监听器类中实现onApplicationEvent方法,该方法会在应用程序启动时被调用。
  3. 在Spring Boot应用程序的启动类中,使用SpringApplication.addListeners方法将监听器类添加到应用程序中。

以下是一个示例监听器类的实现:

import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;

public class MyApplicationListener implements ApplicationListener<ApplicationStartedEvent> {
    
    

    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
    
    
        System.out.println("应用程序已启动!");
    }
}

在Spring Boot应用程序的启动类中,只需将上述监听器添加到应用程序中即可:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication app = new SpringApplication(MyApplication.class);
        app.addListeners(new MyApplicationListener());
        app.run(args);
    }
}

3. 案例

3.1 案例 一( 加载配置文件)

Spring Boot 中使用监听器最常见的案例是在应用程序启动时加载配置文件。可以通过创建一个监听器类,实现 ApplicationListener 接口,在监听器中读取配置文件并将其加载到应用程序中。然后,在应用程序的启动类中,将该监听器添加到应用程序中即可。

以下是一个简单的示例:

扫描二维码关注公众号,回复: 14703479 查看本文章
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PropertiesLoaderUtils;

import java.io.IOException;
import java.util.Properties;

public class ConfigLoader implements ApplicationListener<ApplicationStartedEvent> {
    
    

    private static final String CONFIG_FILE_NAME = "application.properties";

    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
    
    
        loadConfig();
    }

    private void loadConfig() {
    
    
        Resource resource = new ClassPathResource(CONFIG_FILE_NAME);
        try {
    
    
            Properties properties = PropertiesLoaderUtils.loadProperties(resource);
            // 在这里将配置文件加载到应用程序中
        } catch (IOException e) {
    
    
            // 处理读取配置文件失败的情况
        }
    }
}

在启动类中添加监听器:

@SpringBootApplication
public class MyApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication app = new SpringApplication(MyApplication.class);
        app.addListeners(new ConfigLoader());
        app.run(args);
    }
}

3.2 案例 二( 程序停保存数据)

下面是一个简单的 Spring Boot 监听器的实现,用于在应用程序停止时保存数据:

import org.springframework.boot.context.event.ApplicationStoppedEvent;
import org.springframework.context.ApplicationListener;

public class DataSavingListener implements ApplicationListener<ApplicationStoppedEvent> {
    
    

    @Override
    public void onApplicationEvent(ApplicationStoppedEvent event) {
    
    
        // 在这里编写保存数据的逻辑
        System.out.println("应用程序正在停止,数据已保存。");
    }
}

在应用程序启动类中添加监听器:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication app = new SpringApplication(MyApplication.class);
        app.addListeners(new DataSavingListener());
        app.run(args);
    }
}

当应用程序停止时,onApplicationEvent 方法会被调用,并且会执行保存数据的逻辑。

3.3 案例 三 (程序出错发送警报或通知)

以下是一个简单的 Spring Boot 监听器的实现,用于在应用程序出错时发送邮件通知:

import org.springframework.boot.context.event.ApplicationFailedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;

public class ErrorNotificationListener implements ApplicationListener<ApplicationFailedEvent> {
    
    

    private final JavaMailSender mailSender;
    private final String recipient;

    public ErrorNotificationListener(JavaMailSender mailSender, String recipient) {
    
    
        this.mailSender = mailSender;
        this.recipient = recipient;
    }

    @Override
    public void onApplicationEvent(ApplicationFailedEvent event) {
    
    
        SimpleMailMessage message = new SimpleMailMessage();
        message.setTo(recipient);
        message.setSubject("应用程序出错");
        message.setText("应用程序出错,请尽快处理!\\\\n\\\\n" + event.getException().getMessage());
        mailSender.send(message);
    }
}

在应用程序启动类中添加监听器:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;

@SpringBootApplication
public class MyApplication {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication app = new SpringApplication(MyApplication.class);
        app.addListeners(new ErrorNotificationListener(mailSender(), "[email protected]"));
        app.run(args);
    }

    @Bean
    public JavaMailSender mailSender() {
    
    
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        mailSender.setHost("smtp.example.com");
        mailSender.setPort(587);
        mailSender.setUsername("[email protected]");
        mailSender.setPassword("password");
        return mailSender;
    }
}

在上面的代码中,我们使用了 Spring Boot 的邮件发送功能,在应用程序出错时发送邮件通知管理员。在监听器的构造函数中,我们需要传入一个 JavaMailSender 对象和一个收件人地址。然后在 onApplicationEvent 方法中,我们使用 JavaMailSender 对象创建一个邮件消息,并将其发送给指定的收件人。

要使用此监听器,您需要将其添加到应用程序的启动类中。在这个例子中,我们还定义了一个 mailSender bean 来配置电子邮件发送器。

请注意,为了使用此示例代码,您需要设置您自己的 SMTP 服务器和管理员电子邮件地址。

4. 总结

本文介绍了 Spring Boot 的监听器,包括监听器的使用场景、使用方法和案例。监听器是一种能够响应应用程序生命周期事件的组件,可以在应用程序启动、停止或出现错误时触发自定义代码来处理这些事件。在 Spring Boot 中使用监听器可以轻松地扩展应用程序的功能,同时也能够提高应用程序的可靠性和稳定性。

在本文中,我们介绍了使用监听器的三个案例:

  1. 加载配置文件
  2. 程序停止时保存数据
  3. 程序出错时发送警报或通知

在每个案例中,我们都提供了一个示例监听器的实现,并说明了如何将该监听器添加到应用程序中。同时,我们也提供了一些有关监听器的使用方法和技巧,例如如何将监听器添加到应用程序中、如何在监听器中读取配置文件、如何使用邮件发送器发送邮件等。最后,我们总结了本文的内容,希望对读者有所帮助。

总之,监听器是一种强大的组件,可以帮助我们更好地掌握应用程序的生命周期,从而更好地管理应用程序。

猜你喜欢

转载自blog.csdn.net/Bilal_0/article/details/129986284
今日推荐