Spring学习指南

embedded/2024/11/12 14:42:04/

文章目录

  • Spring是什么
    • Spring 的诞生与发展
    • Spring 的狭义和广义
      • 广义的 Spring:Spring 技术栈
      • 狭义的 Spring:Spring Framework
    • Spring Framework 的特点
      • 方便解耦,简化开发
      • 方便集成各种优秀框架
      • 降低 Java EE API 的使用难度
      • 方便程序的测试
      • AOP 编程的支持
      • 声明式事务的支持
  • 为什么要用Spring?
    • 为什么要用Spring
    • Spring 为我们做了哪些事情?
    • 假如没有 Spring ?
  • Spring体系结构
    • 1. Data Access/Integration(数据访问/集成)
    • 2. Web模块
    • 3. Core Container(Spring的核心容器)
    • 4. AOP、Aspects、Instrumentation和Messaging
    • 5. Test模块
  • Spring开发环境搭建
    • 一、环境
    • 二、包目录介绍
    • 三、创建maven项目
    • 四、去掉无用警告
    • 五、修改UTF-8编码
    • 六、去掉无用提示
    • 七、在maven中配置JDK版本
    • 八、导入Spring相关依赖
    • 九、编写HellWorld
    • 十、创建Spring配置文件
    • 十一、创建启动类
    • 十二、执行结果
  • 第一个Spring程序
    • 一、创建maven项目
    • 二、导入Spring依赖
    • 三、导入junit
    • 四、创建HelloWorld
    • 五、创建bean.xml文件
    • 六、单元测试
  • Spring IoC容器
    • 控制反转(IoC)
    • 依赖注入(DI)
    • IoC 的工作原理
    • IoC 容器的两种实现
      • BeanFactory
        • 示例 1
      • ApplicationContext
        • 示例 2
    • Spring BeanFactory 容器
      • Spring 的 BeanFactory 容器
    • Spring ApplicationContext 容器
      • Spring ApplicationContext 容器
  • Spring Bean定义
    • Bean 定义
    • Spring 配置元数据
    • 实例化 Bean
      • 使用构造函数进行实例化
      • 使用静态工厂方法进行实例化
        • 1、创建工厂类
        • 2、在spring配置文件中配置
        • 3、获得bean对象
      • 使用实例工厂方法进行实例化
    • Spring Bean属性注入
      • 构造函数注入
        • 示例
      • setter 注入
        • 示例
    • Spring注入内部Bean
      • setter 方式注入内部 Bean
        • 示例
      • 构造函数方式注入内部 Bean
        • 示例
    • Spring注入集合
      • 示例 1:在集合中设置普通类型的值
      • 示例 2:在集合中设置对象类型的值
    • Spring注入其他类型的属性
      • 注入 Null 值
      • 注入空字符串
      • 注入特殊字符
        • 转义
        • 使用短字符串 `<![CDATA[]]>`
    • Spring Bean作用域
      • singleton
        • 示例 1
      • prototype
        • 示例 2
    • Spring之BeanPostProcessor
      • BeanPostProcessor
      • 自定义后置处理器演示
    • PostConstruct、PreDestroy
      • PostConstruct、PreDestroy:
      • 那么Java提供的@PostConstruct注解,Spring是如何实现的呢?
  • Spring自动装配 基于XML
    • Spring 自动装配
      • 自动装配规则
      • 示例
        • 1.autowire="no" 不使用自动装配
        • 2.byName 按名称自动装配
        • 3.byType 按类型自动装配
        • 4.constructor 构造函数自动装配
          • 5.default 默认的自动装配模式
  • Spring自动装配 基于注解
    • 1. 引入依赖
    • 2. 开启组件扫描
      • 3. 使用注解定义 Bean
      • 4. 基于注解方式实现依赖注入
      • 示例
  • pring 基于注解的配置
    • 基于注解的配置
    • 引入依赖包
    • 配置
    • 实体类
    • 数据访问层
    • 业务层
    • 业务层实现
    • 测试
    • Spring 基于 Java 注入bean
      • 基于 Java 的配置
      • @Configuration 和 @Bean 注解
        • 例子
      • 注入 Bean 的依赖性
        • 例子
    • Spring @Autowired 注解
      • @Autowired 注解的作用到底是什么?
      • @Autowired 注解用法
        • 准备一个Bean
        • Spring扫描配置
        • 应用于构造函数
        • 应用于 setter 方法
        • 应用方法
        • 应用于字段,或者将其与构造函数混合
        • 应用于数组
        • 应用于集合
        • 执行结果
    • Spring @Primary注解
      • @Primary注解
    • Spring @Qualifier 注解
      • Spring @Qualifier 注解
    • JSR和Spring注解、依赖
      • 一、基本概念:
        • 1、java体系
        • 2、JSR
        • 3、JCP
      • 二、JSR规范分类
        • Web Service技术
        • Web应用技术
        • 企业应用技术
        • 管理与安全技术
        • Java SE中与Java EE有关的规范
      • 三、JCP官网查看所有的JSR规范
      • 四、总结
      • 使用JSR250 注释
        • 注解列表
        • 介绍
        • 区别
      • 使用 JSR 330 注释
        • JSR-330 标准注释和Spring的注释
        • @Named注入bean
        • @Inject获取bean
  • Spring读取properties配置文件
    • 准备配置文件
    • 通过配置文件配置
      • 方式一:
      • 方式二:
      • 使用
      • 导入依赖包
      • 测试
    • 通过注解配置
  • Spring 中的监听器事件
    • Spring 中的事件处理
    • 监听上下文事件
  • Spring整合junit
    • 整合Junit5
    • 注解版
    • 配置文件xml版
  • Spring AOP(面向切面编程)
    • Spring 框架的 AOP
    • AOP 术语
    • 通知的类型
    • 实现自定义方面
    • JDK动态代理
      • 示例
    • CGLlB动态代理
      • 示例
      • JDK代理和CGLIB代理的区别
        • JDK动态代理特点
        • CGLIB动态代理特点
        • JDK与CGLIB动态代理的性能比较
        • 原理区别:
    • AspectJ 介绍
      • AspectJ
      • Spring AOP
      • 使用场景说明
      • 对比总结
    • 使用AspectJ进行AOP开发
      • 启用 @AspectJ 注解支持
        • 使用 Java 配置类启用
        • 定义切面 @Aspect
        • 全注解方式定义切面
      • 定义切点 @Pointcut
      • execution 表达式
      • 定义通知
      • 示例
    • 小故事-讲解aop
      • 图解
      • 核酸检测小故事
      • 技术实现
  • Spring事务(Transaction)
    • 事务管理器
      • TransactionDefinition 接口
        • 事务的隔离级别【重点理解】
        • 事务的传播行为【重点理解】
    • TransactionStatus 接口
    • JDBC 事务回滚
      • 一、业务场景
      • 二、准备数据
      • 三、导入依赖包
      • 三、DBUtils
      • 四、下单Dao层代码
      • 五、下单业务
      • 六、测试
    • Spring 事务管理实现
      • 1. 开启注解事务
      • 2. 使用 @Transactional 注解
      • 示例
  • Spring SpEL表达式语言
    • 一、${}
    • 二、${}使用
    • 总结

