当我们配置启动1个java 项目通常需要带一些参数
例如 -Denv = uat , --spring.profiles.active=dev 这些
那么用-D 和 – 的写法区别是什么?
双横线写法
其中这种写法基本上是spring 和 spring 框架独有
最常用的无非是就是上面提到的 --spring.profiles.active=dev 啦
这种写法必须写在 java xxx.jar 的后面
例如:
java xxx.jar --spring.profiles.active=dev
如果我们想自己在java 程序里自定义1个custom的 用-- 指定的参数
可以参考下面代码
@SpringBootApplication
@PropertySource("classpath:query.properties")
@Slf4j
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public ApplicationRunner applicationRunner() {
return new ApplicationRunner() {
@Override
public void run(ApplicationArguments args) throws Exception {
log.info("customParam: " + args.getOptionValues("customParam"));
}
};
}
如果需要在IDEA的run configuration 配置, 则需要加在 CLI Arguments 那个field里
如下:
横线D写法 -D
这种写法通常是配置系统和VM的参数
最常用的无非是 配置代理
-D参数 必须写在java 和 xxx.jar 的中间
例如:
java -Dhttp.proxyHost=xxxx -Dhttp.proxyPort=7890 xxx.jar --spring.profiles.active=dev
这种方法配置的参数可以在代码中用System.getProperty()获取
当然在代码里用System.setProperty() 设置也一样的
例如:
@Component
@Slf4j
@EnableAsync
public class MyInitializer {
@PostConstruct
public void init() {
log.info("Application started...");
//setProxy();
printProxy();
}
private void setProxy() {
System.setProperty("https.proxyHost", "10.0.1.223");
System.setProperty("https.proxyPort", "7890");
}
private void printProxy(){
log.info("https.proxyHost: " + System.getProperty("https.proxyHost"));
log.info("https.proxyPort: " + System.getProperty("https.proxyPort"));
}
在IDEA里, 则需要把这种参数写在 VM参数的field里
如下: