【Spring】spring的容器创建

目录

控制反转IOC

依赖注入DI

创建spring的容器方式:

                  思考:

spring整合Junit4


控制反转IOC

把对象的创建和对象之间的调用过程,交给Spring管理,IOC是容器,是思想。!!!

依赖注入DI

可以通过setter注入,自动装配,或者注解的形式,可以看我这个篇文章=>Spring的Bean你了解吗-CSDN博客

创建spring的容器方式:

第一种配置文件

  ApplicationContext  application=new ClassPathXmlApplicationContext("applicationContext.xml");

第二种

   AnnotationConfigApplicationContext application=new AnnotationConfigApplicationContext(SpringConfig.class);
        思考:

        也许大家写过ssm的项目,它好像并没有书写过new 一个spring的容器,那它的spring容器是咋来的?

        在web.xml配置: 在web.xml文件中,通常会配置ContextLoaderListener,该监听器负责初始化Spring容器。这是通过在web.xml中添加以下配置来实现的:      

         配置中,contextConfigLocation 参数指定了Spring配置文件的位置,这里配置文件为 applicationContext.xml。  


<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

        在 web.xml 中配置 ContextLoaderListener 时,可以使用 <load-on-startup> 元素指定加载的顺序。

        通常,<load-on-startup> 的值为一个正整数,表示容器启动时的加载顺序,数值越小越早加载。

        如果 <load-on-startup> 没有配置或者配置为负值,默认情况下,容器会在应用程序首次请求到达时加载 ContextLoaderListener

spring整合Junit4

        每次进行单元测试的时候,都需要编写创建工厂,加载配置文件等代码,比较繁琐。Spring提供了整合Junit单元测试的技术,可以简化测试开发。

  • 必须先有Junit单元测试的环境,也就是说已经导入Junit单元测试的jar包。
  • 再导入spring-test的坐标依赖
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.0.2.RELEASE</version><scope>test</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency>

编写类和方法,把该类交给IOC容器进行管理

package com.aqiuo.demo;
@Component
public class User {public void sayHello(){System.out.println("Hello");}}

编写测试代码

@RunWith(value = SpringJUnit4ClassRunner.class)          // 运行单元测试
@ContextConfiguration("classpath:applicationContext.xml")// 加载类路径下的配置文件
public class MyTest2 {@AutowiredUser user;@Testpublic void run(){System.out.println(user);user.sayHello();;}}

这样就不用测试spring每次都需要编写创建工厂,加载配置文件等代码。

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

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

相关文章

关于ISI、SCI、EI、IEEE、Elsevier、Springer, etc的理解

文章目录 0、一文搞定 学术文章发表 基本概念1、关于会议组织者、出版商、科研工作者的关系1.1 SCI到底是什么1.2 EI到底是什么1.3 EI-SCI-收录-检索-出版商-会议组织者关系 2、关于ISI、SCI 、汤森路透、路透社的关系2.1 ISI web of knowledge2.2 Master Journal List2.3 Jour…

按摩上门预约小程序源码系统 开发组合:PHP+MySQL 附带完整的搭建教程

现代生活节奏的加快&#xff0c;人们越来越注重健康与放松。按摩作为传统的舒缓方式&#xff0c;市场需求逐年上升。然而&#xff0c;传统的按摩服务预约方式较为繁琐&#xff0c;用户需拨打热线电话或前往实体店进行预约&#xff0c;这无疑增加了用户的操作成本。因此&#xf…

vscode 支持c,c++编译调试方法

概述&#xff1a;tasks.jason launch.json settings.json一定要有&#xff0c;没有就别想跑。还有就是c 和c配置有区别&#xff0c;切记&#xff0c;下文有说 1.安装扩展插件。 2.安装编译器&#xff0c;gcc.我用的是x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z &#xf…

nginx日志常见报错解决

目录 一&#xff1a;报错 二&#xff1a;php查看后台内容有的栏目出现502&#xff1f; 三&#xff1a;413 Request Entity Too Large? 四&#xff1a;Request Header Or Cookie Too Large 400 一&#xff1a;报错 upstream prematurely closed connection while reading r…

35.搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入:…

docker-compose Install TeamCity

前言 TeamCity 是一个通用的 CI/CD 软件平台,可实现灵活的工作流程、协作和开发实践。允许在您的 DevOps 流程中成功实现持续集成、持续交付和持续部署。 系统支持 docker download TeamCity TeamCity 文档参考项目离线包百度网盘获取

117基于matlab的短时傅里叶变换(STFT)、小波变换(WT)、同步压缩变换(SST)、瞬态提取变换(TET)进行时频分析

基于matlab的短时傅里叶变换&#xff08;STFT&#xff09;、小波变换&#xff08;WT&#xff09;、同步压缩变换&#xff08;SST&#xff09;、瞬态提取变换&#xff08;TET&#xff09;进行时频分析。程序已调通&#xff0c;可直接运行。 117时频分析短时傅里叶变换 (xiaohong…

python基础-01

文章目录 前言一、python中的注释二、变量的数据类型1.Number&#xff08;数字&#xff09;2.Boolean&#xff08;布尔类型&#xff09;—— True 和 False3.String&#xff08;字符串&#xff09;4.List&#xff08;列表&#xff09;5.Tuple&#xff08;元组&#xff09;6.Dic…

javaWeb学生信息管理系统2

一、学生信息管理系统SIMS 一款基于纯Servlet技术开发的学生信息管理系统&#xff08;SIMS&#xff09;&#xff0c;在设计中没有采用SpringMVC和Spring Boot等框架。系统完全依赖于Servlet来处理HTTP请求和管理学生信息&#xff0c;实现了信息的有效存储、检索和更新&#xf…

【 C语言 】| C程序百例 - 绘制余弦曲线

【 C语言 】| C程序百例 - 绘制余弦曲线 时间&#xff1a;2023年12月29日12:56:29 文章目录 【 C语言 】| C程序百例 - 绘制余弦曲线1.要求2.问题分析与算法设计3.程序3-1.源码3-2.makefile 4.运行 1.要求 在屏幕上用"*"显示0~360的余弦曲线cos(x)曲线。 2.问题分析与…

re:Invent 2023技术上新|Amazon DynamoDB与OpenSearch Service的Zero-ETL集成

Amazon DynamoDB 与 Amazon OpenSearch Service 的 Zero-ETL 集成已正式上线&#xff0c;该服务允许您通过自动复制和转换您的 DynamoDB 数据来搜索数据&#xff0c;而无需自定义代码或基础设施。这种 Zero-ETL 集成减少了运营负担和成本&#xff0c;使您能够专注于应用程序。这…

【网络安全 | CTF】FlatScience

该题考察SQL注入 正文 后台扫到robots.txt 页面内容如下&#xff1a; 进入login.php 页面源代码如图&#xff1a; 传参debug得到php代码&#xff1a; <?php if(isset($_POST[usr]) && isset($_POST[pw])){$user $_POST[usr];$pass $_POST[pw];$db new SQLite3…