一 对象的依赖注入 通过set方法 (通过Bean注入,就是后面的ref)
需要注入的类中要有一个属性,这个属性就是被注入的类,还要创建该属性的set方法,因为我们是通过set方法进行注入的,所以进行如下的书写
然后在Spring 的核心配置文件中开始进行编写注入
需要注意的是 property标签中的name属性里面填的是set方法的名字,但是要去掉set并且首字母小写,虽然看似就是属性的名字,其实不是,如果你把set方法后面的名字进行修改了,这个name里面的值也应该修改,然后后面的ref属性是指的对象的引用(针对于XML文件),通过xml文件中id唯一标识性把userDao给引入进来(是通过Bean),这样就完成了对象注入的set方法。
这个注入其实就可以看成 。set方法里面不是有参数吗?这个注入就相当于是把这个对象直接给这个set方法传过去了。
结果执行出来就是
如果你没有通过容器的方式去创建userService对象的话,这个注入就不起作用,并且会报空指针异常,因为你的属性userDao都没有进行赋值
二 对象的依赖注入通过构造器(通过Bean注入,就是后面的ref)
同样需要注入的类中要有一个属性,这个属性就是被注入的类,然后我们通过构造器来进行注入,所以我们也需要写出构造方法(有参构造,但我们一般写了有参构造也要写无参构造,不然我们以后写无参构造就会报错)
然后我们去Spirng的核心文件去进行依赖注入
因为我们是通过构造器构造,我们用的标签就是constructor,需要注意的是这里的name属性和set的name属性指的不一样,这里的name属性里面的值是需要跟有参构造里面的形式参数一样,后面的ref指的就是XML文件中的id。
通过构造器来进行注入就相当于是把需要注入的对象直接传给构造器里面的形式参数,然后对属性进行赋值。
这里同样通过new对象也是无法进行注入的。
运行结果如下:
三 普通数据类型的依赖注入(这里我们把String类型也当作普通数据类型)(通过set方法来进行注入的)
首先我们要进行普通数据的依赖注入,肯定要有普通数据,注意,一定要生成set方法。这里为了方便我把普通数据的依赖注入的成果写到save方法中
然后我们在Spring的核心配置文件中进行依赖注入
property标签中的name参数就是set方法后面首字母小写的名称,因为是普通数据,注入的时候使用的是value
ref是针对的对象的引用。
运行结果:
四 关于引用数据类型的依赖注入
首先我们要进行引用数据的依赖注入,肯定要有引用数据,注意,一定要生成set方法。这里为了方便我把普通数据的依赖注入的成果写到save方法中
接下来我们就在Spring的核心配置文件中去进行配置 现在配置的是List集合
List的集合的配置也是用的是property标签,name参数里面也是set方法后面的首字母小写的名称,
内部用的是list子标签(除了list子标签,里面还有其他的标签,像Map之类的),因为这个List集合里面存的String(这里我们也把String看成普通的数据),所以我们用的是Value,如果里面存的是引用数据类型(对象)我们就要用ref标签。
运行结果:
现在配置的是Map集合
Map里面存的是键值对,然后我们property内部的子标签用的是Map,然后是里面存的是键值对,又用了子标签entry, entry里面的key属性就是map里面的key的名称,叫什么都可以,由于map里面的值是存的引用,所以我们这里在entry标签里面的属性用的是 value-ref,如果是普通数据就直接用value就行。里面的value里面存的是个对象,对象里面也有值,是普通数据,我们就在下面的bean里面直接根据普通数据直接进行注入了
运行结果是:
现在配置的是properties(这个比较特殊,在后面也会经常用到,我们在这里也对它进行配置)
properties比较特殊,其实它也是键值对的存储,不过两个都是字符串,然后键写在属性的位置,而值要写在标签的中间。
运行结果:
注意:后面我都是通过set方法来进行注入的,其实也可以通过构造器来进行注入
其实注入的方式基本上就这两种:set方法,还要构造器(构造方法)