Spring Boot 非web应用程序实例_往事随风非的博客-程序员秘密_springboot非web应用

在Spring Boot中,要创建一个非Web应用程序,实现CommandLineRunner并覆盖run()方法,例如:

import org.springframework.boot.CommandLineRunner;

@SpringBootApplication
public class SpringBootConsoleApplication implements CommandLineRunner {
      

    public static void main(String[] args) throws Exception {
      

        SpringApplication.run(SpringBootConsoleApplication.class, args);

    }

    //access command line arguments
    @Override
    public void run(String... args) throws Exception {
      
        //do something
    }
}

1. 项目依赖

只有依赖 spring-boot-starter 库,参考如下 pom.xml -

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.yiibai</groupId>
    <artifactId>spring-boot-non-web</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>spring-boot-non-web</name>
    <url>http://maven.apache.org</url>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.1.RELEASE</version>
    </parent>

    <build>
        <plugins>
            <!-- Package as an executable jar/war -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

 
  
XML

2.  Spring

返回消息的服务,如下 HelloMessageService.java 代码所示 -

package com.yiibai.service;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

@Service
public class HelloMessageService {
      

    @Value("${name:unknown}")
    private String name;

    public String getMessage() {
      
        return getMessage(name);
    }

    public String getMessage(String name) {
      
        return "Hello " + name;
    }

}

属性文件配置文件: application.properties 如下所示 -

name=yiibai

 
  
Shell

下面是CommandLineRunner示例,如果运行这个Spring Boot,那么run方法将是入口点。
SpringBootConsoleApplication.java 代码内容如下所示 -

package com.yiibai;

import com.yiibai.service.HelloMessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.Banner;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import static java.lang.System.exit;

@SpringBootApplication
public class SpringBootConsoleApplication implements CommandLineRunner {
      

    @Autowired
    private HelloMessageService helloService;

    public static void main(String[] args) throws Exception {
      

        //disabled banner, don't want to see the spring logo
        SpringApplication app = new SpringApplication(SpringBootConsoleApplication.class);
        app.setBannerMode(Banner.Mode.OFF);
        app.run(args);

    }

    // Put your logic here.
    @Override
    public void run(String... args) throws Exception {
      

        if (args.length > 0) {
      
            System.out.println(helloService.getMessage(args[0].toString()));
        } else {
      
            System.out.println(helloService.getMessage());
        }

        exit(0);
    }
}

3. 实例运行演示

打包上面的项目并运行它,如下命令 -

## Go to project directory
## package it
$ mvn package

$ java -jar target/spring-boot-non-web-0.0.1-SNAPSHOT.jar
Hello yiibai

$ java -jar target/spring-boot-non-web-0.0.1-SNAPSHOT.jar "Max su"
Hello Max su
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lxh18682851338/article/details/78559595

智能推荐

了解CV和RoboMaster视觉组(五)统计特征和global-based方法_HNU跃鹿战队的博客-程序员秘密

介绍图像处理中的特征工程以及利用全局统计特征如直方图和梯度统计等进行分类的方法

05使得cefsharp浏览器支持mp3、mp4媒体播放方法_cefsharp mp4_一路向前的小Q的博客-程序员秘密

系列文章目录上一节:04 cefsharp类谷歌浏览器多开页面的实现cefsharp专题目录页链接原创博文,转载请标注转载链接,谢谢!文章目录系列文章目录一、编译说明二、编译方法三、编译完后使用步骤1、前期准备2、使用步骤(1)重新生成项目(2)将编译准备好的libcef.dll复制替换debug中的文件(3)F5调试,或者直接点击.exe文件查看视频即可四、其他说明五、下节预告一、编译说明cefsharp不是不支持mp3,mp4播放,而是官方的情况下不会集成这方面的功能,可能是

物联网数据采集处理架构_tom_fans的博客-程序员秘密

