Spring配置文件详解

2023-05-16

Spring配置文件详解

1、spring的配置文件详解

  • Bean标签基本配置

    用于配置对象让 spring 来创建的。 默认情况下它调用的是类中的无参构造函数。如果没有无参构造函数则不能创建成功。

    属性:

id:给对象在容器之中提供一个唯一标识类
class:指定类的权限定名称。用于反射创建对象
  • bean标签范围配置

    scope: 指定对象的作用范围

    singleton:单例

    prototype:多例

    requst:WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中

    session:WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中

    global session:WEB 项目中,应用在 Portlet 环境

    init-method: 类中初始化方法的名称

    destroy-method: 类中销毁方法的名称

  • bean标签范围配置

  • 单例对象

对象出生:当应用加载,创建容器时,对象就被创建了。

对象活着:只要容器在,对象一直活着。

对象死亡:当应用卸载,销毁容器时,对象就被销毁了。

  • 多例对象

对象出生:当使用对象时,创建新的对象实例。

对象活着:只要对象在使用中,就一直活着。

对象死亡:当对象长时间不用时,被 java 的垃圾回收器回收了。

  • 实例化bean对象的三种方式

默认无参构造: 在spring的配置文件中使用bean标签,配以id和class属性之后,且没有其他属性和标签时,采用的就是默认构造函数创建bean对象,此时如果类中没有默认构造函数,则对象无法创建。

<bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"></bean>

使用静态工厂的方法创建对象

id与class与开头所述的一致。

factroy-method为指定生产对象的静态方法

public class StaticFactory {
    public static IAccountService getAccountService(){
        return new AccountServiceImpl();
    }
}
<bean id="accountService" class="com.itheima.factory.StaticFactory" 
factory-method="getAccountService"></bean>

使用实例工厂的方法创建对象

此处需要注意的是:

factory-bean 属性:用于指定实例工厂 bean 的 id。

factory-method 属性:用于指定实例工厂中创建对象的方法。

public class InstanceFactory {
    public IAccountService getAccountService(){
        return new AccountServiceImpl();
    }
}
<bean id="instanceFactory" class="com.itheima.factory.InstanceFactory"></bean>
    <bean id="accountService" factory-bean="instanceFactory" 
    factory-method="getAccountService"></bean>

2、 BenFactory 和 ApplicationContext 的区别

  • BeanFactory 才是 Spring 容器中的顶层接口。

  • ApplicationContext 是它的子接口。

  • 创建对象的时间不一样

  • ApplicationContext:只要一读取配置文件,默认情况下就会创建对象。

  • BeanFactory:什么使用什么时候创建对象。

3、ApplicationContext 接口的实现类

  • ClassPathXmlApplicationContext: 它是从类的根路径下加载配置文件 推荐使用这种

  • FileSystemXmlApplicationContext:它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。

  • AnnotationConfigApplicationContext: 当我们使用注解配置容器对象时,需要使用此类来创建 spring 容器。它用来读取注解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring配置文件详解 的相关文章

