Spring炼气之路(炼气一层)

news2024/12/23 5:06:38

目录

一、IOC

1.1 控制反转是什么? 

1.2 什么是IOC容器?

1.3 IOC容器的作用

1.4 IOC容器存放的是什么?

二、DI

2.1 依赖注入是什么?

2.2 依赖注入的作用

三、IOC案例实现

3.1下载Maven

 3.2 配置Maven中的settings.xml文件

3.2.1 配置本地库

3.2.2 配置中央仓库

3.2.3 配置JDK版本

3.3 配置Maven的环境变量

        3.3.1 打开环境变量

        3.3.2 配置系统变量

       3.3.3 配置path中的环境变量     

3.4 验证Maven安装和配置是否成功    ·   

3.5创建maven项目 

3.6 添加Spring的依赖jar包

3.7 完成IOC容器中bean的配置

3.8获取IOC容器 ,调用方法

四、DI案例实现

4.1配置bean的依赖关系


 

                         前言:初识Spring-CSDN博客

一、IOC

                IOC(Inversion of Control)控制反转

1.1 控制反转是什么? 

                使用对象时,由主动new产生对象转换为由外部提供对象,在这个过程中,对象创建控制权由程序转移到外部

1.2 什么是IOC容器?

                Spring创建了一个容器用来存放所创建的对象,这个容器就叫做IOC容器

1.3 IOC容器的作用

                对象管理:IOC容器负责管理组件的生命周期,包括创建、配置和销毁等过程

                控制反转:IOC容器通过将对象的创建和依赖关系的管理责任交给第三方容器,实现了控制反转的思想,降低了程序的耦合度,提高了程序的扩展性

1.4 IOC容器存放的是什么?

                被创建和管理的对象在IOC容器中统称为Bean,IOC容器存放的就是一个个Bean对象

二、DI

                DI(Dependency Injection)依赖注入

2.1 依赖注入是什么?

                在容器中建立Bean与Bean之间的依赖关系的整个过程,被称为依赖注入

2.2 依赖注入的作用

                充分解耦:依赖注入是IOC的一种具体实现方式,它通过配置文件将对象依赖的属性注入到对象中,从而解耦对象之间的依赖关系。

三、IOC案例实现

3.1下载Maven

网址:Maven – Download Apache Maven

 注意:IDEA版本和Maven版本可能出现不兼容问题,下载兼容版本即可(可以参照下表)

IDEAMaven
IDEA 2018兼容Maven 3.6.1及之前所有版本
IDEA 2020兼容Maven 3.6.3及之前所有版本
IDEA 2021兼容Maven 3.8.1及之前的所有版本
IDEA 2022兼容Maven 3.8.1及之前的所有版本

下载其他版本方法

 3.2 配置Maven中的settings.xml文件

3.2.1 配置本地库

              原因:Maven初始化后,在C盘会出现.m2文件,就是存放下载下来的jar包的。后面下载的文件过多,会导致C盘空间不足。建议在其他盘符新建一个文件夹

        代码:

  <localRepository>D:\Maven\repository</localRepository>

3.2.2 配置中央仓库

              原因:因为我们使用的jar包不存在时,会从中央仓库来下载。但是因为是在外网,所以下载速度可能很慢。因此我们要配置镜像源 ,使用阿里云镜像源

               setting.xml文件位置:

               代码:直接复制即可

  <mirror>
	<id>alimaven</id>
	<mirrorOf>central</mirrorOf>
	<name>aliyun maven</name>
	<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>

3.2.3 配置JDK版本

                原因:以后创建项目时,可以直接默认你配置的JDK

   代码:

<profile>
	<id>jdk1.8</id>
	<activation>
		<activeByDefault>true</activeByDefault>
		<jdk>1.8</jdk>
	</activation>
	<properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
	</properties>
</profile>

3.3 配置Maven的环境变量

        3.3.1 打开环境变量

        

        3.3.2 配置系统变量

       3.3.3 配置path中的环境变量     

    3.4 验证Maven安装和配置是否成功    ·   

        方式:   win+R 输入 cmd 回车 在命令提示符中输出 mvn 

      

查看Maven版本 : win+R 输入 cmd 回车 在命令提示符中输出 mvn  -version

3.5创建maven项目 

                新建项目,选择Maven,一步步操作即可。

项目结构:

3.6 添加Spring的依赖jar包

        在pom.xml输入:

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

3.7 完成IOC容器中bean的配置

1.新建配置文件 文件名:applicationContext.xml

2.代码:

