webentwicklung-frage-antwort-db.com.de

Spring Boot: Ermittelt das Kommandozeilenargument innerhalb der mit @Bean-Annotationen versehenen Methode

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?

5
Taras Velykyy

versuchen

@Bean
public SomeService getSomeService(@Value("${property.key}") String key) throws IOException {
    return new SomeService(key);
}
4
freakman
 @Bean
 public SomeService getSomeService(
   @Value("${cmdLineArgument}") String argumentValue) {
     return new SomeService(argumentValue);
 }

Verwenden Sie zum Ausführen Java -jar myCode.jar --cmdLineArgument=helloWorldValue

8
Will Humphreys

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"));
}
2
exoddus

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.

0