文章目录
- 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