Spring入门基础之依赖注入

目录
  • 一、构造器注入
  • 二、set注入
  • 三、其他方式注入
    • (1)导入约束
    • (2)p命名注入
    • (3)c命名注入

一、构造器注入

在前几节已经做过了详细的说明讲解,我们先跳过

二、set注入

依赖注入

依赖: bean对象的创建以及管理都依赖于Spring IOC容器

注入: bean对象中的所有属性,都有容器进行注入

在前面我们已经见识过了 普通类型注入和 bean注入的方式,那么对于复杂类型List、数组类型、Map、Set属性等怎么进行注入呢?

我们先提供一个包含各种类型的实体类

Student 类

package com.kuang.pojo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
@Setter
@Getter
@ToString
public class Student {
    private String name;
    private Address address;
    private String[] books;
    private List<String> hobbies;
    private Map<String,String> card;
    private Set<String> games;
    private String wife;
    private Properties info;
}

Student类中包含的 Address类

package com.kuang.pojo;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class Address {
    private String address;
}

(1)基本类型注入

<!--            普通类型注入-->
        <property name="name" value="张三"/>

(2)引用类型(bean)注入

    <bean name="address" class="com.kuang.pojo.Address"/>
    <bean id="student" class="com.kuang.pojo.Student">
<!--        引用类型(bean)注入-->
        <property name="address" ref="address"/>
    <bean/>

(3)数组类型注入

<!--         数组类型注入  -->
        <property name="books">
            <array>
                <value>红楼梦</value>
                <value>水浒传</value>
                <value>西游记</value>
                <value>三国演义</value>
            </array>
        </property>

property 嵌套 array标签 ,array标签中又 通过 value标签设置 数组中的值

(4)List类型注入

<!--Lits 属性注入-->
        <property name="hobbies">
            <list>
                <value>打篮球</value>
                <value>弹吉他</value>
                <value>踢足球</value>
            </list>
        </property>

property 嵌套 list标签 ,list标签中又 通过 value标签设置 list中的值

(5)null 空值注入

<!--        null注入-->
        <property name="wife">
            <null/>
        </property>

property 嵌套 null标签,给指定属性设置为null

(6)Map 类型注入

<!--        Map注入-->
        <property name="card">
            <map>
                <entry key="身份证" value="1111"/>
                <entry key="饭卡" value="22222"/>
            </map>
        </property>

property 嵌套 map标签 ,map标签中又 通过 entry标签设置 key、value中的值

(7)Set 类型注入

<!--        Set注入-->
        <property name="games">
            <set>
                <value>塞尔达</value>
                <value>马里奥</value>
            </set>
        </property>

property 嵌套 set标签 ,set标签中又 通过value标签设置set中的值

(8)Properties 类型注入

<!--        properties注入-->
        <property name="info">
            <props>
                <prop key="url">111</prop>
                <prop key="username">root</prop>
                <prop key="password">22222</prop>
            </props>
        </property>

property 嵌套 props标签 , props标签中又 通过prop标签设置值

查看注入之后的结果,正确拿到结果

三、其他方式注入

(1)导入约束

其他拓展的注入有p命名注入和c命名注入,但是不能直接使用都需要引入xml约束

p命名空间注入xml约束

xmlns:p="http://www.springframework.org/schema/p"

c命名空间xml约束

xmlns:c="http://www.springframework.org/schema/c"

p命名和c命名是对注入方式的一种格式化

  • p命名对应着 property 属性注入
  • c命名对应着 construct-arg 构造参数注入

(2)p命名注入

    <bean name="address" class="com.kuang.pojo.Address"/>
    <bean id="student"
          class="com.kuang.pojo.Student"
          p:name="张三"
          p:address-ref="address"
    />

(3)c命名注入

    <bean name="address" class="com.kuang.pojo.Address"/>
    <bean id="student"
          class="com.kuang.pojo.Student"
          c:name="张三"
          c:address-ref="address"
    />

