首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从Spring (在本例中为ApplicationReadyEvent侦听器)访问命令行参数

Spring是一个开源的Java框架,用于构建企业级应用程序。它提供了一种简化开发的方式,通过依赖注入和面向切面编程等特性,使开发人员能够更加高效地开发可维护和可扩展的应用程序。

在Spring中,可以通过ApplicationReadyEvent侦听器来访问命令行参数。ApplicationReadyEvent是Spring Boot中的一个事件,它在应用程序启动完成后触发。通过监听这个事件,可以在应用程序启动完成后执行一些初始化操作。

要访问命令行参数,可以通过在侦听器中注入ApplicationArguments对象来获取。ApplicationArguments对象提供了一些方法来获取命令行参数的值,例如getNonOptionArgs()用于获取非选项参数,getOptionNames()用于获取选项参数的名称,getOptionValues(String name)用于获取指定选项参数的值等。

以下是一个示例代码,演示如何在Spring中访问命令行参数:

代码语言:txt
复制
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import org.springframework.boot.ApplicationArguments;

@Component
public class CommandLineArgsListener implements ApplicationListener<ApplicationReadyEvent> {

    @Override
    public void onApplicationEvent(ApplicationReadyEvent event) {
        ApplicationArguments args = event.getApplicationContext().getBean(ApplicationArguments.class);
        
        // 获取非选项参数
        List<String> nonOptionArgs = args.getNonOptionArgs();
        System.out.println("Non-option args: " + nonOptionArgs);
        
        // 获取所有选项参数的名称
        Set<String> optionNames = args.getOptionNames();
        for (String optionName : optionNames) {
            // 获取指定选项参数的值
            List<String> optionValues = args.getOptionValues(optionName);
            System.out.println("Option " + optionName + " values: " + optionValues);
        }
    }
}

在上述代码中,CommandLineArgsListener是一个实现了ApplicationListener接口的Spring组件,它监听ApplicationReadyEvent事件。在事件触发时,通过ApplicationContext对象获取ApplicationArguments对象,并使用其提供的方法来获取命令行参数的值。

这样,当应用程序启动完成后,CommandLineArgsListener中的onApplicationEvent方法会被调用,从而可以访问和处理命令行参数。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供弹性计算能力,满足各种规模和业务需求。详情请参考:https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库MySQL版:提供稳定可靠的云数据库服务,支持高可用、灾备、备份等功能。详情请参考:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务,适用于图片、音视频、文档等各种类型的数据存储。详情请参考:https://cloud.tencent.com/product/cos
  • 腾讯云人工智能(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等,帮助开发者构建智能化应用。详情请参考:https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):提供全面的物联网解决方案,包括设备接入、数据管理、应用开发等,帮助实现设备互联互通。详情请参考:https://cloud.tencent.com/product/iot
  • 腾讯云区块链(BCBaaS):提供安全可信的区块链服务,支持快速搭建和部署区块链网络,适用于金融、供应链等领域的应用场景。详情请参考:https://cloud.tencent.com/product/baas
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

谈谈SpringBoot 事件机制

