栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【spring系列】spring依赖注入实现方式(含案例)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【spring系列】spring依赖注入实现方式(含案例)

依赖注入是时下最流行的IoC实现方式,
依赖注入分为
接口注入(Interface Injection),
Setter方法注入(Setter Injection)
构造器注入(Constructor Injection)

其中接口注入由于在灵活性和易用性比较差,现在从Spring4开始已被废弃。

构造器依赖注入

构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。

使用案例 1、导入依赖

  org.springframework
  spring-webmvc
  5.3.17


  org.springframework
  spring-context
  5.3.17
  compile
        
2、创建实体类
package com.walker.spring.entity;

public class ConstructorEntity {
    private String name;
    private String age;

    //1、创建构造方法
    public ConstructorEntity(String name, String age) {
        this.name = name;
        this.age = age;
    }

    //以及getter方法也需要,用于待会测试使用
    public String getName() {
        return name;
    }

    public String getAge() {
        return age;
    }
}

3、beans.xml




    
        
        
    



4、编写测试方法并执行
    
    public void testConstructor(){
        //1、创建xml读取上下文context
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        //2、使用context获取对应的容器
        ConstructorEntity constructorEntity = (ConstructorEntity) context.getBean("constructorEntity");
        //3、输出
        System.out.println(constructorEntity.getName());
        System.out.println(constructorEntity.getAge());
    }

之后再main方法中执行
返回结果:

walker aaaa
20
Setter方法注入

Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。

使用案例 1、导入依赖

  org.springframework
  spring-webmvc
  5.3.17


  org.springframework
  spring-context
  5.3.17
  compile
        
2、创建实体类
package com.walker.spring.entity;

import lombok.Data;


public class TestEntity {

    private String name;
    private String age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

3、创建beans.xml




    
        
        
    



4、测试
package com.walker.spring;

import com.walker.spring.entity.TestEntity;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

    public static void main(String[] args) {
        //1、创建xml读取上下文context
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        //2、使用context获取对应的容器
        TestEntity testEntity = (TestEntity) context.getBean("testEntity");
        //3、输出
        System.out.println(testEntity.getName());
        System.out.println(testEntity.getAge());
    }
}

5、返回结果

Hello World!
18

返回的结果是beans.xml中设置的

构造器依赖注入和 Setter方法注入的区别
构造函数注入setter注入
没有部分注入有部分注入
不会覆盖 setter 属性会覆盖 setter 属性
任意修改都会创建一个新实例任意修改不会创建一个新实例
适用于设置很多属性适用于设置少量属性

两种依赖方式都可以使用,构造器注入和Setter方法注入。最好的解决方案是用构造器参数实现强制依赖,setter方法实现可选依赖。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/838548.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号