当前位置: 首页 > news >正文

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

以上笔记来源:
尚硅谷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;}@Overridepublic 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;}@Overridepublic 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 {@Testpublic 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>

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

    @Testpublic 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文件进行配置属性,注入依赖

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python-FLASK上传文件
  • VScode 使用记录
  • 风机设计基础
  • 校园失物招领系统小程序的设计
  • 基于xr-frame实现微信小程序的人脸识别3D模型叠加AR功能(含源码)
  • 射频放大管的使用简略
  • vite创建的vue项目怎么使用jsx来实现elementPlus表格表尾的合计有多行大的方法
  • @antv/g6 业务场景:流程图
  • 线性表之栈
  • python无法连接SQL SERVER问题解决
  • fedora siliverblue adb
  • python---爬取QQ音乐
  • python办公自动化:使用`Python-PPTX`自动化与批量处理
  • 防御网站数据爬取:策略与实践
  • [手机Linux PostmarketOS]六, mySQL安装和使用
  • CentOS从零开始部署Nodejs项目
  • es6(二):字符串的扩展
  • flutter的key在widget list的作用以及必要性
  • js如何打印object对象
  • LintCode 31. partitionArray 数组划分
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • python docx文档转html页面
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Webpack入门之遇到的那些坑,系列示例Demo
  • yii2权限控制rbac之rule详细讲解
  • Zsh 开发指南(第十四篇 文件读写)
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 规范化安全开发 KOA 手脚架
  • 因为阿里,他们成了“杭漂”
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 我们雇佣了一只大猴子...
  • ​queue --- 一个同步的队列类​
  • # 数据结构
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #565. 查找之大编号
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $(selector).each()和$.each()的区别
  • (1)(1.9) MSP (version 4.2)
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (七)c52学习之旅-中断
  • (算法)大数的进制转换
  • (五)activiti-modeler 编辑器初步优化
  • .NET 发展历程
  • .Net 垃圾回收机制原理(二)
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .net经典笔试题
  • .NET使用存储过程实现对数据库的增删改查
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /boot 内存空间不够
  • /dev/sda2 is mounted; will not make a filesystem here!
  • [ IO.File ] FileSystemWatcher
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [AHOI2009]中国象棋 DP,递推,组合数