Spring 4.2开始,我们还可以将对象发布事件,而无需扩展ApplicationEvent: class UserRemovedEvent { private String name;...会自动我们将其包装在PayloadApplicationEvent。...我们的方法可以监听多个事件,或者如果我们想完全不使用任何参数来定义它,那么事件类型也可以注解本身上指定。...条件表达式还公开了一个“ root”变量,该变量引用原始ApplicationEvent(#root.event)和实际方法参数(#root.args) 以上示例,仅当#event.name的值'...启动期间的任何时间都可能发生这种情况。 我们可以使用它来执行一些任务,例如执行脚本或在启动失败时发出通知。 结论 事件是同一应用程序上下文内的Spring Bean之间进行简单通信而设计的。

2.5K30
  • 一张图帮你记忆,Spring Boot 应用在启动阶段执行代码的几种方式

    Boot 应用上下文中找到 CommandLineRunner bean,它将会在应用成功启动之后调用 run() 方法,并传递用于启动应用程序的命令行参数 通过如下 maven 命令生成 jar...,那 MyCommandLineRunner 就足够使用了 ---- ApplicationRunner 上面提到,通过命令行启动并传递参数,MyCommandLineRunner 不能解析参数,如果要解析参数...共享 order 的顺序,稍后我们通过源码来验证这个结论 小结 如果我们想获取复杂的命令行参数时,我们可以使用 ApplicationRunner ---- ApplicationListener 如果我们不需要获取命令行参数时...@Autowired 插入到我们 bean 的其他 Spring bean。...灵魂追问 上面程序运行结果, afterPropertiesSet 方法调用先于 @PostConstruct 方法,但这和我们 Spring Bean 生命周期之缘起 的调用顺序恰恰相反,你知道为什么吗

    1.9K20

    Spring Boot 框架整体启动流程详解

    META-INF/spring.factories加载ApplicationListener类实例 8、堆栈推断出主应用程序类 BootstrapRegistryInitializer:该接口的作用是将一些默认的组件注册到...建议实现Ordered接口,或者使用@Order注解 ApplicationListener:该接口的实现类可以Spring Boot应用程序中注册到ApplicationContext,以便在应用程序生命周期内接收和处理特定的应用程序事件...常见的Spring Boot应用程序事件包括ApplicationStartingEvent、ApplicationStartedEvent、ApplicationReadyEvent、ApplicationFailedEvent...(bootstrapContext, this.mainApplicationClass); try { //创建默认的ApplicationArguments实例,用于保存应用程序接收到的命令行参数...this.mainApplicationClass); private SpringApplicationRunListeners getRunListeners(String[] args) { //将应用程序接收到的命令行参数组合成一个参数解决器

    56330

    掌握 Spring 之事件处理

    的事件处理,源于实际工作遇到的项目需求:一个支付的下单场景,当用户真正支付成功,服务器收到回调后就需要及时更新订单数据状态来保证数据一致。...通常做法就是回调方法里直接使用订单服务更新数据, 然而这样实现上两个模块出现了紧密耦合,如果订单更新的操作需要进行调整,那么支付回调的代码块也需要被修改。...@6950ed69, started on Sun May 26 12:19:33 CST 2019 我们可以 ContextRefreshedEvent 事件获取到 ApplicationContext...当我们对单个事件存在多个侦听器时,可能会由于需求想要指定侦听器的执行顺序,这一点 Spring我们考虑到了,只要使用 @Order注解声明监听类或者监听方法即可,根据 @Order 的 value...关于事件侦听器还需要注意的一点是:Spring 事件处理默认是同步的,这一点 Spring 官方文档所有提及,我们先解读下官方描述: You can register as many event listeners

    1.2K40

    【微服务架构】介绍KivaKit框架

    的每个类侦听器链都扩展: listener.listenTo(广播员) 要将消息发送给感兴趣的侦听器,将从广播机继承方便方法,以获得常见类型的消息: Message Purpose problem...,它将从命名的部署(本例开发或生产)加载设置。...onRun()方法,通过get(DICTIONARY)检索命令行上传递的文件参数。...如果命令行存在语法问题或未通过验证,KivaKit将自动报告该问题,并提供description()以及开关和参数解析器派生的用法帮助: ┏-------- COMMAND LINE ERROR(S)...基本应用程序类有一个日志记录器,用于记录组件到应用程序级别的任何消息。这意味着不需要在应用程序或其任何组件创建记录器,只要侦听器每个组件一直引导到应用程序。

    42020

    【禁止血压飙升】啥都没干,只是加了个ApplicationListener实现类,你告诉我服务挂了=͟͟͞͞(꒪ᗜ꒪ ‧̣̥̇)

    引发报错的变更: 只是新增一个服务类,这个类干了两个事: 提供一个Rest接口 SpringBoot启动时Spring容器拿到几个对象。...Spring Boot,当你创建一个Web应用程序时,AnnotationConfigServletWebServerApplicationContext或其子类通常会被用来初始化和配置应用程序上下文...这个类是Spring Boot实现Web应用程序快速开发和部署的关键组件之一,它结合了Spring的依赖注入和Web应用程序的Servlet API,提供了一个简单而强大的运行时环境。...不敢相信,Spring应用容器对象 居然是一个事件对象的构建参数!! 这很明显没有遵守SOLID的LoD法则。...问题已经搞清了: SpringBoot2.5.2初始化ApplicationListener实现类FetchReportCommon,执行onApplicationEvent方法后,会把入参对象applicationReadyEvent

    8610

    「首席架构师看Event Hub」Kafka的Spring 深入挖掘 -第1部分

    Apache Kafka的SpringKafka带来了熟悉的Spring编程模型。它提供了用于发布记录的KafkaTemplate和用于异步执行POJO侦听器侦听器容器。...但是,我们可以侦听器容器配置一个错误处理程序来执行一些其他操作。...消息转换器bean推断要转换为方法签名参数类型的类型。 转换器自动“信任”类型。Spring Boot自动将转换器配置到侦听器容器。...此外,由于我们没有推断类型,所以需要将消息转换器配置“信任”映射类型的包。 本例,我们将在两端使用消息转换器(以及StringSerializer和StringDeserializer)。...= "fooGroup3", topics = "topic3") public void listen(String in) { logger.info("Received: " + in); } 本例的生产者一个事务中发送多条记录

    1.5K40

    开源 Java 微服务应用程序框架 KivaKit 简介

    的每个类侦听器链扩展: listener.listenTo(broadcaster) 为了向感兴趣的侦听器传输消息,这里 Broadcaster 继承了一些针对常见消息类型的便利方法:...-deployment= 传递给应用程序时,它将从命名过的部署(本例 development 或 production)加载设置。... onRun() 方法,通过 get(DICTIONARY) 检索命令行上传递的 File 参数。...验 证 在上面的命令行解析代码,开关和参数使用 kivakit-validation 迷你框架进行验证。另一个常见用例是一个微服务验证一个 Web 应用程序用户界面的域对象。...基本的 Application 类有一个 Logger,用于记录组件冒泡到应用程序级别的任何消息。这意味着不需要在应用程序或其任何组件创建记录器,只要侦听器每个组件一直连回应用程序即可。

    85320

    Spring Boot Kafka概览、配置及优雅地实现发布订阅

    Spring Kafka2.2.7版开始,你可以将RecordInterceptor添加到侦听器容器调用侦听器以允许检查或修改记录之前,将调用它。如果拦截器返回null,则不调用侦听器。...侦听器是批处理侦听器时不调用侦听器2.3版开始,CompositeRecordInterceptor可用于调用多个拦截器。 默认情况下,使用事务时,侦听器事务启动后调用。...2.3版开始,ContainerProperties提供了一个idleBetweenPolls选项,允许侦听器容器的主循环KafkaConsumer.poll()调用之间睡眠。...2.3版开始,除非在使用者工厂或容器的使用者属性重写特别设置,否则它将无条件地将其设置false。...侦听器类型调用错误的方法将引发IllegalStateException。 nack()只能在调用侦听器的消费者线程上调用。 使用批处理侦听器时,可以发生故障的批内指定索引。

    15.5K72

    Spring Boot 2.0 新特性(二):新增事件ApplicationStartedEvent

    今天继续来聊Spring Boot 2.0的新特性。本文将具体说说2.0版本的事件模型,尤其是新增的事件: ApplicationStartedEvent。...原文首发:http://blog.didispace.com/Spring-Boot-2-0-feature-2-ApplicationStartedEvent/ Spring Boot 2.0对事件模型做了一些增强...("......ApplicationReadyEvent......"); } } 第二步: /src/main/resources/目录下新建: META-INF/spring.factories...日志我们可以看到清晰的看到 ApplicationPreparedEvent、 ApplicationStartedEvent以及 ApplicationReadyEvent三个事件的切入点。...It indicates that the application is ready to service requests 文档我们可以知道他们两中间还有一个过程就是 command-line runners

    1.9K60

    如何使用Spring Boot监听器来优化应用程序性能?

    图片---本文收录于 《Spring Boot入门到精通》 ,专门攻坚指数提升,2023 年国内最系统+最强(更新)。...本专栏致力打造最硬核 Spring Boot 零基础到进阶系列学习内容,均为全网独家首发,打造精品专栏,专栏持续更新…欢迎大家订阅持续学习。...监听器(Listener)是一种特殊的组件,可以特定场景下监听多个 Spring Boot 事件并产生响应。...DataSourceInitializer 类实现了 ApplicationListener 接口,并使用了 @Component 注解来标记该类 Spring Bean。...☀️建议/推荐你---无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Spring Boot」,入门到精通,凡是学习此专栏的同学,均能获取到所需的知识和技能

    35711

    springboot 启动原理、启动过程、启动机制的介绍

    这让你能够不担心版本冲突的情况下快速开始一个功能完备的开发环境。3. 命令行界面(CLI)Spring Boot 提供一个可选的 CLI(命令行界面),用于快速开发和原型制作 Spring 应用。...外部化配置Spring Boot 允许你通过外部配置(如 properties 文件、YAML 文件、环境变量和命令行参数)来管理应用程序的配置。...它可以通过 HTTP 或 JMX 访问应用的内部状态。7. 无代码生成和 XML 配置Spring Boot 被设计尽可能地减少显式配置。它使用条件注解来评估环境,自动配置 Spring 容器。...环境准备:应用上下文准备前,先准备环境(Environment),这包括配置文件、命令行参数、环境变量等的解析。横幅输出:如果启用,Spring Boot 的启动过程中会在控制台打印一个横幅。...这个对象负责管理 Spring 应用的启动和初始化。3. 准备环境SpringApplication 对象负责准备 Spring 应用的环境。这包括读取配置文件、解析命令行参数、收集系统环境变量等。

    83621
    领券