Spring Bootコンテキストを取得する

5075 ワード

Springでは、ContextLoaderによってコンテキスト環境を取得することができる.
WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
しかしこの方式はSpring Bootでは無効となります.本論文では三つの方式がSpring Bootコンテキスト環境を取得することを提供する.
1.自動注入
@Autowired
WebApplicationContext webApplicationConnect;
2.実現ApplicationContextAwareインターフェース
  /** * spring bean     * * @author simon * @create 2018-09-10 9:51 **/
    @Component
    public class SpringBeanTool implements ApplicationContextAware {
      /** *         */
      private static ApplicationContext applicationContext;

      @Override
      public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
      }
      /** *   applicationContext * * @return * applicationContext */
      public static ApplicationContext getApplicationContext() {
        return applicationContext;
      }

      /** *   name   Bean. * * @param name * bean name * @return * bean */
      public static Object getBean(String name){
        return getApplicationContext().getBean(name);
      }

      /** *   class  Bean. * @param clazz * class * @param  * @return */
      public static  T getBean(Class clazz){
        return getApplicationContext().getBean(clazz);
      }

      /** *   name,  Clazz     Bean * @param name * bean name * @param clazz * class * @param  * @return * bean */
      public static  T getBean(String name,Class clazz){
        return getApplicationContext().getBean(name, clazz);
      }
    }
3.ブートクラスでの設定
 public class SpringBeanTool {
        private static ApplicationContext applicationContext;

        public static ApplicationContext getApplicationContext(){
            return applicationContext;
        }

        public static void setApplicationContext(ApplicationContext applicationContext){
            SpringContextUtil.applicationContext = applicationContext;
        }

        public static  T getBean(String name){
            return (T)applicationContext.getBean(name);
        }

        public static  T getBean(Class clazz){
            return applicationContext.getBean(clazz);
        }
    }
ブートクラス:
public static void main(String[] args) {
    ApplicationContext context = SpringApplication.run(Application.class, args);
    SpringBeanTool.setApplicationContext(context);
}