快速学习Spring

news2024/10/6 20:38:24

Spring 简介

Spring 是一个开源的轻量级、非侵入式的 JavaEE 框架,它为企业级 Java 应用提供了全面的基础设施支持。Spring 的设计目标是简化企业应用的开发,并解决 Java 开发中常见的复杂性和低效率问题。

Spring常用依赖

<dependencies>
    <!-- Spring 核心容器,包括 ApplicationContext 等 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.14</version> <!-- 替换为您需要的版本号 -->
    </dependency>

    <!-- Spring AOP 相关依赖 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>5.3.14</version> <!-- 替换为您需要的版本号 -->
    </dependency>

    <!-- Spring 对 JDBC 的支持 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.3.14</version> <!-- 替换为您需要的版本号 -->
    </dependency>

    <!-- Spring 对事务的支持 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>5.3.14</version> <!-- 替换为您需要的版本号 -->
    </dependency>
</dependencies>

Spring 优点

  1. IoC 容器:Spring 的核心是一个 IoC(Inversion of Control,控制反转)容器,它负责管理应用中的组件(Bean),并通过依赖注入将它们装配在一起。这种方式降低了类之间的耦合度,使得代码更易于维护和测试。
  2. AOP 支持:Spring 提供了 AOP(Aspect-Oriented Programming,面向切面编程)的支持,可以方便地实现横切关注点的功能,如事务管理、日志记录等,从而提高代码的模块化和可重用性。
  3. 事务管理:Spring 提供了强大且灵活的事务管理支持,可以通过声明式事务或编程式事务来管理数据库事务,确保数据操作的一致性和可靠性。
  4. 数据访问:Spring 提供了对 JDBC、ORM(如 Hibernate、MyBatis)、NoSQL 数据库(如 MongoDB、Redis)等数据访问技术的集成支持,简化了数据访问层的开发。
  5. MVC 框架:Spring MVC 是一个基于前端控制器模式的 Web MVC 框架,提供了灵活的配置和强大的扩展性,帮助开发者构建响应式和可扩展的 Web 应用程序。
  6. 集成支持:Spring 提供了对各种第三方框架和技术的集成支持,如 JMS、JMX、Quartz 等,使得整合其他技术变得更加简单。
  7. 测试支持:Spring 提供了测试类和测试环境的支持,可以轻松编写单元测试、集成测试和端到端测试,帮助开发者保持代码质量和可靠性。

一、第一个Spring项目

1.1 创建项目工程

首先我们使用IDEA开发工具或Eclipse去创建一个名为 “first-spring”的maven项目。

1.2 导入依赖

在pom.xml中导入依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.14</version>
        </dependency>
    </dependencies>

1.3 编写代码 

在java包下创建一个名为pojo实体类包中创建一个 User类

public class User {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                '}';
    }
}

1.4 创建Spring文件

在resources包下创建spring文件,名为 application-context.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">


</beans>

1.4.1 bean标签

bean 标签就是用来创建 Java对象的。

属性有

id: 就是对象的唯一名字

class: 是对象类具体的位置

<property>: property 标签是bean中的设置属性,可以将特定的值或引用注入到bean的属性中。 

    <bean id="user" class="com.na.pojo.User">
        <property name="name" value="香菜的开发日记"/>
    </bean>

以上就是通过bean去创建了一个User对象,并且为name 赋特定的值。

 1.5 运行测试

创建一个名为 MyTest的类。

public class MyTest {
    public static void main(String[] args) {
        // 获取 Spring 的上下文对象
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("application-context.xml");

        // 在Spring当中去寻找对象
        // getBean("user") user就是我们在xml文件中 bean标签的 id属性值
        User user = (User) applicationContext.getBean("user");
        System.out.println(user.toString());
    }
}

二、依赖注入

在依赖注入中,不必创建对象,但必须描述如何创建它们。

通常依赖主义可以捅咕哦三种方式完成。即:

2.1 构造函数注入

2.2 setter注入

2.3 接口注入

未完待续

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

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

相关文章

Linux:信号的处理

文章目录 信号处理 本篇总结的是关于信号的处理 信号处理 在之前有这样的观点&#xff1a;信号在合适的时候被处理好&#xff0c;当进程收到信号后&#xff0c;当前进程可能在做优先级更高的事&#xff0c;所以它来不及处理这个信号&#xff0c;那么就会把这个信号暂时保存起…

spring aop @annotation的用法

直接看原文: spring aop annotation的用法-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- annotation用在定义连接点时&#xff0c;对连接点进行限制。比如我们想对标注了…

双非本科准备秋招(18.2)—— 图解Monitor

对象头 普通对象&#xff1a; 数组对象&#xff1a; java中对象存储结构分为对象头&#xff08;Header&#xff09;、实例数据&#xff08;Instance Date&#xff09;和对齐填充&#xff08;Padding&#xff09;。 对象头存储着Mark Word和Klass Word&#xff0c;通过Klass Wo…

【MySQL】操作库 —— 库的操作 -- 详解

一、增删数据库 1、创建数据库 create database db_name; 本质就是在 /var/lib/mysql 创建一个目录。 说明&#xff1a; 大写的表示关键字。[ ] 是可选项。CHARACTER SET&#xff1a;指定数据库采用的字符集。COLLATE&#xff1a;指定数据库字符集的校验规则。 2、数据库删除…

背包问题(理论)

对于面试的话&#xff0c;掌握01背包、完全背包&#xff0c;就够用了&#xff0c;最多可以再来一个多重背包。 至于背包九讲其他背包&#xff0c;面试几乎不会问&#xff0c;都是竞赛级别的了&#xff0c;leetcode上连多重背包的题目都没有&#xff0c;所以题库也告诉我们&…

