11-13 spring整合web

spring注解

把properties文件中的key注入到属性当中去

xml配置文件拆分 -> import标签

注解开发中  @import 实现

搞一个主配置类,其他配置类全部导入进来这个这个主配置类  而且其他配置类不需要

加上@configuration注解  之前这个注解用于表示这是一个配置文件

这里有一个@Bean  执行完createUser方法后,把这个方法的返回值作为bean对象保存到

spring容器当中,启动程序,我们会发现它没有被执行,没有打印  但是下面这个被打印了 

原因:DbConfig类没有被作为一个配置类使用 它没有被spring所管理

解决办法:加上一个@Configuration注解在Dbconfig

方法二:  这就是导入的功能  导入一个类的实现

spring整合web

黑色的是jar包 绿色的是模块

java在实际开发, web开发,web项目, web项目发布到web服务器(Tomcat)
如果我们的项目使用spring框架,Spring核心的IOC容器(ApplicationContext)对象创建问题?

手动创建:

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

每次使用Spring,手动创建Spring容器,而Spring容器中bean一般不会改变,每次使用创建,浪费,效率低,能不能只创建一次,需要使用的时候,获取IoC容器对象

开始整合

创建web项目  maven 等待加载然后

升级web.xml

 apply之后

创建两个目录,一个是java 一个是resourse

加依赖

spring-web依赖的作用:

做下面两件事

web.xml文件中配置创建spring容器的监听器 

  servlet当中是否交给Spring管理呢?

不能,因为Servlet已经交给Tomcat管理,通过http请求的Servlet都是Tomcat容器中的对象

dao service一定是交给Spring管理的

交给Spring管理 用到IOC容器,类对象的创建、销毁都是由Spring管理

servlet是tomcat服务器所创建的,所以他也是保存到Servlet容器当中,是一个单例

Tomcat又称为Servlet容器,

如果servlet交给Spring容器管理,servlet是tomcat服务器所创建的,所以他也是保存到Servlet容器当中,是一个单例

写service dao mapper

dao->

写接口:

 写实现类:

service

接口:

实现类:

@(因为它依赖我们的dao,所以需要引入

@Autowired -> 自动注入这个属性

private UserDao userDao )

基于接口进行隔离

实现了注入对象

创建servlet

 需要打印日志:引入logo4j.proerties

回车启动:

出错:

原因:项目的servlet有两个  出现了空指针异常

JavaWeb三剑客:servlet filter listern

  servlet当中是否交给Spring管理呢?

不能,因为Servlet已经交给Tomcat管理,通过http请求的Servlet都是Tomcat容器中的对象,所以需要手动获取容器,因为我们永远访问的是tomcat的servlet ,里面没有userService

解决办法:手动获取userService

通过容器getBean()

拿到spring容器对象

不用new创建,因为他已经放到域对象里去了,我们去拿就行了

 拿到容器

这样子还不够,我要完全解决web层,起码可以通过controller注解可以service层对象注入进来

而不是这种手动创建去拿

简单一点点的写法(工具类获取SpringIOC容器对象)

加入spring-web依赖主要是它能够给我提供监听器,监听tomcat的启动,然后他就会调用ContextLoaderListener里面的代码去创建一个Spring容器,把这个容器保存在我们的这个servletContext域上

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【论文精读】Pose-Free Neural Radiance Fields via Implicit Pose Regularization

今天读的是一篇发表在ICCV 2023上的文章,作者来自NTU。 文章地址:点击前往 文章目录 Abstract1 Intro2 Related Work3 Preliminary4 Proposed Method4.1 Overall Framework4.2 Scene Codebook Construction4.3 Pose-Guided View Reconstruction4.4 Train…

Windows 微PE WePE_64_V2.3 PE模式下启用账号和修改密码

启动PE后,进入桌面打开运行dism程序 选择带有系统的盘符(默认选的是PE盘),然后打开会话 选择左侧工具箱,然后右侧找到账户管理 然后就可以对已有账号进行管理了 结束。

【python自动化】Playwright基础教程(四)事件操作①高亮元素匹配器鼠标悬停

本文目录 文章目录 前言高亮显示元素定位 - highlighthighlight实战highlight定位多个元素 元素匹配器 - nthnth实战演示 元素匹配 - first&last 综合定位方式时间操作进行实战,巩固之前我们学习的定位方式。 这一部分内容对应官网 : https://playwright.dev/py…

Java SE 封装、包、static关键字和代码块

1.封装 1.1封装的概念 面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说 就是套壳屏蔽细节。 封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细…

关于反弹Shell个人的一些理解与学习收获

反弹Shell 概念: 反弹shell(reverse shell),就是控制端(攻击者所有)监听某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转发到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是…

C++模拟实现——AVL树

AVL树 1.介绍 AVL树是对搜索二叉树的改进,通过特定的方法使得每个节点的左右子树高度差绝对值不超过1,使得避免出现歪脖子的情况,最核心的实现在于插入值部分是如何去实现平衡调整的,由于前面详细实现和解析过搜索二叉树&#x…

