自动注入(由程序自动给属性赋值)
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