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

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

发布了79 篇原创文章 · 获赞 2 · 访问量 2280

猜你喜欢

转载自blog.csdn.net/liuji0517/article/details/104606122