Spring学习笔记-基础

前言:我是在哔哩哔哩上黑马程序员上找的课程。-----2024-12-16

官网Spring | Homeicon-default.png?t=O83Ahttps://spring.io/

Sping全家桶中重要三个:

Spring Framework底层框架,在整个全家通中,所有的技术依赖它执行。

Spring Boot简化开发加速开发 

Spring cloud 分布式开发

框架:

IoC 控制反转:对象的创建控制权由程序转移到外部(简单来说,在类里面创建对象,使用text1,现在又有一个text2要使用,业务层部分也要进行改变需要再次引用text2 ,耦合度高,只改了一点就要改多处地方,解决方法就是,在使用对象的时候,在程序中不主动使用new产生对象,而是由外部提供对象。就是为了解耦) 

 

练习IoC,String入门,以下为原装Java代码:

IOC实现

思路

一:原来的所有代码不动,打开pom.xml文件,引入org.springframework

如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>SpringText1</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

</project>

二:打开IDEA点击右侧m,查看包的情况

三:打开resources文件夹 新建文件(applicationContext.xml)如下所示

然后配置bean

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--1导入坐标-->
<!--    2配置bean-->
<!--    bean标签表示配置bean
id属性表示给bean起一个名字
class属性表示给bean定义类型-->
    <bean id="bookDao" class="org.example.dao.impl.BookDaoImpl"/>
    <bean id="bookService" class="org.example.service.impl.BookServiceImpl"/>
</beans>

四:新建一个APP入口文件如下所示:

里面的代码

package org.example;

import org.example.dao.impl.BookDao;
import org.example.service.impl.BookService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;



public class APP {
    public static void main(String[] args) {
        //3 获取IOC容器
        ApplicationContext ctx =new ClassPathXmlApplicationContext("applicationContext.xml");
        // 4 获取bean
        BookService bookService = (BookService) ctx.getBean("bookService");
        bookService.save();
        BookDao bookDao=(BookDao) ctx.getBean("bookDao");
        bookDao.save();
    }
}

解释:

ApplicationContext 是 Spring 框架中最核心的接口之一,代表了 IOC容器。它的作用是管理整个Spring应用的bean生命周期,负责创建、初始化、销毁bean,并且处理依赖注入。

ClassPathXmlApplicationContextApplicationContext 的一个具体实现,它从类路径中的 applicationContext.xml 文件中读取Spring的配置。这是最常见的配置方式之一,特别是在Spring的早期版本。

运行结果都是:

DI练习 解决耦合

原装代码在上个IOC练习的基础上来做

思路

一:去BookServiceImpl文件修改,不在以new形式创建对象

原来BookServiceImpl文件类容

package org.example.service.impl;

import org.example.dao.impl.BookDao;
import org.example.dao.impl.BookDaoImpl;

public class BookServiceImpl implements BookService {
  private final BookDao bookDao=new BookDaoImpl();

    public void save() {
        System.out.println("book service save");
        bookDao.save();
    }
}

 修改后:

package org.example.service.impl;

import org.example.dao.impl.BookDao;
import org.example.dao.impl.BookDaoImpl;

public class BookServiceImpl implements BookService {
  //5删除业务层中使用的new的方式创建的dao对象
    private  BookDao bookDao;

