spring依赖自动装配(传统依赖注入升级版)

目录

一、介绍

1.什么是依赖自动装配?

2.为什么要用依赖自动装配?

3.自动装配类型

4.依赖自动装配特征

5.依赖自动装配的缺点

二、代码步骤(怎么用自动装配)

(一)按类型(byType)装配(推荐)

1.创建一个Dog类 

 2.创建一个Cat类

3.Dog类和Cat类统一交给spring管理(本文重点)

4.Test测试的java包里面创建一个包一个测试类去测试运行

 5.运行结果(Cat类被注入了Dog类的方法)

 (二)按名称(byName)装配

 总结:


一、介绍

1.什么是依赖自动装配?

答:IOC容器根据bean所依赖的资源在容器中自动查找并注入bean中的过程中称为自动装配

这是IOC容器的文章

spring的控制反转(IOC)与依赖注入实现方式(DI)_云边的快乐猫的博客-CSDN博客

2.为什么要用依赖自动装配?

答:因为用set注入和构造器注入要在xml文件里面进行繁琐的bean标签设置。于是就需要简化这个过程步骤,那么自动装配就可以帮我们简化这个xml文件的配置。

ps:自动装配是基于set注入和构造器注入的基础上简化

这是set注入和构造器注入的文章spring的注入(set注入、构造器注入)_云边的快乐猫的博客-CSDN博客

3.自动装配类型

(1)按类型:byType(常用)

(2)按名称:byName(少用)

(3)按构造方法(几乎不用)

(4)不启用自动装配2 

4.依赖自动装配特征

(1)自动装配用于引用类型依赖注入,不能对简单类型进行操作

(2)使用按类型装配时(byType)必须保障容器中相同类型的bean唯一。(推荐使用)

(3)使用按名称装配时(byName)必须保障容器中具有指定名称的bean,因为变量名与配置耦合,所以(不推荐使用)

(4)自动装配优先级低于setter注入和构造器注入,如果同时出现,自动装配配置失效

5.依赖自动装配的缺点

(1)正常情况下,项目开发很少会用自动装配,对比起来明确清晰的配置文档没有优势

(2)只能根据类型或者名称自动装配,不能同时使用

(3)自动装配会默认装配bean里面的所有属性,想要装配单一的属性时候,就显得不够灵活 

二、代码步骤(怎么用自动装配)

ps:修改xml文件里面的bean标签就好了,其他的不用动

(一)按类型(byType)装配(推荐)

实验目标创建一个Dog类,一个Cat类,交给spring中心托管。然后把Dog类的方法注入到Cat类里面,让Cat类去调用。本项目用的是maven项目

1.创建一个Dog类 

spring依赖自动装配(传统依赖注入升级版)_第1张图片

package com.spring6.bean;
 
public class Dog {
    //1.新建一个方法
    public void DogEat(){
        System.out.println("这是狗的方法");
    }
}

 2.创建一个Cat类

 ps:被注入的Cat类里面要先写入要注入目标的私有对象.类.方法。然后生成一个set方法

然后类本身创建一个方法,去调用这个注入的对象方法

spring依赖自动装配(传统依赖注入升级版)_第2张图片

package com.spring6.bean;
 
public class Cat {
//一、要注入Cat里面的方法
    //1.Dog私有方法
    private Dog DogEat;
    //2.生成一个set方法
    public void setDog(Dog dog) {
        this.DogEat = dog;
    }
 
//二、写Cat自己的方法
    public void cat(){
        //3.调用注入狗的方法
        DogEat.DogEat();
    }
}

3.Dog类和Cat类统一交给spring管理(本文重点)

步骤:在resources里面创建一个配置xml文件。然后写入Dog和Cat这两个类的spring管理方式。

ps:注入类:Dog。被注入类:Cat。就像Cat类里面被针管容器注入Dog类的方法

快速入门使用spring详细步骤(介绍、导入依赖、第一个简单程序)_云边的快乐猫的博客-CSDN博客

 没有使用自动装配的xml文件

spring依赖自动装配(传统依赖注入升级版)_第3张图片

 使用自动装配后的xml文件

ps:区别就是在bean标签里面不用写那么多,只需要在被注入的bean标签里面加入autowire="byType就好了




    
    

    
    
    

4.Test测试的java包里面创建一个包一个测试类去测试运行

spring依赖自动装配(传统依赖注入升级版)_第4张图片

package com.spring6.text;
 
import com.spring6.bean.Cat;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class springTText {
    @Test
    public void TT(){
        //1.半固定写法,扫描spring的xml文件(不固定的是要扫描的是哪个xml文件)
        ApplicationContext applicationContext =new ClassPathXmlApplicationContext("spring.xml");
        //2.半固定写法,获取spring里面要进行运行的类(不固定的是括号里面的,name为:要运行类的id,后面跟着的是要运行的类.class)
        Cat catBean = applicationContext.getBean("catBean", Cat.class);
        //3.上面自定义名.要运行类的方法
        catBean.cat();
    }
}

 5.运行结果(Cat类被注入了Dog类的方法)

spring依赖自动装配(传统依赖注入升级版)_第5张图片

 (二)按名称(byName)装配

这个用的很少,就不写了

 总结:

和set和构造器注入差别不大,唯一要修改的就是xml文件里面的被注入的bean文件里面不用写那么多繁琐的,把很多繁琐的都剔除改为autowire="byType或者autowire="byName。但是该有的bean标签的id和class还是必须要有的。

你可能感兴趣的:(#,SSM框架,spring,java,spring自动装配,自动装配,注入升级版)