NodeJS安装(windows)

NodeJS安装&#xff08;windows&#xff09; 1、官网地址 NodeJS官网地址&#xff1a;https://nodejs.org/en 2、安装 3、验证NodeJS环境变量 cmd后&#xff0c;运行&#xff1a;node -v 4、配置npm的全局安装路径&#xff08;需要管理员身份运行&#xff09; npm conf…

【后端高频面试题--设计模式上篇】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;后端高频面试题 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 什么是设计模式&#xff1f;怎么理解设计模式&#xff1f; 设计模式是在软件设计中&#xff0c…

三.AV Foundation 视频播放 - 播放控制

引言 前面的博客我们已经实现了视频的播放功能&#xff0c;但是作为一个完整的视频播放器仅仅有播放功能是不够的&#xff0c;暂停&#xff0c;快进&#xff0c;播放进度条&#xff0c;显示播放时间&#xff0c;显示视频标题和字幕都是必不可少的功能。 本篇博客我们就对视频…

Spring Cloud Gateway 网关路由

一、路由断言 路由断言就是判断路由转发的规则 二、路由过滤器 1. 路由过滤器可以实现对网关请求的处理&#xff0c;可以使用 Gateway 提供的&#xff0c;也可以自定义过滤器 2. 路由过滤器 GatewayFilter&#xff08;默认不生效&#xff0c;只有配置到路由后才会生效&#x…

【原创 附源码】Flutter安卓及iOS海外登录--Apple登录最详细流程

最近接触了几个海外登录的平台&#xff0c;踩了很多坑&#xff0c;也总结了很多东西&#xff0c;决定记录下来给路过的兄弟坐个参考&#xff0c;也留着以后留着回顾。更新时间为2024年2月12日&#xff0c;后续集成方式可能会有变动&#xff0c;所以目前的集成流程仅供参考&…

【GameFramework框架内置模块】1、全局配置(Config)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

AtCoder Beginner Contest 340(A-G)

A - Arithmetic Progression (atcoder.jp) 1.思路&#xff1a;循环输出即可 2.代码&#xff1a; #include <bits/stdc.h> #define rep(i,z,n) for(int i z;i < n; i) #define per(i,n,z) for(int i n;i > z; i--) #define PII pair<int,int> #define fi f…

【51单片机】串口(江科大)

8.1串口通信 1.串口介绍 2.硬件电路 3.电平标准 电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种: 电平标准是数据1和数据O的表达方式,是传输线缆中人为规定的电 压与数据的对应关系,串口常用的电平标准有如下…

Microsoft Excel 加载数据分析工具

Microsoft Excel 加载数据分析工具 1. 打开 Excel&#xff0c;文件 -> 选项2. 加载项 -> 转到…3. 分析工具库、分析工具库 - VBA4. 打开 Excel&#xff0c;数据 -> 数据分析References 1. 打开 Excel&#xff0c;文件 -> 选项 2. 加载项 -> 转到… ​​​ 3…

2013-2022年上市公司迪博内部控制指数、内部控制分项指数数据

2013-2022年上市公司迪博内部控制指数、分项指数数据 1、时间&#xff1a;2013-2022年 2、范围&#xff1a;上市公司 3、指标&#xff1a;证券代码、证券简称、辖区、证监会行业、申万行业、内部控制指数、战略层级指数、经营层级指数、报告可靠指数、合法合规指数、资产安全…

蓝桥杯-X图形

问题描述 给定一个字母矩阵。一个 X 图形由中心点和由中心点向四个 45度斜线方向引出的直线段组成&#xff0c;四条线段的长度相同&#xff0c;而且四条线段上的字母和中心点的字母相同。 一个 X 图形可以使用三个整数 r,c,L 来描述&#xff0c;其中 r,c 表示中心点位于第 r 行…

Matplotlib核心:掌握Figure与Axes

详细介绍Figure和Axes&#xff08;基于Matplotlib&#xff09; &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333; 一、Figure&#xff08;图形&#xff09;&#x1f333;&#x1f341;1. 创建Figure&#x1f341;&#x1f341;2. 添加Axes&am…

代码随想录刷题笔记 DAY 24 | 回溯算法理论基础 | 组合问题 No. 77

文章目录 Day 2401. 回溯算法理论基础1.1 什么是回溯法&#xff1f;1.2 为什么要使用回溯法&#xff1f;1.3 如何理解回溯法&#xff1f; 02. 组合问题&#xff08;No. 77&#xff09;2.1 题目2.2 笔记2.3 代码 Day 24 01. 回溯算法理论基础 1.1 什么是回溯法&#xff1f; &…

Kafka 入门笔记

课程地址 概述 定义 Kafka 是一个分布式的基于发布/订阅模式的消息队列&#xff08;MQ&#xff09; 发布/订阅&#xff1a;消息的发布者不会将消息直接发送给特定的订阅者&#xff0c;而是将发布的消息分为不同的类别&#xff0c;订阅者只接受感兴趣的消息 消息队列 消息队…

算法沉淀——位运算(leetcode真题剖析)

算法沉淀——位运算 常用位运算总结1.基础位运算2.确定一个数中第x位是0还是13.将一个数的第x位改成14.将一个数的第x位改成05.位图6.提取一个数最右边的17.删掉一个数最右边的18.异或运算9.基础例题 力扣题目讲解01.面试题 01.01. 判定字符是否唯一02.丢失的数字03.两整数之和…