    public void save() {
        System.out.println("book service save");
        bookDao.save();
    }
    //6.提供对应的set方法,让对象进入到service中
    public void  setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

二:写配置,告诉相应的关系

看注释7

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--1导入坐标-->
<!--    2配置bean-->
<!--    bean标签表示配置bean
id属性表示给bean起一个名字
class属性表示给bean定义类型-->
    <bean id="bookDao" class="org.example.dao.impl.BookDaoImpl"/>
    <bean id="bookService" class="org.example.service.impl.BookServiceImpl">
<!--        dao放在service上-->
<!--        7.配置service与dao关系-->
<!--        prperty表示配置当前bean的属性
name表示配置哪一个具体的属性
ref表示参照哪一个bean-->
        <property name="bookDao" ref="bookDao"/>
    </bean>
</beans>

--------------------------------------------------------------------------------------------------2024-12-17

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

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

相关文章

CNAS-AL06《实验室认可领域分类》修订,软件测试领域整体修订

为了不断适应行业发展的需要&#xff0c;进一步完善认可评审管理工作&#xff0c;进一步提高认可评审工作质量&#xff0c;CNAS认可委针对CNAS-AL06《实验室认可领域分类》进行了修订&#xff0c;并于近日正式发布。 原文件CNAS-AL06:20220101有25项一级代码&#xff0c;其中0…

单片机原理及应用笔记:单片机中断系统原理与项目实践

高金鹏&#xff1a;男&#xff0c;银川科技学院计算机与人工智能学院&#xff0c;2022级别计算机科学与技术本科生&#xff0c;单片机原理及应用课程第六组。 指导教师&#xff1a;王兴泽 电子邮件&#xff1a;高金鹏3535558665qq.com 个人CSDN:暴躁的海绵宝宝 暴躁的海绵宝…

【win10+RAGFlow+Ollama】搭建本地大模型助手(教程+源码)

一、RAGFlow简介 RAGFlow是一个基于对文档深入理解的开源RAG&#xff08;Retrieval-augmented Generation&#xff0c;检索增强生成&#xff09;引擎。 主要作用&#xff1a; 让用户创建自有知识库&#xff0c;根据设定的参数对知识库中的文件进行切块处理&#xff0c;用户向大…

在 Ubuntu 上部署 Terraform 管理平台:实现云基础设施的集中管理

简介 Terraform 是一款开源基础架构自动化工具&#xff0c;可让您通过命令行界面部署和管理数百台服务器。使用 Terraform&#xff0c;你可以通过在一个人类可读的文件中定义配置来构建、更改和管理你的基础架构。它支持许多云提供商&#xff0c;如 AWS、Azure、GCP 和阿里巴巴…

概率论得学习和整理25:EXCEL 关于直方图/ 频度图 /hist图的细节,2种做hist图的方法

目录 1 hist图的特点 2 hist的设置技巧&#xff1a;直接生成的hist图往往很奇怪不好用&#xff1a;因为横轴的分组不对 3 如何修改分组 4 设置开放边界&#xff0c;把长尾合并&#xff0c;得到hist图1 5 用原始表得到频数表 6 用上面的频数图做柱状图&#xff0c;再修改&…

RabbitMQ的核心组件有哪些?

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ的核心组件有哪些&#xff1f;】面试题。希望对大家有帮助&#xff1b; RabbitMQ的核心组件有哪些&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RabbitMQ是一个开源的消息代理&#xff08;Messag…

桥接模式的理解和实践

桥接模式&#xff08;Bridge Pattern&#xff09;&#xff0c;又称桥梁模式&#xff0c;是一种结构型设计模式。它的核心思想是将抽象部分与实现部分分离&#xff0c;使它们可以独立地进行变化&#xff0c;从而提高系统的灵活性和可扩展性。本文将详细介绍桥接模式的概念、原理…

【原创教程】西门子1500TCP_UDP通信说明大全(下篇)

2.3.3 TRCV故障说明 通讯无法正常连接时,ERROR引脚和STATUS引脚得状态有助于我们判断错误得原因,根据下表得提示,快速排除问题。 2.3.4 TRCV使用 点击TRCV指令得右上角蓝色图标,打开开始组态画面,按照控制要求填写 EN_R:用于激活接收的控制参数,及何时使用TRCV的接收功…

Grafana配置告警规则推送企微机器人服务器资源告警

前提 已经部署Grafana&#xff0c;并且dashboard接入数据 大屏编号地址&#xff1a;Node Exporter Full | Grafana Labs 创建企微机器人 备注&#xff1a;群里若有第三方外部人员不能创建 机器人创建完成&#xff0c;记录下来Webhook地址 Grafana配置告警消息模板 {{ define &…

RabbitMQ如何构建集群?

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ如何构建集群&#xff1f;】面试题。希望对大家有帮助&#xff1b; RabbitMQ如何构建集群&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在RabbitMQ中&#xff0c;集群&#xff08;Cluster&#x…

JDK以及JRE

目录 1.常用的快捷键操作2.重要的dos命令3.Jre&#xff08;java Runtime environment&#xff09;4.Jdk&#xff08;java development kit&#xff09;5.安装JDK6.JDK的目录7.Jdk的环境变量配置8.写第一个java程序8.1 安装UE软件8.2 写第一个HelloWorld 9.java运行机制 1.常用的…

Groovy 语法快速入门

文章目录 1. Groovy 的特点2. 基本语法2.1. 变量2.2. 字符串2.3. 条件语句 3. 集合操作3.1. 列表&#xff08;List&#xff09;3.2. 映射&#xff08;Map&#xff09; 4. 循环语句4.1. 普通循环4.2. 闭包遍历 5. 方法定义6. 闭包&#xff08;Closure&#xff09;6.1. 定义与调用…

MySQL 事务管理

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 MySQL 事务管理 收录于专栏[MySQL] 本专栏旨在分享学习MySQL的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 CURD 不加控制&#xff0…

【大模型微调学习5】-大模型微调技术LoRA

【大模型微调学习5】-大模型微调技术LoRA LoRa微调1.现有 PEFT 方法的局限与挑战2.LoRA: 小模型有大智慧 (2021)3.AdaLoRA: 自适应权重矩阵的高效微调 (2023)4.QLoRA: 高效微调量化大模型 (2023) LoRa微调 1.现有 PEFT 方法的局限与挑战 Adapter方法&#xff0c;通过增加模型深…

Windows server服务器之网络安全管理(防火墙入站规则创建)

任务14.1 Windows server 防火墙的管理 系统防火墙概述&#xff1a;无论哪一种操作系统都有自己的防火墙&#xff0c;无论是客户端OS还是服务器端的NOS都有防火墙。 winr-control----打开控制面板 上图是Windows客户端的防火墙&#xff0c;三个重点要关注的内容&#xff1b;网…

【Python】PyWebIO 初体验:用 Python 写网页

目录 前言1 使用方法1.1 安装 Pywebio1.2 输出内容1.3 输入内容 2 示例程序2.1 BMI 计算器2.2 Markdown 编辑器2.3 聊天室2.4 五子棋 前言 前两天正在逛 Github&#xff0c;偶然看到一个很有意思的项目&#xff1a;PyWebIo。 这是一个 Python 第三方库&#xff0c;可以只用 P…

四、CSS3

一、CSS3简介 1、CSS3概述 CSS3 是 CSS2 的升级版本&#xff0c;他在CSS2的基础上&#xff0c;新增了很多强大的新功能&#xff0c;从而解决一些实际面临的问题。 CSS在未来会按照模块化的方式去发展&#xff1a;https://www.w3.org/Style/CSS/current-work.html …

Loki 微服务模式组件介绍

目录 一、简介 二、架构图 三、组件介绍 Distributor&#xff08;分发器&#xff09; Ingester&#xff08;存储器&#xff09; Querier&#xff08;查询器&#xff09; Query Frontend&#xff08;查询前端&#xff09; Index Gateway&#xff08;索引网关&#xff09…

上海亚商投顾:创业板指缩量下跌 多只高位股午后跌停

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 市场全天震荡调整&#xff0c;创业板指领跌&#xff0c;高位股开始出现退潮&#xff0c;建设工业、星光股份、…

libnanomsg详解

libnanomsg&#xff0c;或简称为nanomsg&#xff0c;是一个高性能的消息传递库&#xff0c;它为开发者提供了简单且高效的“可扩展协议”实现。以下是对libnanomsg的详细解析&#xff1a; 一、基本概述 项目地址&#xff1a;GitCode - 全球开发者的开源社区,开源代码托管平台 …