Spring是什么

​ Spring 是 Java EE 编程领域的一款轻量级的开源框架,由被称为“Spring 之父”的 Rod Johnson 于 2002 年提出并创立,它的目标就是要简化 Java 企业级应用程序的开发难度和周期。 Spring 自诞生以来备受青睐,一直被广大开发人员作为 Java 企业级应用程序开发的首选。时至今日,Spring 俨然成为了 Java EE 代名词,成为了构建 Java EE 应用的事实标准。

Spring 的诞生与发展

​ 早期的 J2EE(Java EE 平台)推崇以 EJB 为核心的开发方式,但这种开发方式在实际的开发过程中存在种种弊端,例如使用复杂、代码臃肿、代码侵入性强、开发周期长、移植难度大等。 Rod Johnson 在其 2002 年编著的畅销书《Expert One-on-One J2EE Design and Development》中,针对 EJB 各种臃肿的结构进行了逐一的分析和否定,并分别以更加简洁的方式进行了替换。 在这本书中,Rod Johnson 通过一个包含 3 万行代码的附件,展示了如何在不使用 EJB 的情况下构建一个高质量、可扩展的 Java 应用程序。在这个附件中,Rod Johnson 编写了上万行基础结构代码,其中包含了许多可重用的 Java 接口和类,例如 ApplicationC


