Java-29 深入浅出 Spring - IoC 基础 启动IoC容器的方式 Java方式与Web(XML、配置)方式

devtools/2024/12/22 15:36:53/
xmlns="http://www.w3.org/2000/svg" style="display: none;">

点一下关注吧!!!非常感谢!!持续更新!!!

大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html

在这里插入图片描述

目前已经更新到了:

  • MyBatis(已更完)
  • Spring(正在更新…)

在这里插入图片描述

IoC 基础

在这里插入图片描述

BeanFactory 和 ApplicationContext 区别

BeanFactory 是 Spring 框架中 IoC 容器的顶层接口,它只是用来定义一些基础功能,定义一些基础规范,而 ApplicationContext 是它的一个子接口,所以 ApplicationContext 是具备 BeanFactory 提供的全部功能。
通常,我们称 BeanFactory 为 SpringIoC 容器,ApplicationContext 是容器的高级接口,比 BeanFactory 要拥有更多的功能,比如说国际化支持和资源访(XML、Java 配置类)等等。
在这里插入图片描述

BeanFactory

  • 是 Spring 框架的核心接口,提供了最基本的 IoC 容器 功能。
  • 主要用于延迟初始化(懒加载)bean。
  • 适合用于资源受限的环境(例如:移动设备、嵌入式系统)。
  • 实现类:DefaultListableBeanFactory。

ApplicationContext

  • 是 BeanFactory 的子接口,提供了更多的功能。
  • 适合大型企业级应用,提供事件发布、国际化支持等高级功能。
  • 实现类:ClassPathXmlApplicationContext、FileSystemXmlApplicationContext 等。

请添加图片描述

BeanFactory 场景

  • 用于资源受限的环境或测试场景。
  • 如果应用程序不需要 ApplicationContext 的高级功能,BeanFactory 是一个更轻量级的选择。

ApplicationContext 场景

  • 用于企业级应用,支持国际化、事件监听、AOP 等高级功能。
  • 推荐在大部分 Spring 应用中使用。

项目准备

拷贝项目

我们把上一节的项目拷贝一份,后续将在上节的基础上进行调整。

添加依赖

需要在上节的依赖的基础上,加入下面的新的依赖:

xml"><!-- Spring -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.12.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>5.1.12.RELEASE</version>
</dependency>
<dependency><groupId>javax.annotation</groupId><artifactId>javax.annotation-api</artifactId><version>1.3.2</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.1.12.RELEASE</version>
</dependency>
<dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.13</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.1.12.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.1.12.RELEASE</version>
</dependency>

对应截图如下所示:
在这里插入图片描述

启动 IoC 容器

Java 环境

  • ClassPathXmlApplicationContext:从类的根路径下加载配置文件(推荐使用)
  • FileSystemXmlApplicationContext:从磁盘路径上加载配置文件
  • AnnotationConfigApplicationContext:纯注解模式下启动 Spring 容器

Web 环境

XML 方式

从 XML 启动容器,修改 webapp 下的 WEB-INF 下的 web.xml

xml"><?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
</web-app>

对应的截图如下所示:
在这里插入图片描述

配置类 方式

从配置类启动容器

xml"><?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><context-param><param-name>contextClass</param-name><param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value></context-param><context-param><param-name>contextConfigLocation</param-name><param-value>wzk.SpringConfig</param-value></context-param><!--使⽤监听器启动Spring的IOC容器--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
</web-app>

对应的截图如下所示:
在这里插入图片描述


http://www.ppmy.cn/devtools/144408.html

相关文章

C++ 特殊类的设计

前言 在有些开发场景下需要我们设计出一些特殊的类来满足特殊的需求&#xff0c;本期我们将来介绍一下常见的特殊类的设计&#xff01; 目录 前言 一、设计一个类&#xff0c;不能被拷贝 二、设计一个类&#xff0c;只能在堆上创建对象 三、设计一个类&#xff0c;只能在…

前端开发 详解 Node. js 都有哪些全局对象?

在 Node.js 中&#xff0c;全局对象&#xff08;Global Objects&#xff09;是指在任何模块中都可以直接访问的对象和变量&#xff0c;而不需要显式地进行导入。Node.js 提供了一些全局对象&#xff0c;帮助开发者在编写应用程序时更加方便地进行一些常见操作&#xff0c;如文件…

头歌实训数据结构与算法-图的最短路径(第2关:多源最短路径)

任务描述&#xff1a; 在带权有向图G中&#xff0c;求G中的任意一对顶点间的最短路径问题&#xff0c;也是十分常见的一种问题。 解决这个问题的一个方法是执行n次迪杰斯特拉算法&#xff0c;这样就可以求出每一对顶点间的最短路径&#xff0c;执行的时间复杂度为O(n 3)。而另…

企业内训|阅读行业产品运营实战训练营-某运营商数字娱乐公司

近日&#xff0c;TsingtaoAI公司为某运营商旗下数字娱乐公司组织的“阅读行业产品运营实战训练营”在杭州落下帷幕。此次训练营由TsingtaoAI资深互联网产品专家程靖主持。该公司的业务骨干——来自内容、市场、业务、产品与技术等跨部门核心岗位、拥有8-10年实战经验的中坚力量…

Linux系统加固

Linux系统安全加固 文章目录 Linux系统安全加固密码策略文件、目录安全未授权suid、未授权sgid排查与加固禁止root登录ftp、禁止匿名访问ftp计划任务排查与加固、开机自启排查与加固限定root用户远程ssh登录日志加固 无用账号、用户组和空口令账户排查与加固 禁用或删除无用账号…

WPF依赖属性详解

在 WPF 中&#xff0c;依赖属性&#xff08;Dependency Property&#xff09;是一种特殊的属性类型&#xff0c;它提供了比普通属性更强大的功能。依赖属性是 WPF 数据绑定、样式、动画和模板等功能的基础。理解依赖属性是理解 WPF 复杂功能和性能优化的关键。 1. 依赖属性是什…

【LuaFramework】服务器模块相关知识

目录 一、客户端代码 二、本地服务器代码 三、解决服务器无法多次接收客户端消息问题 一、客户端代码 连接本地服务器127.0.0.1:2012端口&#xff08;如何创本地服务器&#xff0c;放最后说&#xff09;&#xff0c;连接成功后会回调 协议号Connect是101&#xff0c;其他如下…

clickhouse优化记录

一、注重使用分区键来加快查询 在大数据量的情况下&#xff0c;如果查询语句中&#xff0c;可以使用分区键来进行查询&#xff0c;可以极大缩小数据的查询范围&#xff0c;加快查询速度。 二、使用order by的列&#xff0c;适用最左前缀匹配原则 比如表的结构是 order by(id…