随机推荐

  • Android App开发之Jetpack架构,从思维图到基础再到深入

    在UI组件日益完善的同时 xff0c 也开始出现了RecyclerView ConstraintLayout MotionLayout等一些可以辅助大家写出更加符合性能要求的界面效果 在UI控件日益满足需求的同时 xff0c 系统的安全与稳
  • Android-Notes|BottomNavigationView-爱上-Lottie,kotlin声明数组

    selected xff1a 选中才显示标题 xff1b labeled xff1a 标题一直显示 xff1b unlabeled xff1a 只显示 icon xff0c 不显示标题 2 Lottie 对于这个东东 xff0c 不知道说啥
  • Linux生产者消费者与信号量

    目录 一 生产者消费者概念 二 模拟实现基于阻塞队列的生产消费模型 2 1概念 2 2构造阻塞队列 三 信号量 3 1原理 3 2信号量函数 3 3信号量模拟互斥功能 一 生产者消费者概念 生产者消费者模式就是通过一个容器来解决生产者和消费
  • 短视频文案怎么写?优质短视频文案写作技巧

    抖音短视频的质量仔细推敲起来确实会涉及到非常多的因素 xff0c 但真正决定你视频曝光的关键就是视频文案 xff0c 从剧情的铺垫 冲突 反转 xff0c 这在一定程度上能够吸引不少的观众 又或者小说开篇要么叙述宏达的故事背景 xff0c
  • Windows如何登录linux?

    1 用SSH命令 xff0c windows连接Linux xff08 1 xff09 ssh l root 192 168 5 15 xff08 2 xff09 ssh root 64 192 168 5 10 首次连接yes 即可 2
  • 单链表及其Java代码实现

    众所周知 xff0c 数组和链表都有内存寻址的功能 而数组元素的内存地址是连续的 xff0c 在寻址的时候很容易就可以找到下一个节点的值 而链表中元素的地址不是连续的 xff0c 那我们应该怎么去寻址呢 xff1f 假设现在计算机中有三个节
  • 创建Java Web项目并实现前后端交互

    目录 一 xff1a 使用工具 二 xff1a 创建Java Web项目 三 xff1a 编写代码 一 xff1a 使用工具 Eclipse 版本如下 xff1a 注 xff1a 不同版本的eclipse创建的项目基础目录可能会有所不同 二
  • 不坠华年(大一篇)

    秒速5厘米的樱花 这一年 xff0c 我遇到了想共度一生的人 xff0c 但是 从来没谈过恋爱的我根本不知道如何去追女孩子 xff0c 算了 xff0c 只要她快乐就好 xff0c 喜欢也不一定会在一起吧 xff0c 我总是说愿意等 xff
  • 数据结构之平衡有序二叉树

    我们知道引入树是为了提高数据存储 xff0c 读取的效率 可是有的二叉树并不能提高效率 xff0c 例如下面的这个树 这是一种极端的情况 xff0c 实际上它已经和链表一样了 xff0c 现在对它进行查询 xff0c 时间复杂度已经成为了O
  • 数据结构之B+树

    B 43 树结构特点 1 非叶子节点仅具有索引作用 xff0c 也就是说 xff0c 非叶子节点只能存储Key 不能存储value xff1b 2 树的所有叶节点构成一个有序链表 xff0c 可以按照key排序的次序依次遍历全部数据 B 4
  • MyBatis之Maven配置

    一 什么是Maven Maven是一个项目管理工具 xff0c 它包含了一个对象模型 一组标准集合 xff0c 一个依赖管理系统 和用来运行定义在生命周期阶段中插件目标和逻辑 二 下载配置相关版本的Maven 解压之后做相关的配置 1 配置
  • 数据库三大范式

    第一范式 xff08 1NF xff09 xff1a 在设计数据库时 xff0c 第一范式是对数据库的基本要求 满足第一范式的关系数据库的每一个域均为原子性的 xff0c 即数据库表的每一列都是不可分割的原子项 xff0c 而不能是集合 数
  • 数据库设计规范

    字符集 表格创建规范 所有的表都必须有这几个字段 删除一般都是软删除 xff0c 01删除标志 id等数字类型的字段不能只使用bigint用bigint unsigned xff08 为什么 xff1a xff09 当数据库中该属性添加un
  • git的版本控制流程以及特性分支之间怎样切换

    git xff1a 版本控制工具 xff08 例 xff1a 淘宝每次升级版本号加1 xff0c git来控制版本 xff09 命令 git pull xff1a 用于从远程更新存储库的本地版本 git commit xff1a 主要用于将
  • Android _ ViewBinding 与 Kotlin 委托双剑合璧,从思维图到基础再到深入

    lt LinearLayout tools viewBindingIgnore 61 true gt 3 2 创建绑定类 有三个创建绑定类的 API xff1a fun bind view View T fun inflate inflat
  • Android语音播报、后台播报、语音识别,android程序开发

    lt xml version 61 34 1 0 34 encoding 61 34 gt Android学习笔记总结 43 最新移动架构视频 43 大厂安卓面试真题 43 项目实战源码讲义 gt gt docs qq com doc DS
  • Spring框架介绍和使用

    一 Spring框架介绍 1 Spring简介 Spring是2003年兴起的一个Java轻量级框架 xff0c 它是为解决企业级开发的复杂性而创建的一个框架 它是一个分层的JavaSE EE Full Stack xff08 一站式 xf
  • SpringMVC注解开发运行原理

    服务器初始化过程 xff1a 1 xff1a 服务器初始化 加载继承 AbstractDispatcherServletInitializer即springmvc定义的代替web xml的 类初始化web容器 然后重写三个方法 xff1a
  • Unity3d游戏开发之C#开发(一)

    概要 撰写原因 xff1a 当今市面上关于Unity的教程的脚本几乎都是用js来当做教程语言的 xff0c 因为js比较容易学习 xff0c 所以如果是新学的朋友建议学js的版本 xff0c 如有特殊要求需要学习C 写脚本的话那么这系列文章
  • Spring配置文件详解

    Spring配置文件详解 1 spring的配置文件详解 Bean标签基本配置 用于配置对象让 spring 来创建的 默认情况下它调用的是类中的无参构造函数 如果没有无参构造函数则不能创建成功 属性 xff1a id 给对象在容器之中提供