11-13 spring整合web

news/2025/3/23 15:20:24/

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域上


http://www.ppmy.cn/news/1217345.html

相关文章

3、RGB和通道(channel)

在灰度图一节的最后,给出了一个由彩色图片转成灰度图的示例,并且通过 `color_image.mode`获取了图片的格式:彩色图片获取到的格式为 RGBA,灰度图为L。 这一节介绍一下 RGB 图片以及通道的概念,我个人感觉通道在整个深度学习中很重要,并且极为重要。 举个例子:在很多时候…

【STM32/FreeRTOS】SysTick定时器及FreeRTOS系统节拍

目录 一、SysTick定时器 1、SysTick寄存器介绍 (1)控制及状态寄存器 (2)重装载数值寄存器 (3)当前数值寄存器 2、SysTick寄存器配置函数 二、FreeRTOS中的SysTick定时器 1、SysTick配置函数及分析 …

SpringBoot 自定义参数校验(5)

文章目录 前言方式一 @Pattern方式二 自定义参数校验Controller层请求示例前言 本文基于SpringBoot 3.1.2,使用自定义参数规则来处理参数校验。 方式一 @Pattern 使用@Pattern,自定义正则表达式,以下是一个校验IP地址的示例: import jakarta.validation.constraints.Not…

显卡服务器租用价格受哪些因素影响

显卡服务器也叫做GPU服务器,是一种有高性能显卡的服务器系统,显卡服务器能在大数据处理、科学计算等领域有很好的性能表现。今天小编就给大家讲一讲显卡服务器租用价格受哪些因素影响呢? 1.显卡类型和数量:一般说来中高端显卡的租…

Java设计一个简单的能保留计算过程的计算器

介绍 计算器是我们日常生活中常用的工具之一,它能够进行基本的数学运算,如加法、减法、乘法和除法。而在设计一个计算器时,我们可以通过使用Java编程语言来实现一个简单的控制台计算器,并且让它能够保留计算过程。 设计思路 为…

6.4.图标集合图层(ItemizedIconOverlay)

愿你出走半生,归来仍是少年&#xff01; ItemizedIconOverlay可在一个图层中承载多个可符号化的点要素&#xff0c;且每个要素的符号化可自行定义。 1.构造 ItemizedIconOverlay(List<Item> pList, Drawable pDefaultMarker, ItemizedIconOverlay.OnItemGestureListene…

HMM与LTP词性标注之马尔科夫模型(HMM代码实现)

目录 原始代码请介绍下面代码的 整体流程 的和要实现的目的像debug一样逐行解释下面的代码 原始代码 import numpy as npstatus [rainy, sunny] # 隐藏序列 obs [walk, shop, clean] # 观测序列# 初始状态PI (必须是一维向量) init_probability np.array([0.6, 0.4]) # 状…

【JAVA学习笔记】70 - 反射

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter23/src 反射 一、反射的引出 package com.yinhai.reflection.question;import com.yinhai.Cat;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IO…