• 线程中调用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 类 *******************/
     

    
    

      

  • 相关阅读:
    Flume-概述-安装
    Hive-函数
    Hive_查询
    Hive-DML数据操作
    JDBC-文档
    Hive-DDL数据定义
    Hive-数据类型
    理解RESTful架构
    REST介绍
    [转]详述DHCP服务器的三种IP分配方式
  • 原文地址:https://www.cnblogs.com/bianchengxia/p/9240376.html
Copyright © 2020-2023  润新知