文章目录

  • Spring中DI介绍
    • 一、基于XML配置注入依赖
      • 1. 有参构造函数注入依赖
      • 2. set方法注入依赖
      • 3. 注入自定义类型
      • 4. 注入集合类型
    • 二、基于注解形式注入依赖
      • 1. @Value
      • 2. @Resource
      • 3. @Autowired

Spring中DI介绍

DI(Dependency Injection)即依赖注入,对象之间的依赖由容器在运行期决定,即容器动态的将某个依赖注入到对象之中。

一、基于XML配置注入依赖

1. 有参构造函数注入依赖

①bean类实现有参构造函数

②在配置文件中配置参数通过有参构造函数给对象属性赋值

有参构造是使用constructor-arg标签

 <bean id="student4" class="com.wyscoder.spring.IOC.pojo.Student" ><constructor-arg name="id" value="1"/><constructor-arg name="name" value="吕布" />
</bean>

③测试

2. set方法注入依赖

①给对象的属性提供setter方法

②在配置文件中通过set方式赋值

通过set方式使用的是property标签

<bean id="student5" class="com.wyscoder.spring.IOC.pojo.Student"><property name="id" value="1"/><property name="name" value="王昭君"/>
</bean>

测试

3. 注入自定义类型

注入的依赖也可以是自定义类型

①添加自定义类型

public class User {private int id;private String name;public User() {}public User(int id, String name) {this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +'}';}
}


②配置文件

自定义类型也是要交给spring管理,如何获取管理对象实例呢
使用ref属性来获取值,该ref会自动识别为spring中对象的名字
使用value属性来获取值,spring会认为仅仅是一个字符串值

<!--注入自定义类型-->
<bean id="user" class="com.wyscoder.spring.IOC.pojo.User"><constructor-arg name="id" value="1"/><constructor-arg name="name" value="ww"/>
</bean>
<bean id="student6" class="com.wyscoder.spring.IOC.pojo.Student" ><property name="id" value="1"/><property name="name" value="王昭君"/><property name="user" ref="user"/>
</bean>

③测试

4. 注入集合类型

①添加集合属性

②配置文件

<!--注入集合类型-->
<bean id="student7" class="com.wyscoder.spring.IOC.pojo.Student"><property name="id" value="1"/><property name="name" value="赵云"/><!--注入list类型--><property name="course"><list><value>C++</value><value>Java</value><value>Python</value></list></property><!--注入map类型--><property name="score" ><map><entry key="C++" value="100"/><entry key="Java" value="99"/><entry key="Python" value="98"/></map></property>
</bean>

测试

二、基于注解形式注入依赖

开启注解扫描

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!--开启扫描:指定到包路径或者类名;会扫描类、方法、属性上是否有注解--><context:component-scan base-package="com.wyscoder.spring.IOC"/>
</beans>
注解 说明
@Value 注入普通类型属性
@Resource 注入对象类型
@Autowired 注入对象类型

1. @Value

该注解只能添加到普通类型上, @Value(“1”)注解中可以赋值完成对基础属性的依赖注入。

@Component(value = "student")
public class Student {@Value("1")private Integer id;
}

2. @Resource

该注解是注入对象类型,该注解是由Java 提供的,注意不是spring框架提供,默认按照名称进行装配

@Component(value = "student")
public class Student {//自定义类型@Resource(name = "user")private User user;

3. @Autowired

注入对象类型 ,是Spring框架提供的,按照类型来注入

@Component(value = "student")
public class Student {//自定义类型@Autowiredprivate User user;

Spring中DI介绍相关推荐

  1. [置顶] Spring中DI设置器注入

    Java的反射机制可以说是在Spring中发挥的淋漓尽致,下面要看的代码就是通过反射机制来实现向一个类注入其实际依赖的类型,这个过程的实现会交由Spring容器来帮我们完成. JavaBean中针对属 ...

  2. 【Spring框架】Spring中的DI介绍

    Spring中的DI介绍 DI(Dependency Injection),即"依赖注入",组件之间依赖关系由容器在运行期决定,即容器动态的将某个依赖关系注入到组件当中.它是是 S ...

  3. java di是什么_java spring中DIP是什意思?DI的含义是什么?

    在科学技术水平不断进步发展的今时今日,各种新兴软件不断涌现,这也刺激了人们对于新技术学习的欲望.学习java的人也越来越多.今天就来为大家介绍一些基础知识,也就是java中DIP是什意思以及DI的含义 ...

  4. spring的DI,IOP,AOC,Spring的简单介绍

    回顾: 1. mybatis的性能优化.一级缓存.减轻数据库的压力.默认开启.一级缓存是线程级别,sqlSession,缓存数据的map就放在sqlSession中的PerpetualCache的中. ...

  5. java中di,初识Spring的DI及其基本用法

    作为Spring新手,边学<Spring in Action>边总结相关知识. 什么是DI DI,Dependency Injection,即依赖注入,不是去依赖"注入" ...

  6. 请简述什么是spring的ioc和di_理解Spring中的IoC和DI

    什么是IoC和DI IoC(Inversion of Control 控制反转):是一种面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度.其基本思想是:借助于"第三方" ...

  7. Spring中常用注解的介绍

    spring中使用注解时配置文件的写法: <?xml version="1.0" encoding="UTF-8"?> <span style ...

  8. junit依赖_3、Spring 中的依赖注入(DI),你都知道多少?

    0. 前言 Spring 中,用来组成应用程序的主体以及由 Spring IoC 容器所管理的对象叫做 Bean.简而言之,Bean 就是由 IoC 容器来进行初始化.装配和管理的对象. Bean 的 ...

  9. Spring 中的Advice类型介绍

    Spring 中的 Advice 类型介绍 翻译原文链接 Introduction to Advice Types in Spring 1. 概述 在本文中,我们将讨论可以在 Spring 中创建的不 ...

最新文章

  1. 人体肠道细菌与自身细胞的比例究竟是多少?
  2. Swift标识符和keyword
  3. AI玩起音乐来“天赋”惊人,新版加州旅馆听过没?还是熟悉的老鹰乐队嗓音...
  4. bootstrap 按钮颜色属性
  5. 使用packetbeat 采集mysql数据
  6. Java----前端验证之验证码额实现
  7. sort函数_MATLAB--数字图像处理 sort()函数
  8. JavaScript(js)/上
  9. java接口如何接受语音参数_Java 是如何优雅地实现接口数据校验的?
  10. bash中的grep函数_如何在Bash中编写函数
  11. python \uxxxx转中文,Python列表中的字典 \uxxxx转中文,
  12. 设置JAVA-HOME的用处
  13. 微信小游戏制作坦克大战(一)微信小游戏制作工具介绍
  14. 车辆管理设备V系列JTT-808协议简介
  15. API接口安全性设计
  16. 百度地图 雷达/地理编码 功能使用
  17. 2022年 《三国演义》手摘
  18. 【Day_09】走方格的方案数
  19. Cartov for Mac 1.0.2 无尽旅图
  20. python黑魔法指南_python黑魔法一天从那个入门到进阶

热门文章

  1. 日志分析系统ELK之Kibana、es的替代metricbeat
  2. 解码京东Q4财报,刘强东向技术与服务转型成效显著
  3. parent.relativePath报错
  4. office 2016
  5. 计算机音乐儿童,儿童音乐游戏
  6. intellij idea的Browse repositories无法搜索安装插件?
  7. Win7注册表禁用USB接口、Win7组策略禁用USB端口
  8. 服务器防火墙有什么用,又怎么关闭?
  9. centos7安装harbor2.0
  10. POWER BI 业绩达成情况分析