当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/229384.html

相关文章:

  • 基于C#开发的任天堂 Switch 开源模拟器
  • 做一个Sprngboot文件上传-阿里云
  • k8s ----对外暴露
  • 每日一题(LeetCode)----数组--长度最小的子数组
  • TCP与UDP
  • js实现对象数组去重
  • 2023 极术通讯-安谋科技发布“山海”S20F安全解决方案,持续加码智能汽车“芯”赛道
  • GRPC学习
  • c++ latch 使用详解
  • linux 下正确使用cp命令复制目录
  • CTF----Web真零基础入门
  • css实现元素四周阴影
  • 《QT从基础到进阶·二十五》界面假死处理
  • 卷积神经网络(1)
  • Mysql中名叫infomaiton_schema的数据库是什么东西?
  • Django(复习篇)
  • MySQL里对时间的加减操作及常用语法
  • 『MySQL快速上手』-⑨-复合查询
  • 高并发架构设计(三大利器:缓存、限流和降级)
  • ElasticSearch7.x - HTTP 操作 - 文档操作
  • [数据结构大作业]HBU 河北大学校园导航
  • 立体库堆垛机控制程序手动功能实现
  • git commit提交报错
  • OpenSIPS自定义统计项目
  • python数据结构与算法-02_数组和列表
  • 计算机网络基础知识-网络协议
  • 【Vue3】scoped 和样式穿透
  • Python 邮件发送(163为例)
  • BlendTree动画混合算法详解
  • 2013年01月16日 Go生态洞察:并发不是并行