Spring炼气之路(炼气二层)

目录

一、bean的配置

1.1 bean的基础配置

1.2 bean的别名配置

 1.3 bean的作用范围配置

  二、bean的实例化

2.1 bean是如何创建创建的?

2.2  使用静态工厂实例化bean

2.3 使用实例工厂实例化bean

三、bean的生命周期

3.1 什么是bean的生命周期

3.2  bean的生命周期的控制

 3.3 怎么执行bean生命周期控制中的销毁方法

3.3.1 调用close方法

 3.3.2 注册钩子关闭容器

四、DI依赖注入

4.1 setter注入

4.1.1 注入简单类型

4.1.2 注入引用类型

4.2 构造器注入

4.2.1 注入简单类型

4.2.2 注入引用类型

4.3 依赖自动装配

4.3.1 按类型自动装配

4.3.2 按名称自动装配

4.4 集合注入

4.4.1 注入数组类型数据

4.4.2 注入List类型数据

4.4.3 注入set类型数据

4.4.4 注入Map类型数据

4.4.5 注入Properties类型数据


            前言:Spring炼气之路(炼气一层)-CSDN博客

一、bean的配置

1.1 bean的基础配置

id: bean的id,使用容器可以通过id值获取对应的bean,在一个容器中id值唯一

class: bean的类型,即配置的bean的全路径类名

    <bean id="bookDao" class = "com.zhang.dao.impl.BookDaoImpl"/><bean id="bookService" class="com.zhang.service.impl.BookServiceImpl"/>

1.2 bean的别名配置

name:bean的别名,可以通过name值获取对应的bean,在容器中name值不唯一

 <bean id="bookDao" name="name1 " class = "com.zhang.dao.impl.BookDaoImpl" /><bean id="bookService" name="name2 name3"  class="com.zhang.service.impl.BookServiceImpl"/>

 1.3 bean的作用范围配置

scope: bean标签,singleton(单例) prototype(非单例)

<!--    默认是singleton--><bean id="bookDao" name="name1 " class = "com.zhang.dao.impl.BookDaoImpl" scope="singleton"/><bean id="bookService" name="name2 name3"  class="com.zhang.service.impl.BookServiceImpl" scope="prototype"/>

  二、bean的实例化

2.1 bean是如何创建创建的?

                 bean本质上就是对象,创建bean使用构造方法完成(private修饰的构造方法也能创建实例化bean)

证明:

2.2  使用静态工厂实例化bean

factory-method:标明创建对象的工厂方法

<bean id="orderDao" class="com.zhang.factory.OrderDaoFactory" factory-method="getOrderDao"/>

2.3 使用实例工厂实例化bean

        第一步:先创建工厂对象的bean

        第二步:标明工厂方法和工厂bean对象

<bean id="userFactory" class="com.zhang.factory.UserDaoFactory"/>
<bean id="userDao" factory-method="getUserDao" factory-bean="userFactory"/>

三、bean的生命周期

3.1 什么是bean的生命周期

        bean对象 从创建到销毁的整体过程

3.2  bean的生命周期的控制

第一步:创建初始化销毁方法

 //表示bean初始化对应的操作public void init() {System.out.println("init");}//表示bean销毁前对应的操作public void destroy(){System.out.println("destroy");}

第二步:在配置文件中配置生命周期

<bean id="bookDao" class="com.zhang.dao.impl.BookDaoImpl" init-method="init"
destroy-method="destroy"/>

 3.3 怎么执行bean生命周期控制中的销毁方法

                当虚拟机退出时,同时IOC容器来不及销毁,就不会调用销毁方法

3.3.1 调用close方法

        调用ClassPathXmlApplicationContext对象的close方法

 //创建ClassPathXmlApplicationContext对象ClassPathXmlApplicationContext cptx = new ClassPathXmlApplicationContext("applicationContext.xml");cptx.close();

 3.3.2 注册钩子关闭容器

        调用registerShutdownHook方法,在虚拟机退出之前关闭容器

ClassPathXmlApplicationContext cptx = new ClassPathXmlApplicationContext("applicationContext.xml");cptx.registerShutdownHook();

四、DI依赖注入

4.1 setter注入

                就是使用set方法传递数据

4.1.1 注入简单类型

        使用<property/> 在里面用value属性

<property name="class" value="one"/>

4.1.2 注入引用类型

        使用ref参照其他bean

<bean id="bookService" class="com.zhang.service.impl.BookServiceImpl"><property name="bookDao" ref="bookDao"/></bean>

4.2 构造器注入

                就是使用构造方法注入

