自动装配
一:bena的属性赋值,只能是我们手动赋值吗?应该有静态和动态两中赋值方式;
二:自动装配是spring满足bean依赖的一种方式,spring会在上下文中自动搜索然后,自动给bean的属性赋值;
三:三种方式:
一:xml
二:java
三:隐式 byName:bean的id名称要和set注入名称一致,byType:类型一致即可,id可以省略;
@Data public class Cat { public void eat() { System.out.println("老鼠"); } } @Data public class Dog { public void eat() { System.out.println("狗肉"); } } @Data public class Person { private String name; private Cat cat; private Dog dog; }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="cat" class="com.nbg.pojo.Cat"></bean> <bean id="dog" class="com.nbg.pojo.Dog"></bean> <!--byName:会自动在容器上下文中搜索,看有没有和对象属性set方法后面值相同的的bean id,即:bean id → cat = setCat 则注入成功-->
<!--byType:会自动在容器上下文中搜索,看有没有和对象属性类型形同的bean属性类型,即:cat → cat,dog → dog-->
<bean id="person" class="com.nbg.pojo.Person" autowire="byName"> <property name="name" value="张三"/> </bean> </beans>