Spring6梳理6——依赖注入之Setter注入

news2024/9/22 13:30:05

以上笔记来源:
尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)https://www.bilibili.com/video/BV1kR4y1b7Qc

目录

一、引言

二、Java方法初始化过程

2.1 set方法及构造器方法实现Book对象初始化

三、Spring注入依赖

3.1 使用set方法进行依赖注入

3.2  使用构造器方法进行注入 

四、总结


一、引言

依赖注入:

1.类有属性,创建对象过程中,向属性设置值
第一种方式:基于set方法完成
第二种方式:基于构造器完成

二、Java方法初始化过程

2.1 set方法及构造器方法实现Book对象初始化

①生成Book实体类

package com.atguigu.spring6.iocxml.bean;

public class Book {
    private String bname;
    private String author;

    public Book() {
    }

    public String getBname() {
        return bname;
    }

    public void setBname(String bname) {
        this.bname = bname;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public Book(String bname, String author) {
        this.bname = bname;
        this.author = author;
    }

    @Override
    public String toString() {
        return "Book{" +
                "bname='" + bname + '\'' +
                ", author='" + author + '\'' +
                '}';
    }

    public void run() {
        System.out.println("book run...");
    }
    public static void main(String[] args) {
        //set方法注入
        Book book=new Book();
        book.setBname("java");
        book.setAuthor("尚硅谷");
        System.out.println(book);
        //通过构造器注入
        Book book2=new Book("C++","尚硅谷");
        System.out.println(book2);
    }
}

②运行程序,如图所示

三、Spring注入依赖

3.1 使用set方法进行依赖注入

①生成Book实体类

package com.atguigu.spring6.iocxml.bean;

public class Book {
    private String bname;
    private String author;

    public Book() {
    }

    public String getBname() {
        return bname;
    }

    public void setBname(String bname) {
        this.bname = bname;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public Book(String bname, String author) {
        this.bname = bname;
        this.author = author;
    }

    @Override
    public String toString() {
        return "Book{" +
                "bname='" + bname + '\'' +
                ", author='" + author + '\'' +
                '}';
    }

    public void run() {
        System.out.println("book run...");
    }
}

②创建bean-di.xml文件

创建一个名为book的bean,并使用<property></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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--
配置HelloWorld所对应的bean,即将HelloWorld的对象交给Spring的IOC容器管理
通过bean标签配置IOC容器所管理的bean
属性:
    id:设置bean的唯一标识
    class:设置bean所对应类的全路径
-->
        <bean id="book" class="com.atguigu.spring6.iocxml.bean.Book">
            <property name="bname" value="零基础学Java"></property>
            <property name="author" value="haozihua"></property>
        </bean>

</beans>

③ 创建测试类

package com.atguigu.spring6.iocxml.bean;

import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestBook_di {
    @Test
    public void testBook(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean-di.xml");
        Book book = context.getBean("book", Book.class);
        book.run();
        System.out.println(book);
    }
}

④运行截图如下

3.2  使用构造器方法进行注入 

①生成Book实体类(如3.1所示)

②添加XML配置文件


    <!--构造方法注入-->
    <bean id="bookCon" class="com.atguigu.spring6.iocxml.bean.Book">
        <constructor-arg name="bname" value="不想学Java"></constructor-arg>
        <constructor-arg name="author" value="hhhhhh"></constructor-arg>
    </bean>

③在测试类中创建新的测试方法
 