物联网,顾名思义,所有的数据采集是从设备采集的。设备有多种,有些通过传感器来采集,有些设备属于智能设备,本身就是一台小型计算机,能够自己采集,不管是传感器,还是智能设备本身,采集方式一般包含2种,一种是报文方式,所谓报文就是根据你设置的采集频率,比如1分钟一次,1秒一次进行数据传输,传输到哪里?一般放到MQ中。还有一种采集是以文件的方式采集,在做数据分析的时候,工业设备的数据希望是连续不断的,我们

Angular路由--路由守卫_weixin_34238642的博客-程序员秘密

2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...

Android 自定义广播实例以及系统广播(基础)_H_Yi_的博客-程序员秘密

今天讲讲Android的广播,Android自定义广播分为有序广播和无序广播,我们今天讲无序广播和系统广播。自定义广播有发送者和接受者,发送者只要设置名字和传递数据,接受者接收,接收者接收需要注册,可以在清单文件中注册也可以用代码动态注册。 先贴发送:package com.zking.sun.android_14_sender;import android.content.Intent;imp

批处理替换文件名中的指定字符_批处理命令替换文件中的字符_马朝旭的博客-程序员秘密

当你有很多类似的文件,文件名可以很规律却又有些不规律的时候...可以试试这个批处理。@echo offecho.&amp;echo.title 批量替换文件名中的部分字符串&amp;color 3fecho Note:echo 本批处理可批量替换本文件所在文件夹下的所有文件名的相同字符echo.&amp;echo.&amp;echo.&amp;echo.&amp;echo.&amp...

随便推点

python的groupby中函数详解_详解python中groupby函数通俗易懂_weixin_39583162的博客-程序员秘密

一、groupby 能做什么?python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算!对于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下:df[](指输出数据的结果属性名称).groupby([df[属性],df[属性])(指分类的属性,数据的限定定语,可以有多个).mean()(对于数据的计算方式——函数名称)举例如下:print(df["评分"...

消息队列中间件-常用的 MQ_消息队列中间件mq_lamp_yang_3533的博客-程序员秘密

RabbitMQRabbitMQ 是开源的分布式消息队列系统,用 erlang 语言开发。RabbitMQ 是 AMQP 的标准实现。AMQP(Advanced Message Queuing Protocol)高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件而设计。AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全性。消息中间件主要...

Spark性能调优_ZhaoYingChao88的博客-程序员秘密

前言继Spark性能调优基础篇讲解了每个Spark开发人员都必须熟知的开发调优与资源调优之后,本文作为《Spark性能优化指南》的高级篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题。数据倾斜调优调优概述有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是

Splunk实战(一)——索引器配置以及转发器安装配置说明_weixin_34318956的博客-程序员秘密

RipZ · 2016/05/30 10:360x00 前言本文将以连载的形式分享splunk在实战中的运用:从索引器&amp;amp;转发器的安装部署开始,到普通搜索&amp;amp;字段提取,再到报表&amp;amp;仪表盘定制以及告警等,详细的写出作者在实战中的经验(其实是遇到的坑),让大家看完之后可以少走些弯路。0x01 Splunk简述什么是Splunk?Splunk是机器数据的引擎。使用 Splunk 可收集...

fiddler 安装以及配置_春天的菠菜的博客-程序员秘密

一、fiddler抓包原理注意:Fiddler是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。当Fiddler退出的时候它会自动注销,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。二、安装打开官网,官网下载地址是https://...

实验二Java面向对象程序设计_weixin_33890499的博客-程序员秘密

一、单元测试了解三种代码:1、伪代码:类似于自然语言说明,描述实现逻辑思维2、产品代码:程序员编辑的开发代码,要求可修改、可移植3、测试代码:我理解是相当于开发软件在软件开放之前,程序员找到bug。比如一些边界情况的测试。二、TDD(测试驱动开发)1、概念:先列出测试表,编写测试用例,再写开发代码2、先考虑边界值,能够减少二次开发和调试bug的工作量三、面向对象三要素 1、封装...

推荐文章

热门文章

相关标签