JavaWeb学习打卡-Day1-分层解耦、Spring IOC、DI

三层架构

  • Controller(控制层):接收前端发送的请求,对请求进行处理,并响应数据
  • Service(业务逻辑层):处理具体的业务逻辑
  • DAO(数据访问层/持久层):负责数据访问,包括增删改查。

分层解耦

  • 控制反转:Inversion Of Control,IOC。对象的创建控制权由程序自身转移到外部(容器),这种思想称为控制反转。
  • 依赖注入:Dependency Injection,DI。容器为应用程序提供运行时所依赖的资源,称之为依赖注入。
  • Bean对象:IOC 容器中创建、管理的对象,称之为bean。
  • 步骤:
    • 希望将 Service 层及 Dao 层的对象,交给 IOC 容器管理,成为IOC容器中的 bean:在对应的类前添加@Component注解。
    • 为 Controller 及 Service 注入运行时依赖的对象:添加@Autowired注解。

IOC 详解

  • 要把某个对象交给IOC容器管理,需要在对应的类前加上如下注解之一:

    注解说明位置
    @Component声明bean的基础注解不属于以下三类时,用此注解(工具类)
    @Controller@Component的行生注解标注在控制器类上
    @Service@Component的行生注解标注在业务类上
    @Repository@Component的行生注解标注在数据访问类上(由于与mybatis整合,用的少)
  • 声明 bean 的时候可以通过 value 属性指定 bean 的名字,如果没有指定,默认为类名首字母小写。

  • 使用以上四个注解都可以声明 bean,但是在 springboot 集成 web 开发中,声明控制器 bean 只能用@Controller

  • 前面声明 bean 的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描@Componentscan注解虽然没有显式配置,但是实际上已经包含在了启动类声明注解@SpringBootApplication中,默认扫描的范围是启动类所在包及其子包

DI 详解

  • @Autowired注解,默认是按照类型进行,如果存在多个相同类型的 bean,将会报错。 依赖注入
  • @Resource 与 @Autowired 的区别?
    • @Autowired 是spring框架提供的注解,而@Resource是JDK提供的注解
    • @Autowired 默认是按照类型注入,而@Resource默认是按照名称注入。

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

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

相关文章

【含文档+PPT+源码】基于Python爬虫二手房价格预测与可视化系统的设计与实现

项目介绍 本课程演示的是一款基于Python爬虫二手房价格预测与可视化系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 带你从零开始部署运行本套系统 该项…

游戏引擎学习第229天

仓库:https://gitee.com/mrxiao_com/2d_game_5 回顾上次内容并介绍今天的主题 上次留下的是一个非常简单的任务,至少第一步是非常简单的。我们需要在渲染器中加入排序功能,这样我们的精灵(sprites)才能以正确的顺序显示。为此我…

【“星瑞” O6 评测】—NPU 部署 face parser 模型

前言 瑞莎星睿 O6 (Radxa Orion O6) 拥有高达 28.8TOPs NPU (Neural Processing Unit) 算力,支持 INT4 / INT8 / INT16 / FP16 / BF16 和 TF32 类型的加速。这里通过通过官方的工具链进行FaceParsingBiSeNet的部署 1. FaceParsingBiSeNet onnx 推理 首先从百度网盘…

单例模式的使用场景 以及 饿汉式写法(智能指针)

单例模式的使用场景 以及 饿汉式写法(智能指针) 饿汉式:创建类时就已经创建好了类的实例(用智能指针实现)什么时候用单例模式:1. 全局配置管理2. 日志系统3. 资源管理器4. 硬件设备访问总结 饿汉式&#xf…

微信小程序的全局变量(quanjubianliang)

在微信小程序开发中,管理和使用全局变量是一种常见的需求。例如,可以通过小程序的App实例和globalData对象来实现全局变量的存储和共享。以下是详细说明: 1. 全局变量的定义 微信小程序提供了 App() 函数,其中可以定义一个 global…

Latex科研入门教程

Introduction 这篇文章适合有markdown基础的人看,不会的人可以先去学一下markdown. 仅适用于科研入门. 本文使用的latex环境为overleaf Latex概况 文件格式 以.tex为结尾的文件可能有多个.tex文件最终只编译一个文件,相当于一个文件控制其他子文件. Latex 代码分为三种&…

FastGPT Docker Compose本地部署与硅基流动免费AI接口集成指南

本文参考:https://doc.tryfastgpt.ai/docs/development/ 一、背景与技术优势 FastGPT是基于LLM的知识库问答系统,支持自定义数据训练与多模型接入。硅基流动(SiliconFlow)作为AI基础设施平台,提供高性能大模型推理引…

