四【Spring框架】

news2024/11/17 10:58:21

目录

    • 一 Spring概述
    • 二 .Spring 的体系结构
    • 三 Spring的开发环境
      • 3.1 配置pom.xml文件
    • 四 项目案例:
      • 4.1 创建实体类
      • 4.2 在pom.xml中引入依赖
      • 4.3 配置Spring-config.xml文件
      • 4.4 Test

✅作者简介:Java-小白后端开发者 🥭公认外号:球场上的黑曼巴

🍎个人主页:不会飞的小飞侠24

🍊个人信条:谨 · 信

💞当前专栏:高级内容

🥭本文内容:JAVA -----mybatis框架【mybatis的批量删除 】

更多内容点击👇
小飞侠的博客>>>>欢迎大家!!!

在这里插入图片描述

一 Spring概述

1.1 Spring是为了解决企业应用开发的复杂性而创建的一个轻量级的Java开发框架。Spring的核心是控制反转(IoC)和面向切面编程(AOP)。传统的Java程序,类与类之间存在较强的依赖关系,增加了程序开发的难度,开发某一个类的时候还要考虑对另一个类的影响,一个类的修改往往导致另一个类不得不跟着要修改,程序可维护性和可拓展性变差。使用Spring可以降低代码间的依赖程度(耦合度),为代码“解耦”,提高程序的可拓展性、可复用性和可维护性,使主业务专注于自身的开发。

1.2 Spring降低耦合度的方式有两种:IoC 与 AOP。IoC 是控制反转的意思,它的作用是使得主业务在相互调用过程中,不用再自己维护关系,即无须自己创建要使用的对象了,而是由Spring容器统一管理,自动“注入”。AOP是面向切面编程的意思, AOP技术不用再由程序员用硬编码的方式将系统级服务“混杂”到主业务逻辑中了,而是由Spring 容器统一完成“织入”。

1.3 Spring还提供对其他框架的支持,可以支持MyBatis,Hibernate,struts等框架,简化这些框架使用,通过整合使它们高效地协同工作。

二 .Spring 的体系结构

Spring 有七大功能模块,分别是Spring Core、AOP、ORM、DAO、MVC、WEB和Context。 Spring体系架构如图4.1所示。
在这里插入图片描述

1.core模块:Spring的核心库 提供Ioc 功能。

2.Aop模块:Spring的AOP库.提供AOP的拦截器机制。

3.ORm模块:提供对ORM框架的支持和管理。

4.DAO模块:提供对JDBC的支持,并进行封装,并支持和管理事务。

5.MVC模块:提供MVC的支持 更加简单和方便。

6.Web模块:提供对常见的框架支持。

7.Context :提供Bean的访问方式,其他程序可通过Context访问Spring的Bean资源。

三 Spring的开发环境

3.1 配置pom.xml文件

之所以引入Spring-context.jar 只因为在依赖此jar包时,会依赖其他三个,即 自动下载相关依赖–可查看受否成功

 <!--引入spring的依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.3.9</version>
    </dependency>

11

四 项目案例:

之前大家在一个类中调用另一个类都是在本类中先new一个要调用的另一个类对象,再调用其方法,这次用spring实现一个类中不new 另一个类的对象也能调用到另一个类。

4.1 创建实体类

package cn.kgc.spring01.entity;

import lombok.Data;


@Data
public class User {

    private String username;
    private Integer id;

    public User(){
        System.out.println("user()");
    }

    public User(Integer id) {
        System.out.println("User(String username, Integer id)");
        this.username = username;
        this.id = id;
    }

    public User(String username, Integer id) {
        System.out.println("User(String username, Integer id)");
        this.username = username;
        this.id = id;
    }
}

4.2 在pom.xml中引入依赖

<?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>cn.kgc.spring01</groupId>
  <artifactId>spring01</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>spring01</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <!--引入spring的依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.3.9</version>
    </dependency>


    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.24</version>
    </dependency>
  </dependencies>
</project>

4.3 配置Spring-config.xml文件