Android问题笔记四十四:关于RecyclerView出现Inconsistency detected崩溃

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…

Linux---(六)自动化构建工具 make/Makefile

文章目录 一、make/Makefile二、快速查看(1)建立Makefile文件(2)编辑Makefile文件(3)解释(4)效果展示 三、背后的基本知识、原理(1)如何清理对应的临时文件呢…

vite 深入浅出

vite 深入浅出 简介 vite(轻量&#xff0c;轻快的意思) 是一个由原生 ES Module 驱动的 Web 开发前端构建工具。 浏览器原生 ESM&#xff1a;浏览器支持的 JavaScript 模块化标准&#xff0c;可以直接使用 <script type"module"> 标签加载模块&#xff0c;无…

第二证券:定增价公布后第二天股价表现?

近年来&#xff0c;定增成为一种较为老练的公司融资方法&#xff0c;它通过向指定政策定向发行股份来筹集资金&#xff0c;相关于非公开发行股票或增发股份&#xff0c;定增的市场轰动和价格变化相对较小。但是&#xff0c;定增股票发行通常会推动股价的不坚决和出资者的心境崎…

Prometheus+Ansible+Consul实现服务发现

一、简介 1、Consul简介 Consul 是基于 GO 语言开发的开源工具&#xff0c;主要面向分布式&#xff0c;服务化的系统提供服务注册、服务发现和配置管理的功能。Consul 提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。 在没有使用 consul 服…

【社会网络分析第5期】gephi使用指南

gephi数据可视化 gephi数据可视化1、软件安装2、数据处理与导入&#xff08;1&#xff09;导入节点&#xff08;2&#xff09;导入边&#xff08;3&#xff09;改变节点的颜色&#xff08;4&#xff09;根据pagerank调整节点的大小&#xff08;5&#xff09;根据pagerank调整边…

上海亚商投顾:沪指缩量调整跌 高位强势股继续退潮

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数11月10日弱势震荡&#xff0c;上证50盘中跌超1%&#xff0c;以保险为首的权重板块走势较弱。 高位强…

SpringCloudalibaba

一、分布式和微服务 分布式系统和服务是现代软件开发中的两个重要概念。它们为复杂的应用程序提供了模块化和可扩展性&#xff0c;使其能够在多台机器上运行&#xff0c;并为大量用户提供服务。 分布式系统 定义: 分布式系统是由多个独立组件组成的系统&#xff0c;这些组件…

Maven 插件统一修改聚合工程项目版本号

目录 引言直接修改 pom.xml 的版本号的问题Maven 插件修改版本号开源项目微服务商城项目前后端分离项目 引言 在Maven项目中&#xff0c;我们通常有两种常见的方式来修改版本号&#xff1a;直接在pom.xml文件中手动编辑和利用Maven插件进行版本号调整。 本文将比较这两种修改…

R语言编写代码示例

R语言编写的爬虫程序&#xff0c;使用了requests库来发送请求&#xff0c;使用BeautifulSoup库来解析HTML。 r # 第一步&#xff0c;安装必要的库 install.packages("xml2") install.packages("requests") install.packages("httr") install.pac…

【系统安装】ubuntu20.04安装,正经教程,小白安装教程,百分百成功安装

1、安装的前提是有启动盘&#xff0c;这个比较好处理&#xff0c;清华源找到ubuntu20.04.iso镜像文件下载&#xff0c;然后用Rufus来制作启动盘就可以了&#xff0c;需要注意的是目标文件系统需要是UEFI&#xff0c;其他的话就没太多要求了&#xff0c;如果卡在这一步的话&…

助力燃气安全运行:智慧燃气管网背景延展

关键词&#xff1a;城市燃气管网、智慧燃气管网、智慧管网、智慧燃气管网解决方案、智慧燃气 01背景 当前&#xff0c;随着我国城市化进程不断加快&#xff0c;城市燃气管网也不断延伸&#xff0c;运行规模庞大&#xff0c;地下管线复杂&#xff0c;不少城市建设“重地上轻地…

Windows系统下使用docker部署redis

使用虚拟机部署redis&#xff0c;虚拟机很占用电脑资源&#xff0c;所以选择使用docker对redis进行部署。 一、安装docker 安装链接&#xff1a;https://docker.p2hp.com/ 二、配置redis.conf文件 下载配置文件&#xff1a;https://download.redis.io/redis-stable/redis.con…

Js 语句

JavaScript 语句向浏览器发出的命令&#xff0c;语句的作用是告诉浏览器该做什么&#xff1b;分号用于分隔 JavaScript 语句&#xff0c;通常我们在每条可执行的语句结尾添加分号&#xff1b;使用分号的另一用处是在一行中编写多条语句。 JavaScript 语句通常以一个 语句标识符…