복붙노트

[SPRING] Spring Boot : @Bean annotated 메소드 내에서 명령 행 인자 가져 오기

SPRING

Spring Boot : @Bean annotated 메소드 내에서 명령 행 인자 가져 오기

나는 스프링 부트 애플리케이션을 구축 중이며 @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);
    }
}

내 문제를 어떻게 해결할 수 있습니까?

해결법

  1. ==============================

    1.시험

    시험

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

    2.

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

    실행하려면 java -jar myCode.jar을 사용하십시오. --cmdLineArgument = helloWorldValue

  3. ==============================

    3.다음과 같이 앱을 실행하는 경우 :

    다음과 같이 앱을 실행하는 경우 :

    $ java -jar -Dmyproperty=blabla myapp.jar
    

    또는

    $ gradle bootRun -Dmyproperty=blabla
    

    그런 다음이 방법으로 액세스 할 수 있습니다.

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

    4.다음과 같이 앱을 실행할 수 있습니다.

    다음과 같이 앱을 실행할 수 있습니다.

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

    코드 내의이 시스템 프로퍼티의 값에 액세스 할 수 있습니다.

  5. from https://stackoverflow.com/questions/39269831/spring-boot-get-command-line-argument-within-bean-annotated-method by cc-by-sa and MIT license