<?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">
<!--声明需要托管的对象-->
    <!--
            通过构造方法完成对象初始化 需要提供对应的构造方法
    -->
    <bean id="user"  class="cn.kgc.spring01.entity.User">
        <constructor-arg name="id" value="1"></constructor-arg>
        <constructor-arg name="username" value="jack"></constructor-arg>
    </bean>
</beans>

4.4 Test

public void test03() {
        ApplicationContext ac = new ClassPathXmlApplicationContext("spring-config.xml");
        User user = ac.getBean("user", User.class);
        System.out.println("user = " + user);
    }

在这里插入图片描述

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

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

相关文章

Java kafka

JAVA面试题--Kafka&#xff08;最新最全&#xff09; 目录概述需求&#xff1a;设计思路实现思路分析1.URL管理2.网页下载器3.爬虫调度器4.网页解析器5.数据处理器拓展实现性能参数测试&#xff1a;参考资料和推荐阅读)Survive by day and develop by night. talk for import b…

Mac M1 使用Centos8➕VMware Fusion进行静态网络配置

大部分的流程网络上面都有当我们已经下载好mac m1版的Centos8链接: https://pan.baidu.com/s/1UTl4Lo-_c17s-PDj3dA6kA 提取码: 7xh2 和VMware Fusionhttps://www.vmware.com/cn/products/fusion.html之后就可以进行安装了在导入过后 记得将硬盘和内存都设置好了 记得在关机状态…

Flutter-Charts_painter大数据量绘制性能优化-数据收敛

Flutter-Charts_painter大数据量绘制性能优化-数据收敛 1、背景介绍 HRV测量仪器上传的数据&#xff0c;每秒有250个数据&#xff0c;业务上需要测量180秒&#xff0c;预计有3w-5w个数据点需要绘制到折线图上去。Charts_painter绘制这么大的数据是时候会有些卡顿&#xff0c;…

自定义markdown-loader

webpack markdown-loader 想要创建自己的makdown-loader 首先创建markdown文件 # 前端学习总结## 一、深入学习HTMLCSS* HTML常见特性## 二、深入学习javascript创建my-md-loader.js 我们需要先将markdown的语法转化成html标签语法 使用marked pnpm add marked loader返回…

“2023数据安全智能化中国行”活动,开幕即高能

工信部等16部门近日发布的《关于促进数据安全产业发展的指导意见》提出&#xff0c;到2025年&#xff0c;数据安全产业基础能力和综合实力明显增强&#xff0c;数据安全产业规模超过1500亿元&#xff0c;年复合增长率超过30%。到2035年&#xff0c;数据安全产业进入繁荣成熟期。…

MySQL JDBC 中 tinyint(1) 处理为Boolean 的代码逻辑

MySQL JDBC 中 tinyint(1) 类型&#xff0c;在查询时默认会被处理为 Boolean 类型。 参数配置 官方文档中提供了参数配置&#xff1a; 上图标记的两个参数可以控制如何处理 tinyint(1) 类型和 BIT 类型。 tinyInt1isBit 默认 true&#xff0c;因此会把 tinyint(1) 类型转换…

Python3 函数实例及演示

函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实现单一&#xff0c;或相关联功能的代码段。 函数能提高应用的模块性&#xff0c;和代码的重复利用率。我们已经知道Python提供了许多内建函数&#xff0c;比如print()。但也可以自己创建函数&#xff0c;这被叫做用户…

JS 设计模式 - 怎么让你的代码提示一个档次

设计模式是我们在解决一些问题的时候 &#xff0c;针对特定的问题给出的简介并且优化的处理方案 这篇文章说提及到的 JavaScript 设计模式将围绕着封装方法类来展开叙述 构造器模式 构造器模式本质就是我们平常在编码中常用的封装方法&#xff0c;重复利用构造函数 // 这是…

72 优化算法【动手学深度学习v2】

72 优化算法【动手学深度学习v2】 深度学习学习笔记 学习视频&#xff1a;https://www.bilibili.com/video/BV1bP4y1p7Gq/?spm_id_from333.1007.top_right_bar_window_history.content.click&vd_source75dce036dc8244310435eaf03de4e330 优化问题 优化问题一般是最小化f…

怎么样可以查看系统的内存和显示您硬盘中文件和文件夹的分布情况——SpaceSniffer

