KKB : spring的自动注入:byName、byType(可能会报错)、constructor

自动注入(由程序自动给属性赋值)

autowire : no 默认自动装配

使用 byName自动装配

它匹配的原理是:属性名 和 bean的id 一致

没有使用自动装配的配置文件:

使用自动装配的Spring配置文件:减少一行代码

UserServiceImpl文件:

使用byType自动装配

匹配的原则:属性的类型 和 id对象的类型相同,本质上是根据的类对象的无参构造方法(如果写了有参构造,记得要加上无参构造,因为有参构造会覆盖掉无参构造)

我们先修改id名和属性的名称,让它们不一致

Spring配置文件:

UserServiceImpl文件:

使用的自动注入方式为根据类型注入

UserServiceImpl文件中的属性类型为 UserDaoImpl , 查看Spring配置文件中的class找到了id为uDao的bean,所以注入成功

byType缺点是:当有多个相同类型的bean标签时,自动注入会直接在配置文件上报错

如果类中使用有参构造,那么在使用byType的时候会报 错误:

所以我们需要加上无参构造

使用constructor自动注入

 

该自动注入就是依赖的构造方法注入

在属性的类中,我们需要生成一个构造方法

Spring配置文件,只需修改autowire的内容为constructor

猜你喜欢

转载自blog.csdn.net/awodwde/article/details/112791264