    @Test
    public void testBookCon(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean-di.xml");
        Book book = context.getBean("bookCon", Book.class);
        book.run();
        System.out.println(book);
    }

④运行结果如图所示

四、总结

本文主要介绍了Spring依赖注入的两种方式,set方法注入和构造方法注入,都需要创建被注入的实体类,之后使用bean的XML文件进行配置属性,注入依赖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2111254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入浅出SRS—RTMP实现

RTMP 直播是 SRS 最典型的使用场景&#xff0c;客户端使用 RTMP 协议向 SRS 推流&#xff0c;使用 RTMP 协议从 SRS 拉流&#xff0c;SRS 作为一个 RTMP 直播服务器实现媒体的转发。同时&#xff0c;RTMP 是 SRS 的中转协议&#xff0c;其他协议之间的互通需要先转为 RTMP&…

机器学习:数据清洗流程及完整代码实现

概述&#xff1a; 在处理数据之前&#xff0c;需要进行数据质量分析&#xff0c;了解数据的功能和作用&#xff0c;检查原始数据中是否存在脏数据。脏数据一般是指不符合要求以及不能直接进行相应分析的数据。 脏数据往往存在如下问题&#xff1a;没有列头&#xff0c;一个列有…

【CanMV K230】线段检测

【CanMV K230】线段检测 什么是线段检测线段检测应用领域1.地图解析中的道路、建筑轮廓提取2.计算机视觉中的物体识别和跟踪。3.机器人导航和环境理解。4.图像分割和特征点提取。5.建筑测量和图像重建。6.OCR&#xff08;光学字符识别&#xff09;预处理。7.行人检测和交通标志…

html+css+js网页设计 宝石及材料与工艺学专业知识科普与学习11个页面 带报告

htmlcssjs网页设计 宝石及材料与工艺学专业知识科普与学习11个页面 带报告 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&a…

免费分享:2014-2018年全球5.0级及以上地震正式报目录数据集

数据详情 本数据集为2014年—2018年中国台网正式目录&#xff08;统一编目目录&#xff09;全球5.0及以上地震6459次地震数据&#xff0c;属性字段包含发震时刻、经度、纬度、深度、地震类型、震级、参考位置、事件类型等。 数据属性 数据名称&#xff1a;全球5.0级及以上地震…

【数学建模】2024数学建模国赛B题(word论文+matlab):生产过程中的决策问题

详情请见&#xff1a;https://mbd.pub/o/bread/mbd-ZpqblZ5u 文章目录 一、问题二、解答2.1 问题一2.2 问题二2.3 问题三2.4 问题四 一、问题 某企业生产某种畅销的电子产品&#xff0c;需要分别购买两种零配件&#xff08;零配件1和零配件2&#xff09;&#xff0c;在企业将两…

gcn(从空间域理解)

一、背景 常见的神经网络&#xff0c;如BP神经网络可以用来处理表格型的数据&#xff0c;卷积神经网络可以用来处理图片数据&#xff0c;循环神经网络则可以用来处理序列数据&#xff0c;这些数据都是结构化的数据&#xff0c;当我们需要处理的数据为图这种非结构化的数据&…

黑马点评9——附近商户-GEO数据结构

文章目录 GEO数据结构的基本用法导入店铺数据结构到GEO实现附件商户功能 GEO数据结构的基本用法 导入店铺数据结构到GEO 数据库里没法实现按照地理坐标排序等复杂的搜索功能&#xff0c;我们把数据存到redis中&#xff0c;只需要保存id和对应的x以及y的坐标&#xff0c;就可以…

一键部署Phi 3.5 mini+vision!多模态阅读基准数据集MRR-Benchmark上线,含550个问答对

小模型又又又卷起来了&#xff01;微软开源三连发&#xff01;一口气发布了 Phi 3.5 针对不同任务的 3 个模型&#xff0c;并在多个基准上超越了其他同类模型。 其中 Phi-3.5-mini-instruct 专为内存或算力受限的设备推出&#xff0c;小参数也能展现出强大的推理能力&#xff…

使用Cskin时候 遇到按钮有默认阴影问题解决

使用Cskin时候 遇到按钮有默认阴影 设置 DrawType 属性就可以了

【应用】浅谈大模型的应用场景

在人工智能(AI)的发展历程中&#xff0c;大模型无疑是一个重要的里程碑。这类模型通过海量数据的训练&#xff0c;其参数量都达到了千亿甚至万亿的规模&#xff0c;具备了强大的语言理解和生成能力&#xff0c;能够完成各种复杂的自然语言处理任务。 大模型在各种领域都有广泛的…

Web day0906

ok了家人们&#xff0c;今天开始学习javaweb&#xff0c;我们一起看看吧 一.WEB开发介绍 1.1 WEB介绍 Web &#xff08; World Wide Web &#xff09;即全球广域网&#xff0c;也称为万维网。简 单说&#xff0c;能够通过浏览器访问的网站。在我们日常的生活中&#xff0c;经…

【JAVA基础】StringUtils.isEmpty、StringUtils.isBlank()、Objects.isNull()三者区别

&#x1f4dd;个人主页&#x1f339;&#xff1a;个人主页 ⏩收录专栏⏪&#xff1a;日常经验 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339;&#xff0c;让我们共同进步&#xff01; 总是区分不清楚这几个的差别&#xff1a;我们来直接验证一下&#…

【机械手控制】基于matlab 4-RPR平面机械手的可操作性、工作空间分析和路径跟踪【含Matlab源码 7422期】

✅博主简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;Matlab项目合作可私信或扫描文章底部QQ二维码。 &#x1f34e;个人主页&#xff1a;Matlab凤凰涅槃 &#x1f3c6;代码获取方式&#xff1a;扫描文章底部QQ二维码 ⛳️座右铭&…

U盘数据危机应对:详解文件或目录损坏无法读取的恢复之道

在数字化信息日益重要的今天&#xff0c;U盘作为便携存储设备&#xff0c;几乎成为了每个人工作和生活中的必需品。然而&#xff0c;当U盘突然遭遇文件或目录损坏且无法读取的困境时&#xff0c;我们往往面临数据丢失的风险&#xff0c;这不仅影响工作效率&#xff0c;还可能造…

【开学季】智慧城市入门教程福利放送,零基础入门三维WebGIS

步入九月&#xff0c;不知道有多少同学还没享受够假期 就要开始返校“直面天命” 各种大朋友、小朋友&#xff1b;大一萌新、学长学姐们也 都陆陆续续返校 小编整理了新中地公开课教程 帮助大家丝滑入门大学学习 这份开学礼包&#xff0c;请注意查收&#xff01; WebGIS三…

Xinstall如何用一个包打通多个推广路径?

在移动互联网时代&#xff0c;App的推广和运营对于开发者而言是一项至关重要的任务。然而&#xff0c;面对繁多的推广渠道&#xff0c;如何高效地管理和评估各个渠道的效果&#xff0c;成为了摆在开发者面前的一大难题。今天&#xff0c;我们就来科普一下&#xff0c;如何通过X…

13条自动化测试框架设计原则

1、代码规范 测试框架随着业务推进&#xff0c;必然会涉及代码的二次开发&#xff0c;所以代码编写应符合通用规范&#xff0c;代码命名符合业界标准&#xff0c;并且代码层次清晰。特别在大型项目、多人协作型项目中&#xff0c;如果代码没有良好的规范&#xff0c;那么整个框…

计算机毕业设计选题推荐-博物馆管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Helm Deploy Online Rancher v2.9.1

文章目录 准备安装查看下载 准备 $ kubectl get node NAME STATUS ROLES AGE VERSION kube-master01 Ready control-plane 19d v1.29.5 kube-node01 Ready <none> 19d v1.29.5 kube-node02 Ready <none&…