| 知乎專欄 | 多維度架構 | | | 微信號 netkiller-ebook | | | QQ群:128659835 請註明“讀者” |
開發命令行程序通常我們不需要 Tomcat,所以不需要引入 spring-boot-starter-web 依賴,spring-boot-starter 依賴不含Tomcat。
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>cn.netkiller</groupId> <artifactId>parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>cn.netkiller</groupId> <artifactId>command</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Command Line</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
package cn.netkiller.cmd;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application implements CommandLineRunner {
private static Logger logger = LoggerFactory.getLogger(Sb2runnerApplication.class);
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... args) throws Exception {
logger.info("服務已啟動,執行command line runner。");
for (int i = 0; i < args.length; ++i) {
logger.info("args[{}]: {}", i, args[i]);
}
}
}
% java -jar target/command-0.0.1-SNAPSHOT.jar --host=ww.netkiller.cn java spring boot --help -v
package cn.netkiller.component;
import java.util.Arrays;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Component;
@Component
@Order(1)
public class Command implements ApplicationRunner {
private final static Logger logger = LoggerFactory.getLogger(Command.class);
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("==ApplicationRunner=====" + Arrays.asList(args.getSourceArgs()));
System.out.println("==getOptionNames========" + args.getOptionNames());
System.out.println("==getOptionValues=======" + args.getOptionValues("foo"));
System.out.println("==getOptionValues=======" + args.getOptionValues("developer.name"));
// System.exit(0);
}
}