Java spring框架的一个问题请教

Spring中service对象是用核心容器ApplicationContext.getBean()创建的,那么dao对象为什么不能用核心容器创建lrc下载,而要使用依赖注入的方式创建呢,我用核心容器创建dao,发现运行时错误,请教各位大佬。

依赖注入和getBean()虽然创建bean的方式不同但效果都是一样的,最终都是spring容器进行管理,请问你报的什么错误

????容器在初始化的时候就已经创建好了对象,跟getBean这个方法有什么关系?

是这样,我在控制层定义了两句 话:ApplicationContext ac =new ClassPathXmlApplicationContext("bean.xml"); 和IAccountService as = (IAccountService) ac.getBean("accountService");  这 样就把service对象获取了。我意思是我在service层同样用这两句,只不过把getBean();里面的字符串改一下应该是可以获取dao对象 的,即 ApplicationContext ac =new ClassPathXmlApplicationContext("bean.xml");和 IAccountDao ad = (IAccountDao) ac.getBean("accountDao"); 但是不行,报错的话,因为貌似是 循环错误,运行了大概10S才停,一堆红字,我没细看了。如果在Service层定义private AccountDao dao; 然后定义set方 法,用set依赖注入是可以获取dao对象的。

是我用词不准确,我在Control层用getBean("AccountService")获取了sevice对象,那么我在Service层用同样的 方法无法获取dao对象,而必须使用依赖注入的方法,在service层用private AccountDao dao; 然后定义set方法,在 bean.xml用set依赖注入的方式才能创建出对象。

两个容器都不一样了。。

你在容器里的service类里new了一个容器,这个容器又会扫描一遍,继续new一个容器,你没想过吗???

你在service中得到applicationContext不能用new,实现这个ApplicationContextAware接口,重写接口里的方法,通过这个方法得到applicationContext

是这么回事,已经不是一个容器了,感谢大佬指点,明白了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值