Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean之间的依赖关系。
我们之前没有 Spring 的时候,都是通过 new 的方式实例化类,调用方法、属性啥的,但是现在有了 Spring 之后,我们可以通过 Spring 的依赖注入来对这些个类啊啥的进行管理。这样既做到了解耦,还做到了代码的美化。
我们主要来学习其中的两种依赖注入的方式,一个是基于构造方法的,还有一个是基于 setter 方式的。
一、构造方法
我们先创建一个老师类,然后给这个老师类定义一些东西。
然后自己弄一下 get、set、toString、有参构造等方法。
就弄一个类不够,在弄一个学生类。
.同样,自己加一下 get、set、toString、有参构造等方法。
然后我们去我们的 Bean.xml 中配置一下这两个 Bean。这里我们需要使用嵌套标签 constructor-arg 来为我们的属性进行赋值
就这样,这里注意一下,顺序要和构造方法的顺序一样哦,而且,value 和 ref 注意别写错!!!测试一波~~~
是 OK 的哈,没有问题。
当然哈,这样虽然没有错,但是,如果我们把 constructor-arg 的位置修改一下,就会报错,为了不报错,我们采用另外的一种方式
我们使用 constructor-arg 的 type 属性
我们顺便打乱了顺序,我们再来执行一下
可以看到哈,也是没有错的。
但是,同样这个注入的方式也有漏洞,如果两个属性,或者更多属性都是 int 呢,这就完蛋了,所以,我们引入最好的方式,索引。
我们根据这个位置,来修改 bean.xml
可以了,再来测试一波
OK 的哈。
我们以后再有这个传递的时候,我们就使用索引的这个方式。
二、基于 setter 方式
基于 setter 的方式,我们只需要修改 bean.xml 就可以了。
我们舍弃之前的 constructor-arg,改成 property
name 对应 构造方法中的属性名称,value 就是具体的值,ref 就是引用的其他的 bean 的 id。
这里注意的是,需要把上面的那个 id 为 student 的 bean 还有 teachar 的 bean 都注释掉,不了会报错,然后我们运行一下。
报错了,这里我需要说明一下,我这里是因为没有添加无参构造函数导致的,各位自己加一下,然后再运行一下。
是没有问题的~~~
当然啊,我们也可以这样去写,再来看一个
然后我们再来测试一下
完美运行~~~
这种方式叫做内部注入 Bean 的方式。
好了,这一篇就先到这里,先看着,慢慢消化。
各位,还有一件事,我的官网要准备从新制作,有没有什么好的提议,用什么框架,有什么功能,欢迎各位小伙伴提供~~~(直接评论在评论区即可,我到时候会整理起来)