4.2.1 注入简单类型

                使用<contructor-arg />value属性

<constructor-arg name="class" value="one"/>

4.2.2 注入引用类型

        使用<contructor-arg />ref属性

  <bean id="bookService" class="com.zhang.service.impl.BookServiceImpl"><constructor-arg name="bookDao" ref="bookDao"/></bean>

4.3 依赖自动装配

        IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配

4.3.1 按类型自动装配

        <bean>标签中使用autowire属性= "byType"

<bean id="bookService" class="com.zhang.service.impl.BookServiceImpl"
autowire="byType"/>

4.3.2 按名称自动装配

        <bean>标签中使用autowire属性= "byName"

<bean id="bookService" class="com.zhang.service.impl.BookServiceImpl"
autowire="byName"/>

4.4 集合注入

                集合中可以存放基本数据类型和引用数据类型,那么集合怎么注入依赖

4.4.1 注入数组类型数据

<property name="array">
<array><value>  </value>
<value>  </value></array>
</property>

4.4.2 注入List类型数据

<property name="list">
<list><value>  </value>
<value>  </value></list>
</property>

4.4.3 注入set类型数据

<property name="set">
<set> <value>  </value>
<value>  </value></set>
</property>

4.4.4 注入Map类型数据

<property name="map">
<map><entry key="" value=""/>
<entry key="" value=""/></map>
</property>

4.4.5 注入Properties类型数据

<property name="properties">
<props><prop key="">  </prop>
<prop key="">  </prop></props>
</property>

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工控机在机器人领域的应用丨工业一体机的应用

随着机器人技术的不断发展&#xff0c;机器人在制造、物流等领域得到了广泛应用。而工业控制计算机&#xff08;工控机&#xff09;作为机器人控制系统的核心设备&#xff0c;也在机器人领域发挥着越来越重要的作用。 机器人控制系统是机器人的核心部分&#xff0c;控制系统的…

C++的内存管理

目录 1. C/C内存分布 2. C语言中动态内存管理方式 3. C内存管理方式 3.1 new/delete操作内置类型 4. operator new与operator delete函数 4.1 连续开辟空间(尽力了解) 5. new和delete的实现原理 5.1 内置类型 5.2 自定义类型 6. 深入理解 6.1malloc/free和new/delete的区…

SAP CAP篇十五:写个ERP的会计系统吧,Part II

本文目录 本系列文章目标开发步骤数据库表设计初始数据初始数据&#xff1a;AccountCategories初始数据&#xff1a;AccountUsages初始数据&#xff1a;ChartOfAccounts初始数据&#xff1a;AccountSubjects Service 定义生成Fiori AppApp运行 本系列文章 SAP CAP篇一: 快速创…

适用于智能语音小家电的语音ic类型有哪些?

适用于智能语音小家电的语音ic类型有哪些&#xff1f; 1. 语音播放芯片&#xff1a;这种芯片主要用于实现语音提示和报警功能。例如&#xff0c;当按下某个按钮时&#xff0c;它可以发出语音提醒&#xff0c;或者在出现故障时发出报警声音。这种芯片的应用非常广泛&#xff0…

操作系统笔记之进程调用API中的getpid、fork、wait、exec补充

操作系统笔记之进程调用API中的getpid、fork、wait、exec补充 code review! —— 杭州 2024-03-17 夜 文章目录 操作系统笔记之进程调用API中的getpid、fork、wait、exec补充1.getpid()2.fork()3.wait()4.exec()5.通常&#xff0c;exec() 调用与 fork() 调用一起使用&#xff…

002_avoid_for_loop_in_Matlab避免使用for循环

避免使用for循环 在程序设计思想中&#xff0c;循环是一个很有力的工具。在循环中&#xff0c;计算机很轻松地重复执行相同的操作。循环是汇编之上的编程中最重要的概念之一。Matlab的循环有两个语言构造&#xff0c;一个是for循环&#xff0c;另一个是while循环。在Matlab中&…

JetBrains全家桶激活,分享 GoLand 2024 激活的方案

大家好&#xff0c;欢迎来到金榜探云手&#xff01; GoLand 公司简介 JetBrains 是一家专注于开发工具的软件公司&#xff0c;总部位于捷克。他们以提供强大的集成开发环境&#xff08;IDE&#xff09;而闻名&#xff0c;如 IntelliJ IDEA、PyCharm、和 GoLand等。这些工具被…

总结mac下解决matplotlib中文显示问题的几种方法

