由程序员创建的对象交给 ioc容器来创建并管理,这样做的好处是可以减少代码的耦合性和入侵性。早期前辈们使用了面向接口编程去解决这一问题,但依旧存在耦合性和入侵性,比如BookServiceImpl 里定义了 private BookDao bookDao,我们在 BookServiceImpl 里调用了 bookDao 里的某个方法,如果不使用依赖注入,这时候就需要我们手动去new 这个bookDao的某个具体实现类了,这样就不好了,依赖注入目的是如何将对象从ioc容器取出来用,我们有两种方式:一种是在 xml文件里定义,另一种是使用注解(@Autowrited)。我们在xml里定义好 BookServiceImpl 的属性 bookDao(通过ref关联),确定 bookDao的值 所对应的是 bookDaoImpl 还是 bookDaoImpl1 。利用反射机制(全限定类名),ioc容器会自动的创建bookDaoImpl 这个对象然后用setter方法注入到 BookServiceImpl 的 一个name为bookDao的属性。关于setter注入,原理是: set拼接首字母大写后的name。
SpringIoc 个人理解
最新推荐文章于 2024-05-20 10:24:40 发布