<?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.  导入Spring的坐标spring-context-->

    <!-- 2.   配置bean-->
    <bean id="bookDao" class = "com.zhang.dao.impl.BookDaoImpl"/>
    <bean id="bookService" class="com.zhang.service.impl.BookServiceImpl"/>

</beans>

3.8获取IOC容器 ,调用方法

  public static void main(String[] args) {
        //获取IOC容器 applicationContext.xml为配置bean
        ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取bean id = "bookDao"
        BookDao bookDao = (BookDao) ac.getBean("bookDao");

        bookDao.sava();//book dao sava

        //获取bean id= “bookService”
        BookService bookService = (BookService) ac.getBean("bookService");

        bookService.sava();//book service sava
                          // book dao sava
    }

四、DI案例实现

4.1配置bean的依赖关系

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
    <!--  1.  导入Spring的坐标spring-context-->

    <!-- 2.   配置bean-->
    <bean id="bookDao" class = "com.zhang.dao.impl.BookDaoImpl"/>
    <bean id="bookService" class="com.zhang.service.impl.BookServiceImpl">
<!--            配置Dao和Service的关系-->
<!--        name表示具体配置的属性-->
<!--        ref 是参照那个属性-->
        <property name="bookDao" ref="bookDao"/>
    </bean>
</beans>

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

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

相关文章

Stable Diffusion科普文章【附升级gpt4.0秘笈】

随着人工智能技术的飞速发展&#xff0c;我们越来越多地看到计算机生成的艺术作品出现在我们的生活中。其中&#xff0c;Stable Diffusion作为一种创新的图像生成技术&#xff0c;正在引领一场艺术创作的革命。本文将为您科普Stable Diffusion的相关知识&#xff0c;带您走进这…

部署一个本地的ChatGPT(Ollama)

一 下载Ollama Ollama下载地址&#xff1a;https://ollama.com/download 下载完后 二 安装运行 双击下载好的OllamaSetup.exe开发 安装Ollama: 安装完成后&#xff0c;多了一个Ollama的菜单如下图 &#xff1a; Ollama安装好默认是配置开机运行&#xff0c;如果没有运行可以在…

python的opencv最最基础初学

localhost中详解OpenCV的函数imread()和函数imshow(),并利用它们实现对图像的读取和显示_opencv imshow-CSDN博客 其实以下均为numpy 显示一张图片 import cv2 ####opencv读取的格式是BGR import matplotlib.pyplot as plt import numpy as np %matplotlib inline imgcv2.…

Golang协程详解

一.协程的引入 1.通过案例文章引入并发,协程概念 见:[go学习笔记.第十四章.协程和管道] 1.协程的引入,调度模型&#xff0c;协程资源竞争问题 通过上面文章可以总结出Go并发编程原理: 在一个处理进程中通过关键字 go 启用多个协程&#xff0c;然后在不同的协程中完成不同的子任…

Spark-Scala语言实战(1)

在之前的文章中&#xff0c;我们学习了如何在Linux安装Spark以及Scala&#xff0c;想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark及Scala的安装https:/…

图像处理ASIC设计方法 笔记11 像素误差与字长优化

P108 P105 定点误差分析与字长优化 1 像素误差是什么原因导致的? 在本书所说的算法中,像素误差是由几次定点运算累加导致的: 首先由行(列)号与定点正弦/正切值计算出该行(列)的小数平移量,然后将这些小数平移量截取一定字长用来计算插值核,再将这些插值核也截取一…

VMware Worksation 问题

几个晚上在虚拟机装了好多东西&#xff0c;配置mysql&#xff0c;配置docker、Git工具等等&#xff0c;可能废寝忘食导致太困强制关了虚拟机&#xff0c;结果第二天晚上回来发现打不开&#xff0c;心态直接崩了。 问题&#xff1a; 疯狂百度告知要删除后缀为.lck的文件夹及文件…

pytorch 实现线性回归(Pytorch 03)

一 线性回归框架 线性模型的四个模块&#xff1a;训练的数据集&#xff0c;线性模型&#xff0c;损失函数&#xff0c;优化算法。 1.1 数据集 使用房价预测数据集&#xff0c;我们希望根据房屋的面积和房龄等来估算房屋价格。 1.2 线性模型 预测公式&#xff0c; 价格 权重…

蓝桥杯练习系统(算法训练)ALGO-969 N车

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 给定NN的棋盘&#xff0c;问有多少种放置N个车使他们不互相攻击的方案。 输入格式 一行一个整数&#xff0c;N。 输出格式…

又是一场心碎的div2