到此这篇关于Spring入门基础之依赖注入的文章就介绍到这了,更多相关Spring依赖注入内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Spring基础之AOP的概念介绍

    目录 前言 Spring的AOP的功能和目标 代理方式 @AspectJ的支持 启用@AspectJ 通过Java注解启用AspectJ注解支持: 通过XML配置启用AspectJ注解 定义一个切面 声明一个切入点 常见的切入点匹配表达 切面的增强 前增强BeforeAdvice 后增强 异常增强 环绕增强 代理机制 代理工厂的使用 Spring容器包含两个重要的特性:面向切面编程(AOP)和控制反转(IOC).面向切面编程是面向对象(OOP)的一种补充,在面向对象编程的过程中编程针对的目标是一

  • Spring Boot详解创建和运行基础流程

    目录 1. 初始 Spring Boot 1.1 什么是Spring Boot 1.2 Spring Boot 的优点 2. 创建 Spring Boot 项目(Idea) 2.1 首先安装 Spring Assistant 插件 2.2 重启Idea-New Project ① 点击 Spring Assistant 直接Next就可以了 ② Next 之后的页面介绍 ③ 引入依赖, 选择Spring Boot的版本 ④ 选择项目名称和保存路径 ⑤ Spring Boot 项目创建完成 3.

  • 零基础入门SpringMVC拦截器的配置与使用

    在SpringMVC中 我们说到了拦截器 , 它会在映射处理器(HandleMapping)执行时检查我们访问的地址是否配置拦截器 , 在拦截器中实现一些功能 SpringMVC 定义了拦截器接口 HandlerInterceptor该接口中定义了三个方法,这三个方法的调用时在 SpringMVC 框架内部完成的, 调用这个三个方法的时候,其参数的值也是从框架内部传递进来的. 首先我们来看第一个方法 : boolean preHandle() 预处理方法,实现处理器(Controller层, 控

  • Spring零基础到进阶之使用方法详解

    目录 一.Spring的创建和使用 1.创建一个Maven项目 2.添加Spring框架支持 3.添加启动类 二.存储Bean 1.添加配置文件(非第一次省略此步) 2.创建Bean对象 2.1.创建Bean对象 2.2.将Bean对象注入到Spring中 三.获取并使用 Bean 对象 1.先得到Spring上下文对象 2.再通过上下文提供的方法获取到Bean对象 3.使用Bean对象 今天介绍一下Spring的基本使用,为了更好的熟悉Spring,可以先看一下我前面的文章: Spring鸿蒙

  • Spring零基础到进阶之鸿蒙开篇

    目录 Spring是什么 1.什么是容器? 2.什么是IOC? 3.理解Spring IoC 4.了解DI Spring是什么 用一句简单的话来概括Spring:Spring是包含了众多工具方法的IoC容器.那么问题来了,什么是容器,什么是IOC容器?下面就一起来看看吧 1.什么是容器? 容器就是用来荣南某种物品的装置,前面我们也是学了很多容器的,类似于List/Map就是一个存储数据的容器,Tomcat就是一个存储Web项目的容器. 2.什么是IOC? IOC(inversion of Con

  • Spring Boot 底层原理基础深度解析

    目录 1. 底层注解@Configuration 2. 底层注解@Import 3. 底层注解@Conditional 1. 底层注解@Configuration @Configuration 注解主要用于给容器添加组件(Bean),下面实践其用法: 项目基本结构: 两个Bean组件: User.java package com.menergy.boot.bean; /** * 用户 */ public class User { private String name; private Inte

  • Spring入门基础之依赖注入

    目录 一.构造器注入 二.set注入 三.其他方式注入 (1)导入约束 (2)p命名注入 (3)c命名注入 一.构造器注入 在前几节已经做过了详细的说明讲解,我们先跳过 二.set注入 依赖注入 依赖: bean对象的创建以及管理都依赖于Spring IOC容器 注入: bean对象中的所有属性,都有容器进行注入 在前面我们已经见识过了 普通类型注入和 bean注入的方式,那么对于复杂类型List.数组类型.Map.Set属性等怎么进行注入呢? 我们先提供一个包含各种类型的实体类 Student

  • Spring 控制反转和依赖注入的具体使用

    目录 控制反转的类型 1.依赖查找 1.1依赖拉取 1.2上下文依赖查找 2.依赖注入 2.1构造函数注入 2.2setter函数注入 Spring中的控制反转 1.Bean和BeanFactory 2.设置Spring配置 2.1XML配置 2.2注解配置 2.3Java配置 3.setter注入 4.构造函数注入 控制反转的类型 控制反转(IOC)旨在提供一种更简单的机制,来设置组件的依赖项,并在整个生命周期管理这些依赖项.通常,控制反转可以分成两种子类型:依赖注入(DI)和依赖查找(DL)

  • 详解Spring的核心机制依赖注入

    详解Spring的核心机制依赖注入 对于一般的Java项目,他们都或多或少有一种依赖型的关系,也就是由一些互相协作的对象构成的.Spring把这种互相协作的关系称为依赖关系.如A组件调用B组件的方法,可称A组件依赖于B组件,依赖注入让Spring的Bean以配置文件组织在一起,而不是以硬编码的方式耦合在一起 一.理解依赖注入 依赖注入(Dependency Injection) = 控制反转(Inversion ofControl,IoC):当某个Java实例(调用者)需另一个Java实例(被调

  • 浅谈Spring IoC容器的依赖注入原理

    本文介绍了浅谈Spring IoC容器的依赖注入原理,分享给大家,具体如下: IoC容器初始化的过程,主要完成的工作是在IoC容器中建立 BeanDefinition 数据映射,并没有看到IoC容器对Bean依赖关系进行注入, 假设当前IoC容器已经载入用户定义的Bean信息,依赖注入主要发生在两个阶段 正常情况下,由用户第一次向IoC容器索要Bean时触发 但我们可以在 BeanDefinition 信息中通过控制 lazy-init 属性来让容器完成对Bean的预实例化,即在初始化的过程中就

  • Spring bean为什么需要依赖注入

    目录 具体步骤: 样例1: 样例2: Spring单例模式和原型模式 一.单例模式 二.原型模式 思考 为什么需要依赖注入 总结 具体步骤: 1.创建一个maven项目 spring-day1-constructor 2.导入依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!--这里是java 版本号--> <maven.compil

  • Spring使用Setter完成依赖注入方式

    目录 对依赖注入的理解 使用Setter完成不同类型属性的注入 整体配置文件 Spring解决setter方式的循环依赖的原理 对依赖注入的理解 依赖:实体间的所有依赖由容器创建 注入:容器负责完成实体间依赖互相注入的任务 使用Setter完成不同类型属性的注入 实体类Student package indi.stitch.pojo; import java.util.*; public class Student { private String name; private Address a

  • 因Spring AOP导致@Autowired依赖注入失败的解决方法

    发现问题: 之前用springAOP做了个操作日志记录,这次在往其他类上使用的时候,service一直注入失败,找了网上好多内容,发现大家都有类似的情况出现,但是又和自己的情况不太符合.后来总结自己的情况发现:方法为private修饰的,在AOP适配的时候会导致service注入失败,并且同一个service在其他的public方法中就没有这种情况,十分诡异. 解决过程: 结合查阅的资料进行了分析:在org.springframework.aop.support.AopUtils中: publi

  • 详解Java Spring各种依赖注入注解的区别

    注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解有Autowired.Resource.Qualifier.Service.Controller.Repository.Component. Autowired是自动注入,自动从spring的上下文找到合适的bean来注入 Resource用来指定名称注入 Qualifier和Autowired配合使用,指定bean的名称 Service,Controller,Repository分别标记类是Service层类,Contro

  • Spring 依赖注入实现示例

    [注]本文译自:https://springframework.guru/...   在本文中,我将向你展示如何在 Spring Framework 的依赖项注入中使用 Project Lombok 以获得最佳实践.   Spring 框架本身具有多种执行依赖项注入的方式.选项的灵活性是 Spring 框架的优势.但是,并非所有的依赖项注入选项都被视为最佳实践.有些实际上不太好. 依赖注入示例   我提供了一些设置示例,供我们查看必须使用的各种依赖项注入选项.   让我们以 Spring Ser

  • Spring入门到精通之注解开发详解

    目录 Spring原始注解 DI 依赖注入的注解实现方式 Spring新注解 @Configuration @ComponentScan @Import @PropertySource @value @Bean Spring整合Junit 原始Junit测试Spring的问题 上述问题解决思路 Spring集成Junit步骤 Spring集成Junit代码实现 Spring原始注解 Spring是轻代码而重配置的框架,配置比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以

随机推荐