一、前言&#xff1a; 使⽤matplotlib画图时&#xff0c;由于matplotlib默认没有中⽂&#xff0c;显⽰中文时会出现空⽩⼩⽅块。 二、方法&#xff1a; 2.1 matplotlib中使用SimHei字体 1&#xff09;进入终端后查看matplotlib的字体路径&#xff1a; $ python >>&g…

Linux学习-进程

目录 进程基本概念 进程相关命令 进程的创建 进程的调度 进程相关函数接口 进程的消亡 实例&#xff1a;创建九个子进程 目录 进程基本概念 进程相关命令 进程的创建 进程的调度 进程相关函数接口 进程的消亡 实例&#xff1a;创建九个子进程 exec函数…

Python脚本:用py处理PDF的五大功能

一、代码 【第三方库】3个 【Py版本】3.9 【使用前提】关闭所有的word文档 import os from datetime import datetime from docx2pdf import convert from pdf2docx import parse from PyPDF2 import PdfMerger from PyPDF2 import PdfReader,PdfWriter#将文件夹中的所有Wo…

C++语言学习(二)—— C++语言的基本知识

目录 一、面向对象的三个核心概念 二、C语言中的I/O口 三、C语言中的数据类型​​​​​​​ 3.1 逻辑类型 3.2 引用类型 3.2.1 引用作为函数参数 3.2.2 引用作为函数返回值 3.2.3 引用作为类成员 3.3 类类型 四、 C语言中的内联函数 五、 函数重载 六、 带默认形参…

四、分布式锁之自定义分布式锁

1、基本原理和实现方式对比 分布式锁&#xff1a;满足分布式系统或集群模式下多个进程可见并且互斥的锁。分布式锁的核心思想就是多线程都使用同一把锁&#xff0c;实现程序串行执行。 分布式锁需要具备的条件&#xff1a; 特性含义可见性多个线程都能感知到变化互斥性分布…

数据库系统概论-第16章 数据仓库与联机分析处理技术

概念性的介绍&#xff0c;一略而过&#xff0c;不重要。 16.1 数据仓库技术 16.2 联机分析处理技术 16.3 数据挖掘技术 16.4 大数据时代的新型数据仓库 16.5 小结

G - Find a way

题目分析 1.双重bfs,遍历两个起点求最短路再计算总和即可 2.唯一的坑点在于对于一个KFC&#xff0c;两人中可能有一个到不了&#xff0c;所以还要对到不了的点距离做处理 #include <bits/stdc.h> using namespace std; using ll long long; const int N 220;struct pos…

Linux/Ubuntu/Debian从控制台启动程序隐藏终端窗口

如果你想从终端运行应用程序但隐藏终端窗口. 你可以这样做&#xff1a; 在后台运行&#xff1a; 你只需在命令末尾添加一个与号 (&) 即可在后台运行它。 例如&#xff1a; your_command &将 your_command 替换为你要运行的命令。 这将在后台启动该命令&#xff0c…

Three.js基础入门介绍——【毕业季】Three.js动态相册

前言 岁月匆匆&#xff0c;又是一年毕业季&#xff0c;这次做个动态相册展示图片&#xff0c;放些有意思的内容&#xff0c;一起回忆下校园生活吧。 预期效果 相册展示和点选切换&#xff0c;利用相机旋转和移动来实现一个点击切图平滑过渡的效果。 实现流程 基本流程 1、搭…

【python】python汽车效能数据集—回归建模(源码+数据集)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

【学习】软件测试行业未来的发展趋势预测

近年来&#xff0c;随着中国数字经济的蓬勃发展&#xff0c;软件测试行业也迎来了新的春天。从早期的手工测试到自动化测试&#xff0c;再到持续集成和持续交付&#xff0c;中国的软件测试行业经历了快速的发展和变革。各行各业均对软件测试提出了更高的要求&#xff0c;尤其在…

将数据转换成xml格式的文档并下载

现在有一个实体类对象的集合&#xff0c;需要将它们转换为xml文档&#xff0c;xml文档就是标签集合的嵌套&#xff0c;例如一个学生类&#xff0c;有姓名、年龄等&#xff0c;需要转换成一下效果&#xff1a; <student><age>14</age><name>张三</na…

【Java】Oracle发布Java22最新版本

甲骨文&#xff08;ORACLE&#xff09;已经于2023年3月19日正式发布了最新版本的JDK&#xff0c;版本号&#xff1a;22 根据官方声明&#xff0c;Java 22 (Oracle JDK 22) 在性能、稳定性和安全性方面进行了数千种改进&#xff0c;包括对Java 语言、其API 和性能&#xff0c;以…