Spring boot — Argument and Profile

Ngchiwa Ng
1 min readJan 10, 2021

--

Argument:

  • optional argument
java -jar xxx.jar --arg1=abc
  • non optional argument
java -jar xxx.jar abc def
  • system properties
java -jar -D abc=def xxx.jar --arg1=abc

prepare: application.properties

optional1=xxxx

code : Using

  • annotation Value(“${optional1}”) to get optional argument
    (need pre-define in application.properties)
  • System.getProperty(“systemProperty1”) //get -DsystemProperty1=$value
package com.anson.demo.controllers;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;@RestController
public class HelloWorldController {
@Value("${optional1}")
String optional1;
@GetMapping("/test")
public Object test(){
HashMap<String, String > a = new HashMap<>();
a.put("optional1", optional1);
a.put("systemProperty1", System.getProperty("systemProperty1"));
return a;
}

}

run

java -jar  -DsystemProperty1=vvvv build/libs/demo-0.0.1-SNAPSHOT.jar --optional1=bbb

will get in api

{ 
"optional1": "bbb",
"systemProperty1": "vvvv"
}

using ApplicationArguments to get arguments (no need predefine)

@Resource
ApplicationArguments applicationArguments;
@GetMapping("/test")
public Object test(){
HashMap<String, String > a = new HashMap<>();
//option1
a.put("optional1", optional1);
a.put("systemProperty1", System.getProperty("systemProperty1"));
a.put("applicationArguments.getNonOptionArgs", applicationArguments.getNonOptionArgs().toString());
a.put("applicationArguments.getOptionNames", applicationArguments.getOptionNames().toString());
applicationArguments.getOptionNames().forEach(name -> {
a.put("applicationArguments.getSourceArgs:"+name, applicationArguments.getOptionValues(name).toString());
});
a.put("applicationArguments.getSourceArgs", applicationArguments.getSourceArgs().toString());
return a;
}

Profile:

create

application.properties (common setting)

spring.profiles.active=dev  //default 
optional1=aaaaa

application-dev.properties

optional2=dev

application-prod.properties

optional2=prod

code

@Value("${optional1}")
String optional1; //get value from application.properties
//get value from application-$active.properties
@Value("${optional2}")
String optional2;

run

java -jar  build/libs/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

--

--

Ngchiwa Ng
Ngchiwa Ng

Written by Ngchiwa Ng

Backend/iOS Engineer, rock the world

No responses yet