如何在学Ioc和DI创建对象时遇到一个问题,setBookDao(BookDao bookDao)是将对象给上面那个,但是其他的代码没有调用setBookDao方法?

img


在学Ioc和DI创建对象时遇到一个问题,如图,setBookDao(BookDao bookDao)是将对象给上面那个,但是其他的代码没有调用setBookDao方法,那它又是这么获取对象的。还是说我没有理解setBookDao的意思?

如果没有setBookDao方法,你在xml文件中创建BookService对象的时候,是无法使用property标签给当前Bean对象中的属性注入值的。因为property标签就是通过对象中的set方法注入属性值,就像你的代码,如果没有setBookDao方法,<property name="bookDao" ....>这行代码是无效的...

这就是使用容器的好处。对象的组装由容器完成。如果没有使用容器,需要自己new对象,set属性。使用容器后,我们提供配置(xml文件方式或注解方式),告诉容器要如何创建并组装一个对象,我们用的时候直接从容器中拿就可以了。