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

[WEB开发] Web基础

一. HTTP

在之前的文章中, 我们已经详细学习过HTTP了.

  • [计算机网络] HTTP/HTTPS

二. Web基础

2.1 spring全家桶

  • spring framework: spring最底层的框架.
    Spring Framework 是一个功能强大的 Java 应用程序框架,旨在提供高效且可扩展的开发环境。它结合了轻量级的容器(IOC)和依赖(DI)注入功能,提供了一种使用 POJO 进行容器配置和面向切面的编程的简单方法,以及一组用于AOP的模块.
  • spring boot: 用来快速的构建spring项目.
    Spring Boot 是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能,降低了复杂性,同时支持基于JVM的多种开源框架,可以缩短开发时间,使开发更加简单和高效。
  • spring cloud: 微服务.
  • spring data: 数据库.
    详细介绍两个, 具体可以参考spring官网和spring中文网.

2.2 SpringWebBoot入门程序

在这里插入图片描述
在这里插入图片描述

  • @SpringBootApplication: 启动类
  • @RestController:请求处理类
  • @RequestMapping: 标记资源路径 (资源路径 = 类路径 + 方法路径)

2.3 面试题: 为什么一个main方法就能将web程序启动?

答: 本质上web程序的启动依赖于web服务器. 调用run方法之后, web服务器tomcat启动, 再把程序部署在tomcat服务器中. web程序就启动了.在这里插入图片描述这其中利用了maven一个非常重要的特性 - 依赖继承性. 只需要在pom.xml文件中引入spring-boot-starter-web依赖就好.
在这里插入图片描述
在这里插入图片描述

2.4 分层解耦

2.4.1 三层架构

  • controller: 接收请求, 响应数据.
  • service: 逻辑处理
  • dao(data access object): 数据访问.
    在这里插入图片描述

2.4.2 IOC

IOC(inversion of controller): 控制反转.
把对象的创建控制权由程序自身转移到了容器.
就是把某个对象交给IOC容器管理.

使用以下注解, 标记将对象交给IOC容器管理:

  • @Component (通用)
  • @Controller (请求响应层controller)
  • @Service (逻辑处理层service)
  • @Repository (数据访问层dao)

但是, 要让以上4个注解生效, 还需要进行组件扫描, 使用到的注解是 @ConponentScan.
注意:

  • @SpringBootApplication 继承了 @Component注解.
  • @Component 组件扫描的范围是: 当前包和当前包的子包.
    在这里插入图片描述

2.4.3 DI

DI(dependency injection): 依赖注入.
容器为应用程序提供运行时所依赖的资源.

基于@Autowired的三种依赖注入方式:

  • 属性注入

    • 在这里插入图片描述
  • 构造函数注入(如果只有一个构造函数, @Autowired可以省略)

    • 在这里插入图片描述
  • set方法注入

    • 在这里插入图片描述

2.4.4 IOC容器中存在多个相同类型Bean, DI如何注入?

在这里插入图片描述

此时不处理多种Bean, 会报如下错误:
在这里插入图片描述

解决:

  • 被@Primary注解的Bean优先注入

    • 在这里插入图片描述
  • @Qualifier 与 @Autowired配合使用, 参数是bean名

    • 在这里插入图片描述
  • @Resource

    • 在这里插入图片描述

2.4.5 @Autowired 与 @Resource的区别

  • @Autowired是spring框架提供的, @Resource是java提供的.

    • 在这里插入图片描述
  • @Autowired是按照类型注入的, @Resource是按照bean名注入的.


http://www.kler.cn/a/588313.html

相关文章:

  • 由一个话题进入DFMEA(设计失效模式及影响分析)
  • 关于新奇的css
  • 强化学习 - PPO控制无人机
  • 第5章 构造、析构、拷贝语义学2: 继承情况下的对象构造
  • ETIMEDOUT 网络超时问题
  • Webpack总结
  • PowerBI数据建模基础操作1:数据关系(基数、双向筛选、常规关系、有限关系)与星型架构(维度表、事实表)
  • ArcGis使用-对轨迹起点终点的网格化编号
  • React(二):JSX语法解析+综合案例
  • 单片机自学指南
  • Java 绘制图形验证码
  • 【数据库相关】mysql数据库巡检
  • Adobe Premiere Pro的简单音频调节
  • 介绍如何使用YOLOv8模型进行基于深度学习的吸烟行为检测
  • Java集合简单理解
  • 快速导出接口设计表——基于DOMParser的Swagger接口详情半自动化提取方法
  • 物联网(Internet of Things,IoT)的核心概念
  • 【机器学习】主成分分析法求数据前n个主成分
  • 基于javaweb的SpringBoot精美物流管理系统设计与实现(源码+文档+部署讲解)
  • 地基Prompt提示常用方式