美文网首页
如果在不是controller的地方想要注入dao或则servi

如果在不是controller的地方想要注入dao或则servi

作者: momdiemg | 来源:发表于2019-12-30 16:12 被阅读0次

    两种解决办法

    从已有的spring上下文取得已实例化的bean。通过ApplicationContextAware接口进行实现。
    当一个类实现了这个接口(ApplicationContextAware)之后,这个类就可以方便获得ApplicationContext中的所有bean。换句话说,就是这个类可以直接获取spring配置文件中,所有有引用到的bean对象。

    @Component 
    public class SpringContextUtil implements ApplicationContextAware { 
    private static ApplicationContext context; 
    @Override 
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {  
            SpringContextUtil.context = applicationContext; 
    } 
    public static ApplicationContext getContext(){
          return context;
     } 
    }
    
    然后再需要用到的地方
    //@component 不用加这个注解
    class test{
      @Autowired
      Dao dao;
    public void a(){
      dao=SpringContextUtil.getContext().getBean(Dao.class);
    }
     
    }
    
    @component
    class test{
    @Autowired 
    private GlobalItemRepository globalItemRepository; 
    @Autowired
     private GlobalItemService globalItemService;
     @Autowired private ClientUserRepository clientUserRepository; 
    private static GlobalItemRepository globalItemRep;
     private static GlobalItemService globalItemSe; 
    private static ClientUserRepository clientUserRep; 
    
    //初始化构造完成后注入上面的service或者dao,在spring容器启动的时候执行,可作为一些数据的常规化加载
    @PostConstruct public void init(){ 
    globalItemRep = this.globalItemRepository; 
    globalItemSe = this.globalItemService; 
    clientUserRep = this.clientUserRepository;
     }
    
    
    }
    
    
    
    

    相关文章

      网友评论

          本文标题:如果在不是controller的地方想要注入dao或则servi

          本文链接:https://www.haomeiwen.com/subject/qejmoctx.html