spring 用于注入数据的注解
1、在 spring 配置文件中引入 context 约束
 xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
2、开启注解支持
<!--开启spring 对注解的扫描,并指定被扫描的包-->
    <context:component-scan base-package="com.momo.entity"/>
    
@Autowired
 作用:自动按照类型进行自动注入。不支持id匹配。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">
<!--开启spring 对注解的扫描,并指定被扫描的包-->
    <context:component-scan base-package="com.momo.entity"/>
    <bean id="cat" class="com.momo.entity.Cat"/>
    <bean id="cat1" class="com.momo.entity.Cat"/>
    <bean id="dog" class="com.momo.entity.Dog"/>
    <bean id="user" class="com.momo.entity.User"/>
</beans>
需要注入的类。User
package com.momo.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    @Autowired
    private Cat cat;
    @Autowired
    private Dog dog;
    @Value("张三")
    private String name;
}
注入成功。
如果在容器里找不到对象,就会报错。@Autowired(required = false) required 设置为 false 表示对象可以为 null。
 @Autowired(required = false)
    private Cat cat;
或者:
  
  @Nullable
    private Cat cat;
@Qualifier
 @Autowired 根据类型自动装配。在加上@Qualifier 则可以根据byName 的方式实现自动装配。
 作用:
 在自动按照类型注入的基础之上,在按照bean 的id注入。
 @Qualifier 不单独使用,必须和 @Autowired 一起使用。
 value : 指定bean 的id
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">
<!--开启spring 对注解的扫描,并指定被扫描的包-->
    <context:component-scan base-package="com.momo.entity"/>
    <bean id="cat1" class="com.momo.entity.Cat">
        <property name="name" value="李四"/>
    </bean>
    <bean id="cat" class="com.momo.entity.Cat">
        <property name="name" value="王五"/>
    </bean>
    <bean id="dog" class="com.momo.entity.Dog"/>
    <bean id="user" class="com.momo.entity.User"/>
</beans>
package com.momo.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.lang.Nullable;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    @Autowired
    @Qualifier(value = "cat1")
    private Cat cat;
    @Autowired
    private Dog dog;
    @Value("张三")
    private String name;
}
还可以将注解加在 set 方法上
package com.momo.entity;
import org.springframework.beans.factory.annotation.Value;
public class Dog {
    private String name;
    @Value("旺财")
    public void setName(String name) {
        this.name = name;
    }
    public void eat(){
        System.out.println("狗吃骨头"+name);
    }
}
@Resource
@Resource 这个注解时  JAVA自带的注解。
直接按照bean 的id 注入,且只能注入 bean 类型。
name: 指定的bean 的id
package com.momo.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.lang.Nullable;
import javax.annotation.Resource;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    @Resource(name = "cat")
    private Cat cat;
    @Autowired
    private Dog dog;
    @Value("张三")
    private String name;
}
@Resource 如有 指定name属性,先按照 属性进行 byName 的方式装配。
 其次在进行默认的byName 方式进行装配
 如果以上都不成功,则在按照 byType 的方式进行装配。
 都不成功就会报异常,