19_大模型微调和训练之-基于LLamaFactory+LoRA微调LLama3

基于LLamaFactory微调_LLama3的LoRA微调 1. 基本概念1.1. LoRA微调的基本原理1.2. LoRA与QLoRA1.3. 什么是 GGUF 2.LLaMA-Factory介绍3. 实操3.1 实验环境3.2 基座模型3.3 安装 LLaMA-Factory 框架3.3.1 前置条件 3.4 数据准备3.5 微调和训练模型torch.cuda.OutOfMemoryError: …

Linux Wlan-四次握手(eapol)框架流程

协议基础 基于 IEEE 802.1X 标准实现的协议 抓包基础 使用上一章文章的TPLINK wn722n v1网卡在2.4G 频段抓包(v2、v3是不支持混杂模式的) eapol的四个交互流程 根据不同的认证模式不同,两者的Auth流程有所不同,但是握手流程基…

基于亚马逊云科技 Amazon Bedrock Tool Use 实现 Generative UI

背景 在当前 AI 应用开发浪潮中,越来越多的开发者专注于构建基于大语言模型(LLM)的 chatbot 和 AI Agent。然而,传统的纯文本对话形式存在局限性,无法为用户提供足够直观和丰富的交互体验。为了增强用户体验&#xff…

第 2 篇:初探时间序列 - 可视化与基本概念

第 2 篇:初探时间序列 - 可视化与基本概念 (图片来源: Luke Chesser on Unsplash) 在上一篇《你好,时间序列!》中,我们了解了什么是时间序列数据以及学习它的重要性。现在,是时候卷起袖子,真正开始接触和探…

Linux服务器配置Anaconda环境、Pytorch库(图文并茂的教程)

引言:为了方便后续新进组的 师弟/师妹 使用课题组的服务器,特此编文(ps:我导从教至今四年,还未招师妹) ✅ NLP 研 2 选手的学习笔记 笔者简介:Wang Linyong,NPU,2023级&a…

Spring-AOP分析

Spring分析-AOP 1.案例引入 在上一篇文章中,【Spring–IOC】【https://www.cnblogs.com/jackjavacpp/p/18829545】,我们了解到了IOC容器的创建过程,在文末也提到了AOP相关,但是没有作细致分析,这篇文章就结合示例&am…

【Python网络爬虫开发】从基础到实战的完整指南

目录 前言:技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块技术选型对比 二、实战演示环境配置要求核心代码实现(10个案例)案例1:基础静态页面抓取案例2:动…

服务器监控软件推荐

以下是几款常用的服务器监控软件推荐,涵盖开源和商业方案,适用于不同规模和需求: 一、开源免费方案 Prometheus Grafana 特点:时序数据库 可视化仪表盘,支持多维度监控和告警。适用场景:云原生、Kubernet…

编译原理实验(四)———— LR(1)分析法

一、实验目的 掌握LR(1)分析法的基本原理与实现流程。通过构造LR(1)分析表,验证符号串是否符合给定文法规则。理解LR(1)分析中向前搜索符(Lookahead Symbol)的作用,解决移进-归约冲突。 二、实验题目 1.对下列文法,用…

vue3 主题模式 结合 element-plus的主题

vue3 主题模式 结合 element-plus的主题 npm i element-plus --save-dev在 Vue 3 中,实现主题模式主要有以下几种方式 1.使用 CSS 变量(自定义属性) CSS 变量是一种在 CSS 中定义可重用值的方式。在主题模式中,可以将颜色、字体…

科大讯飞Q1营收46.6亿同比增长27.7%,扣非净利同比增长48.3%

4月21日盘后,AI龙头科大讯飞(002230.SZ)发布2024年报,公司全年实现营业收入233.43亿元,同比增长18.79%,同期归母净利润为5.6亿元。 公司核心赛道业务保持快速增长,消费者、教育、汽车、医疗业务…

Day5-UFS总结

UFS 传输协议的本质:两个收发器件,对需要传输的数据,一层一层的封装和解析,利用封装增加的额外信息,做一些数据处理,完成源地址到目标地址的数据传输功能。 应用协议的本质:基于某种传输协议之…

嵌入式工程师( C / C++ )笔试面试题汇总

注:本文为 “嵌入式工程师笔试面试题” 相关文章合辑。 未整理去重。 如有内容异常,请看原文。 嵌入式必会 C 语言笔试题汇总 Z 沉浮 嵌入式之旅 2021 年 01 月 19 日 00:00 用预处理指令 #define 声明一个常数,用以表明 1 年中有多少秒&a…