Spring_特殊值的注入问题和各种类型的自动装配
- 1.set两种方式的区别
- 第4中赋值方式:自动装配(只适用于ref类型)
- 使用注解定义bean
1.set两种方式的区别


(1)把值写到value属性里面,必须加引号,写到子元素里不需要加
(2)type属性区别

(3)参数值包含特殊符号

子元素可以有另外一种选择



构造方法:

处理空值



报错原因:

在创建对象时,是通过反射调无参构造
当写了一个构造函数时,系统就不会再产生无参构造了


使用构造器方式给list赋值:



第4中赋值方式:自动装配(只适用于ref类型)
约定由于配置
可以不配置ref,就可以将teacher赋值给course


根据类型自动装配:

根据构造方法自动装配:


构造方法需要一个Teacher类型的,看看bean中有没有定义的有这样的,有就自动注入。该类的构造方法需要一个Teacher,

为了避免在自动装配的时候给每一个bean都要写autowire,可以一次性给所有的bean都自动装配

对于子bean 的自动装配类型可以自定义设置,比如全局设置的是byName,子bean可以设置成byType
在这里插入图片描述

使用注解定义bean
配置扫描器



把这个类所在的包放进去,就可以扫描这个包下面的东西,如果要扫描多个包,可以在上面的包后面“,”再加上包的名字。
(1)通过注解声明一下该类准备放入到ioc容器
(2)告诉容器,在扫描时不要忘了在这个包下面有一个声明需要加入到ioc容器里。找这个dao包下有没有注解,如果有,就将这个类纳入ioc容器
两种方式的对应

Component适用的范围太大了,service,dao,都可以用它,
(1)修饰dao层,使用@Repository




![[极客大挑战 2019]Upload](https://img-blog.csdnimg.cn/4972ec012b2a43de8f2f29e4bd32a903.png)