http://www.ppmy.cn/embedded/116213.html

相关文章

Java List sort() 排序

sort是java.util.List接口的默认方法。 List的排序方法在Java 8中被引入。 排序方法接受比较器作为参数&#xff0c;并根据指定的比较器对这个列表进行排序。 default void sort(Comparator<? super E> c) 示例代码&#xff1a; import java.text.Collator; import …

大模型LLM对话模拟器Dialogue Simulator Visualization可视化工具

伴随着生成式人工智能技术发展&#xff0c;进2年涌现出大语言模型LLM/Agent系统/AI推理等众多方向的技术项目和论文。其中对话系统&#xff0c;智能体交互是用户通过UX界面和AI系统进行交互&#xff0c;这种交互有时候也是多模态&#xff08;用户输入文字/语音/图像&#xff09…

达梦-华为鲲鹏ARM架构下性能测试最佳实践

一、测试综述 1.1 测试目的 本次测试的目的是验证达梦数据库&#xff0c;在鲲鹏服务器下&#xff0c;不同服务器参数基于sysbench性能压力测试的表现。本次参数是根据为华为鲲鹏arm服务器调优十板斧内建议值调整 成长地图-鲲鹏开发套件开发文档-鲲鹏社区 1.2 通用指标 指标…

SQL_UNION

在 SQL 中使用 UNION 操作符时&#xff0c;被联合的两个或多个 SELECT 语句的列数必须相同&#xff0c;并且相应的列数据类型也需要兼容。这是因为 UNION 操作符会将结果组合成单个结果集&#xff0c;每个 SELECT 语句的结果行将按顺序放置在结果集中。 例如&#xff0c;如果你…

阿里巴巴新推出Java版AI 应用开发框架-Spring AI Alibaba

[Spring AI Alibaba 是一款 Java 语言实现的 AI 应用开发框架&#xff0c;旨在简化 Java AI 应用程序开发&#xff0c;让 Java 开发者像使用 Spring 开发普通应用一样开发 AI 应用。Spring AI Alibaba 基于 Spring AI 开源项目构建&#xff0c;默认提供阿里云基础模型服务、开源…

数据结构强化(直播课)

应用题真题分析&备考指南 (三)线性表的应用 (六)栈、队列和数组的应用 &#xff08;四&#xff09;树与二叉树的应用 1.哈夫曼&#xff08;Huffman&#xff09;树和哈夫曼编码 2.并查集及其应用&#xff08;重要&#xff09; &#xff08;四&#xff09;图的基本应用 …

TCP并发服务器的实现

一请求一线程 问题 当客户端数量较多时&#xff0c;使用单独线程为每个客户端处理请求可能导致系统资源的消耗过大和性能瓶颈。 资源消耗&#xff1a; 线程创建和管理开销&#xff1a;每个线程都有其创建和销毁的开销&#xff0c;特别是在高并发环境中&#xff0c;这种开销…

【flex-grow】计算 flex弹性盒子的子元素的宽度大小

计算以下两个子div的宽度大小&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…