真要破防了&#xff0c;还是没做出C题&#xff0c;感觉这次C已经很简单了。 C题这么多人过&#xff0c;反观D题这个人数有点诡异。但是这么多人过我都没过。看了一个半小时就是没看出哪写错了。 就完全是浪费这么多时间。我真碎了。受不了了。还是晚安吧&#xff0c;每天抄作业…

RT-Thread之USB组件的使用记录(SD卡和USB同时挂载)

前言 使用usb-host组件读取u盘记录同时挂载sd和u盘用到的芯片为stm32f407zgt6u盘的格式为fat 组件选择 文件相关的宏定义 /* DFS: device virtual file system */ /* 设备虚拟文件系统 */ #define RT_USING_DFS #define DFS_USING_WORKDIR #define DFS_FILESYSTEMS_MAX 3 //…

MIT线性代数-方程组的几何解释

文章目录 1. 二维空间1.1 行方向1.2 列方向 2. 三维空间2.1 行方向2.2 列方向 假设有一个方程组 A X B AXB AXB表示如下 2 x − y 0 (1) 2x-y0\tag{1} 2x−y0(1) − x 2 y 3 (2) -x2y3\tag{2} −x2y3(2) 矩阵表示如下&#xff1a; [ 2 − 1 − 1 2 ] [ x y ] [ 0 3 ] (3)…

Python基础入门 --- 4.循环语句

文章目录 Python基础入门第四章&#xff1a;4.1 while循环语句4.1.1 while循环的嵌套4.2 for循环语句4.2.1 range语句4.2.2 变量作用域4.2.3 for循环的嵌套应用 4.3 循环中断 continue和break Python基础入门 第四章&#xff1a; 4.1 while循环语句 语法结构&#xff1a; w…

Day66:WEB攻防-Java安全SPEL表达式SSTI模版注入XXEJDBCMyBatis注入

目录 JavaSec搭建 Hello-Java-Sec搭建 Java安全-SQL注入-JDBC&MyBatis Java安全-XXE注入-Reader&Builder Java安全-SSTI模版-Thymeleaf&URL Java安全-SPEL表达式-SpringBoot框架 知识点&#xff1a; 1、Java安全-SQL注入-JDBC&MyBatis 2、Java安全-XXE注…

html编辑器

HTML 编辑器推荐 html可以使用记事本编辑 但是更建议使用专业的 HTML 编辑器来编辑 HTML&#xff0c;我在这里给大家推荐几款常用的编辑器&#xff1a; VS Code&#xff1a;https://code.visualstudio.com/WebStorm: https://www.jetbrains.com/webstorm/Notepad: https://no…

相机与相机模型(针孔/鱼眼/全景相机)

本文旨在较为直观地介绍相机成像背后的数学模型&#xff0c;主要的章节组织如下&#xff1a; 第1章用最简单的针孔投影模型为例讲解一个三维点是如何映射到图像中的一个像素 第2章介绍除了针孔投影模型外其他一些经典投影模型&#xff0c;旨在让读者建立不同投影模型之间的建模…

考研C语言复习进阶(6)

目录 1. 程序的翻译环境和执行环境 2. 详解编译链接 2.1 翻译环境 ​编辑​编辑 2.2 编译本身也分为几个阶段&#xff1a; 2.3 运行环境 3. 预处理详解 3.1 预定义符号 3.2 #define 3.2.1 #define 定义标识符 3.2.2 #define 定义宏 2.2.3 #define 替换规则 3.2.4…

MySQL语法分类 DQL(6)分页查询

为了更好的学习这里给出基本表数据用于查询操作 create table student (id int, name varchar(20), age int, sex varchar(5),address varchar(100),math int,english int );insert into student (id,name,age,sex,address,math,english) values (1,马云,55,男,杭州,66,78),…

物联网竞赛板CubMx全部功能简洁配置汇总

目录 前言&#xff1a;1、按键&LED灯配置&#xff1a;2、OLED配置&#xff1a;3、继电器配置&#xff1a;4、LORA模块配置&#xff1a;5、矩阵模块&#xff1a;6、串口模块&#xff1a;7、RTC配置&#xff1a;8、ADC模块配置&#xff1a;9、温度传感器模块&#xff1a;后续…

牛客网-SQL大厂面试题-1.各个视频的平均完播率

题目&#xff1a;各个视频的平均完播率 DROP TABLE IF EXISTS tb_user_video_log, tb_video_info; CREATE TABLE tb_user_video_log (id INT PRIMARY KEY AUTO_INCREMENT COMMENT 自增ID,uid INT NOT NULL COMMENT 用户ID,video_id INT NOT NULL COMMENT 视频ID,start_time dat…