一、找内存 &#xff08;1&#xff09;右击此电脑&#xff0c;点击属性&#xff0c;即可看到如下 &#xff08;2&#xff09;或者可以打开电脑桌面&#xff0c;右击任务栏&#xff0c;如下 然后打开任务管理器 二、搜索各个盘的文件 SpaceSniffer是一个可以显示您硬盘中文…

防火墙有关iptables的知识点

基本概念 什么是防火墙 在计算中&#xff0c;防火墙是基于预定安全规则来监视和控制传入和传出网络流量的网络安全系统。该计算机流入流出的所有网络通信均要经过此防火墙。防火墙对流经它的网络通信进行扫描&#xff0c;这样能够过滤掉一些攻击&#xff0c;以免其在目标计算机…

MySQL——索引视图练习题

学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 学生选课表&#xff1a;SC (Sno, Cno, Score)…

大白话高并发(三)

背景 高并发得第三篇&#xff0c;讲一讲压测吧&#xff0c;因为我的目的是模拟100万人同时来秒杀。 是不是真的要找100万个人 没必要 &#xff0c;你就算100万人掐着表在同一毫秒内把请求请求某一台机器&#xff0c;服务器也不可能在同一时间处理那么多请求&#xff0c;因为…

同步辐射XAFS表征方法的应用场景分析

X射线吸收精细结构XAFS表征方法是一种用于研究物质结构和化学环境的分析技术。XAFS 使用 X 射线照射到物质表面&#xff0c;并观察由此产生的 X 光吸收谱。 ​XAFS 技术通常应用于研究高分子物质、生物分子、纳米结构和其他类型的物质。例如&#xff0c;XAFS 可以用来研究高分子…

使用git上传项目到GitHub教程

文章目录一、安装Git二、上传本地文件到git上。1.创建本地版本库2.通过命令git init把这个文件夹变成Git可管理的仓库3、使用git commit -m "XXX"命令提交4、在Github上创建一个Git仓库5、执行git remote add origin xxxxxxxx.git6、使用$ git push -u origin master…

35、基于51单片机自动灭火避障智能小车 消防灭火小车系统设计

摘要 智能作为现代的新发明&#xff0c;是以后的发展方向&#xff0c;他可以按照预先设定的模式在一个环境里自动的运作&#xff0c;不需要人为的管理&#xff0c;可应用于科学勘探等等的用途。智能小车就是其中的一个体现&#xff0c;本次设计的多功能智能灭火避障小车&#…

MySQL番外篇-硬件优化概述

备注:测试数据库版本为MySQL 8.0 硬件优化概述 MySQL的硬件有: CPU内存硬盘网络资源 对于硬件的选择与调优&#xff0c;在系统上线前就需要考虑起来。 当然我们都知道: 好的CPU&#xff0c;可以让SQL语句解析得更快&#xff0c;进而加快SQL语句的执行速度。大的内存&#…

GEE学习笔记 八十七:python版GEE动态加载地图方法

在Google Earth Engine的python版API更新后&#xff0c;之前使用folium动态加载地图的代码就不能在正常运行&#xff0c;因为整个Google Earth Engine的地图加载服务的URL发生了更新&#xff0c;所以我们也需要更新相关绘制方法。下面我会讲解一种新的绘制方法&#xff0c;大家…

【深度学习】激活函数

上一章——认识神经网络 新课P54介绍了强人工智能概念&#xff0c;P55到P58解读了矩阵乘法在代码中的应用&#xff0c;P59&#xff0c;P60介绍了在Tensflow中实现神经网络的代码及细节&#xff0c;详细的内容可以自行观看2022吴恩达机器学习Deeplearning.ai课程&#xff0c;专…

NVIDIA Tesla V100部署与使用

在先前的实验过程中&#xff0c;使用了腾讯云提供的nvidia T4GPU&#xff0c;尽管其性能较博主的笔记本有了极大提升&#xff0c;但总感觉仍有些美中不足&#xff0c;因此本次博主租赁了nvidia V100 GPU&#xff0c;看看它的性能表现如何。 和先前一样&#xff0c;只需要将服务…