美文网首页
如果在不是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