1. 构造器注入

/*带参数,方便利用构造器进行注入*/   
public CatDaoImpl(String message){           
    this. message = message;   
 
<bean id="CatDaoImpl" class="com.CatDaoImpl">   
    <constructor-arg value=" message "></constructor-arg>   
</bean> 

2. setter方法注入

 public class Id {   
     private int id;   
     
     public int getId() {   
         return id;  
     }    
     
     public void setId(int id) {  
         this.id = id;   
     }   
 
<bean id="id" class="com.id ">  
    <property name="id" value="123"></property>  
</bean>   

3. 静态工厂注入

静态工厂顾名思义,就是通过调用静态工厂的方法来获取自己需要的对象,为了让 spring 管理所有对象,我们不能直接通过"工程类.静态方法()"来获取对象,而是依然通过 spring 注入的形式获取:

public class DaoFactory {   
    //静态工厂       
    public static final FactoryDao getStaticFactoryDaoImpl(){           
        return new StaticFacotryDaoImpl();   
    }   
}   
 
public class SpringAction {             
    private FactoryDao staticFactoryDao;  //注入对象   
    
    //注入对象的 set 方法   
    public void setStaticFactoryDao(FactoryDao staticFactoryDao) {           
        this.staticFactoryDao = staticFactoryDao;   
    }
     
}   
 
//factory-method="getStaticFactoryDaoImpl"指定调用哪个工厂方法
<bean name="springAction" class=" SpringAction" >   
    <!--使用静态工厂的方法注入对象,对应下面的配置文件-->   
    <property name="staticFactoryDao" ref="staticFactoryDao"></property>             
</bean>   
    
<!--此处获取对象的方式是从工厂类中获取静态方法-->   
<bean name="staticFactoryDao" class="DaoFactory" factory-method="getStaticFactoryDaoImpl"></bean> 

4. 实例工厂注入

实例工厂的意思是获取对象实例的方法不是静态的,所以你需要首先 new 工厂类,再调用普通的实例方法:

public class DaoFactory {   
    //实例工厂        
    public FactoryDao getFactoryDaoImpl(){           
        return new FactoryDaoImpl();   
    }   
 
public class SpringAction {       
    private FactoryDao factoryDao;     
    
    //注入对象         
    public void setFactoryDao(FactoryDao factoryDao) {           
        this.factoryDao = factoryDao;   
    }   
}   
    
<bean name="springAction" class="SpringAction">   
    <!--使用实例工厂的方法注入对象,对应下面的配置文件-->   
    <property name="factoryDao" ref="factoryDao"></property>       
</bean>   
    
<!--此处获取对象的方式是从工厂类中获取实例方法-->   
<bean name="daoFactory" class="com.DaoFactory"></bean>   
    
<bean name="factoryDao" factory-bean="daoFactory" factory-method="getFactoryDaoImpl"></bean>   

Spring 依赖注入有哪几种方式的更多相关文章

  1. Spring 依赖注入(DI) 的三种方式 和 对集合类型的注入

    // 分别省略了getter setter public class Student { private String name; private int age; private Teacher t ...

  2. spring 依赖注入的3种方式

    在实际环境中实现IoC容器的方式主要分为两大类,一类是依赖查找,依赖查找是通过资源定位,把对应的资源查找回来:另一类则是依赖注入,而Spring主要使用的是依赖注入.一般而言,依赖注入可以分为3种方式 ...

  3. Spring依赖注入三种方式详解

    在讲解Spring依赖注入之前的准备工作: 下载包含Spring的工具jar包的压缩包 解压缩下载下来的Spring压缩包文件 解压缩之后我们会看到libs文件夹下有许多jar包,而我们只需要其中的c ...

  4. Spring依赖注入的三种方式

    看过几篇关于Spring依赖注入的文章,自己简单总结了一下,大概有三种方式: 1.自动装配 通过配置applicationContext.xml中的标签的default-autowire属性,或者标签 ...

  5. SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式

           于java发育.一类程序猿必须依靠类的其他方法,它是通常new依赖类的方法,然后调用类的实例,这样的发展问题new良好的班统一管理的例子.spring提出了依赖注入的思想,即依赖类不由程 ...

  6. SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式

           在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依 ...

  7. Spring 依赖注入方式详解

    平常的Java开发中,程序员在某个类中需要依赖其它类的方法. 通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理. Spring提出了依赖注入的思想,即依赖类不由 ...

  8. Spring 依赖注入方式详解(四)

    IoC 简介 平常的Java开发中,程序员在某个类中需要依赖其它类的方法. 通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理. Spring提出了依赖注入的思想 ...

  9. spring 注入bean的两种方式

    我们都知道,使用spring框架时,不用再使用new来实例化对象了,直接可以通过spring容器来注入即可. 而注入bean有两种方式: 一种是通过XML来配置的,分别有属性注入.构造函数注入和工厂方 ...

  10. Spring依赖注入的方式、类型、Bean的作用域、自动注入、在Spring配置文件中引入属性文件

    1.Spring依赖注入的方式 通过set方法完成依赖注入 通过构造方法完成依赖注入 2.依赖注入的类型 基本数据类型和字符串 使用value属性 如果是指向另一个对象的引入 使用ref属性 User ...

随机推荐

  1. 物联网5G工业网关的特点和应用场景

    BMG5100 系列产品,是一款工业级 5G 千兆物联网网关.集数据管理.智能采集.多种协议 转换.5G/4G 无线通信.数据处理转发.VPN 虚拟专网.本地存储.WIFI 覆盖等功能于一体. 产品特 ...

  2. 全局 使用 stylus 变量

    首先 安装 啦 npm i stylus stylus-loader -D 之后 使用全局变量 然后在组件中引用改变量  -->没有用! 原因还没有在build/utils.js文件 全局引入 ...

  3. react+antd 开发一个可动态增减的复合组件

    需求如图: 与后端协商好的表单数据为: 组件代码: /* 阶梯分成组件 */ import React, { useState, useEffect } from 'react'; import { ...

  4. 初识 Linux Shell

    初识 Linux Shell 本书学习的第一步,就是要找到 Linux 终端的所在位置.目前较常见的图形化终端有 Konsole.Gnome terminal.xterm 等几种.一般安装后在各个发行 ...

  5. laravel5.5 数据查询记录

    laravel5.5版本数据查询 基于 prettus/l5-repository 插件 首先安装好 prettus/l5-repository插件 配置相关参数 1 根据条件查询数据总数 publi ...

  6. 关于FPGA学习的疑惑

    记录心路历程--第一次真正意义上的找工作. 最近在学习小梅哥的FPGA的过程中,总是学习着前面的东西忘着后面的,进行了过一次复习,我准备是在每个章节学完之后,再复习之前的章节,可这样是真的很耗费时间. ...

  7. VSCode-关于自动格式化问题

    Code ->首选项 ->设置 ,在搜索框上输入"格式化" 设置格式化后挂号会自动补齐,关键字会自动添加空格,

  8. Angular 管道和路由

    管道pipe: 要在HTML模板中指定值转换,请使用管道运算符(|). {{interpolated_value | pipe_name}} 您可以链接管道,发送一个管道功能的输出以被另一个管道功能转 ...

  9. 【帆吖】Java学习零基础22

    Java数组

  10. vue3 vue-i18n 入口文件配置报警

    报警: You are running the esm-bundler build of vue-i18n. It is recommended to conf 解决: 在vue.config.js文 ...