前言:
与定义CommandLine的传统方式相比,SpringBoot方式省略了添加OPTIONS的复杂操作,不需要设置required、hasArg、argName等参数,但与此同时,也是该方式的一种弊端,对于想展示的参数详细信息需手动配置输出。
完整代码
1、参数实体类:
package com.example.demo.bean;
import lombok.Data;
/**
* @Author: yc
* @Description:
* @Date: 2021/08/16/11:08
*/
@Data
public class User {
String name;
String age;
}
2、接收参数Config:
package com.example.demo.Utils;
import com.example.demo.bean.User;
import org.springframework.boot.ApplicationArguments;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Author: yc
* @Description:
* @Date: 2021/08/16/11:07
*/
@Component
public class CmdConfig {
// 将方法注入到容器中,值为返回值对象
@Bean
public User getUser(ApplicationArguments arguments)
{
// 获取输入的参数(--n,--a)
List<String> n = arguments.getOptionValues("n");
List<String> a = arguments.getOptionValues("a");
User user = new User();
try
{
user.setName(n.get(0));
user.setAge(a.get(0));
}catch (Exception e)
{
System.out.println("Exception: " + e.getMessage());
}
return user;
}
}
3、命令行处理类:
package com.example.demo.Utils;
import com.example.demo.bean.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* @Author: yc
* @Description:
* @Date: 2021/08/16/11:07
*/
@Component
@Slf4j
public class Command implements CommandLineRunner {
// 获取到注入的User对象
@Resource
private User user;
// 重写CommandLineRunner类的run方法
@Override
public void run(String... args) throws Exception {
// 将user对象打印
System.out.println(user.toString());
}
}
4、SpringBoot执行类:
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Demo2Application {
public static void main(String[] args) {
SpringApplication.run(Demo2Application.class, args);
}
}
5、打包jar:
mvn install
或者在idea右侧,点开maven,点击install
6、在控制台输入命令:
java -jar “jar包名称” “–定义接收的有效参数=参数的值”
例如:
java -jar demo2-0.0.1-SNAPSHOT.jar --n=xiaoming --a=20
结果如下图: