2017-05-09 3 views
3

Frage: Wie kann ich auf die varargs der Startmethode innerhalb einer Feder @Bean wie MyService unten zugreifen?Wie kann man in einer Spring Bean auf Befehlszeilenargumente zugreifen?

@SpringBootApplication 
public class MyApp { 
    public static void main(String[] args) { 
     SpringApplication.run(MyApp.class, args); 
    } 
} 

@Component 
public MyService { 
     public void run() { 
       //read varargs 
     } 
} 

java -jar [jarfile] [Befehlszeilenargumente]

+0

die varargs meinen Sie das? die Argumente, die an Ihre Hauptklasse oder überhaupt an Vararg weitergegeben werden? – pvpkiran

+0

Ich meine die Argumente, die beim Start des Jar über die Befehlszeile übergeben werden. – membersound

+2

Wie wäre es mit der Implementierung der CommandLineRunner-Klasse, die eine Methode ausgeführt hat (String ...), wo Sie diese Varargs erhalten können – pvpkiran

Antwort

7

Im Frühjahr Quellcode analysieren, so scheint es, dass der Frühling eine Singleton Bohne vom Typ registriert ApplicationArguments bei dem Verfahren prepareContext der Klasse SpringApplication

context.getBeanFactory().registerSingleton("springApplicationArguments", 
      applicationArguments); 

Also ich denke, Sie diese Bohne in Ihrem Service autowire können:

2

Dank der Hauch von @pvpkiran:

@Component 
public class CommandLineHolder implements CommandLineRunner { 
    private String[] args; 

    @Override 
    public void run(String... args) throws Exception { 
     this.args = args; 
    } 

    public String[] getArgs() { 
     return args; 
    } 
} 
Verwandte Themen