SpringBootでのmainメソッド注入サービス

1414 ワード

この文章を参考にする
スプリングbootでmainメソッドを使用すると通常はサービスを注入できませんが、後でこのような場合もある可能性がありますので、固定書き方で直接コピーすればいいツールクラスで行います.
@Component
public class SpringContextUtil implements ApplicationContextAware {
    private static ApplicationContext applicationContext = null;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if (SpringContextUtil.applicationContext == null) {
            SpringContextUtil.applicationContext = applicationContext;
        }
    }

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }

    public static  T getBean(Class clazz) {
        return getApplicationContext().getBean(clazz);
    }

    public static  T getBean(String name, Class clazz) {
        return getApplicationContext().getBean(name, clazz);
    }

}

次に注入が必要な場所で静的サービスを作成します
 private static Service service;

次に、mainメソッドを使用します.
  public static void main(String[] args) {
        SpringApplication.run(**Application.class,args);
        ApplicationContext applicationContext = SpringContextUtil.getApplicationContext();
        service = applicationContext.getBean(**Service.class);
    }