Ich erstelle eine Spring Boot-Anwendung und muss das Befehlszeilenargument in der mit @Bean annotierten Methode lesen. Siehe Beispielcode:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public SomeService getSomeService() throws IOException {
return new SomeService(commandLineArgument);
}
}
Wie kann ich mein Problem lösen?
versuchen
@Bean
public SomeService getSomeService(@Value("${property.key}") String key) throws IOException {
return new SomeService(key);
}
@Bean
public SomeService getSomeService(
@Value("${cmdLineArgument}") String argumentValue) {
return new SomeService(argumentValue);
}
Verwenden Sie zum Ausführen Java -jar myCode.jar --cmdLineArgument=helloWorldValue
Wenn Sie Ihre App folgendermaßen ausführen:
$ Java -jar -Dmyproperty=blabla myapp.jar
oder
$ gradle bootRun -Dmyproperty=blabla
Dann können Sie auf diese Weise zugreifen:
@Bean
public SomeService getSomeService() throws IOException {
return new SomeService(System.getProperty("myproperty"));
}
sie können Ihre App folgendermaßen ausführen:
$ Java -server -Dmyproperty = blabla -jar myapp.jar
und kann auf den Wert dieser Systemeigenschaft im Code zugreifen.