3

私はSpringBootアプリケーションを構築しており、@Beanでアノテーションされたメソッド内でコマンドライン引数を読み込む必要があります。サンプルコード:Spring Boot:@Beanアノテーション付きメソッド内でコマンドライン引数を取得する

@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); 
    } 
} 

問題を解決するにはどうすればよいですか?

答えて

2

あなたはこのようなあなたのアプリを実行した場合

@Bean 
public SomeService getSomeService(@Value("property.key") String key) throws IOException { 
    return new SomeService(key); 
} 
+0

を実行するために、私はその注釈を使用したことがないし、おそらく私が間違っているものの、 '@value( "#{systemProperties.propertyName}")すべきではない文字列key'? – exoddus

+1

ありがとう、それは動作します。正しいプレースホルダは$ {property.key}です。 –

0

を試してみてください。

$ java -jar -Dmyproperty=blabla myapp.jar 

または

$ gradle bootRun -Dmyproperty=blabla 

その後、あなたはこのようにアクセスすることができます。

@Bean 
public SomeService getSomeService() throws IOException { 
    return new SomeService(System.getProperty("myproperty")); 
} 
0

あなたはこのようなあなたのアプリを実行することができます。

$ javaの-server -Dmyproperty = blabla -jar myapp.jar

とコードで、このシステムプロパティの値にアクセスすることができます。

4
@Bean 
public SomeService getSomeService(
    @Value("${cmdLineArgument}") String argumentValue) { 
    return new SomeService(argumentValue); 
} 

使用java -jar myCode.jar --cmdLineArgument=helloWorldValue

関連する問題