zoukankan      html  css  js  c++  java
  • 线程中调用service 处理具体的业务

      线程中调用service 处理具体的业务,在多线程时使用@Autowired总是获取不到bean,原因是:new thread不在spring容器中,也就无法获得spring中的bean对象。

      线程入口,直接写个main方法执行的,运行则获取不到service。需要在 SpringBootApplication 中启动。

       

    /******************************************* BeanContext 类 *******************/
    /*************************************用静态方法直接取的容器中的spring对象*****************/
    import org.springframework.beans.BeansException;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.ApplicationContextAware;
    import org.springframework.stereotype.Component;

    @Component
    public class BeanContext implements ApplicationContextAware {

    // Spring应用上下文环境
    private static ApplicationContext applicationContext;

    /*
    * 实现了ApplicationContextAware 接口,必须实现该方法;
    * 通过传递applicationContext参数初始化成员变量applicationContext
    */
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    BeanContext.applicationContext = applicationContext;
    }

    public static ApplicationContext getApplicationContext(){
    return applicationContext;
    }

    @SuppressWarnings("unchecked")
    public static <T> T getBean(String name) throws BeansException {
    return (T)applicationContext.getBean(name);
    }

    public static <T> T getBean(Class<T> clz) throws BeansException {
    return (T)applicationContext.getBean(clz);
    }
    }
    /******************************************* TestHandler 类 *******************/
     

    
    

      

  • 相关阅读:
    HTTP状态码详解
    Django QuerySet 进阶
    初识Django
    小白学习之路,网络编程(下)
    小白学习之路,网络编程(上)
    小白学习之路,面向对象补充
    用正则表达式实现的计算器
    小白学习之路,初识面向对象
    小白学习之路,常用模块
    函数补充知识
  • 原文地址:https://www.cnblogs.com/bianchengxia/p/9240376.html
Copyright © 2011-2022 走看看