首页 > 其他分享 >Spring简介

Spring简介

时间:2024-09-27 14:22:42浏览次数:10  
标签:依赖 Spring Bean bean 简介 注解 注入

 1. Spring简介

  • pring的基础架构起源于2000年早期,它是Rod Johnson在一些成功的商业项目中构建的基础设施
  • 2002后期,Rod Johnson发布了《Expert One-on-One J2EE Design and Development》一书
  • 2003年2月Spring框架正式成为一个开源项目,并发布于SourceForge中

1.2 Spring工作原理

  • Spring是一种用JavaBean配置应用程序的方法
    • 运用SpringIOC,通过setter方法来暴露一个类的任何依赖关系(如一个数据库连接),只要在Spring中进行配置来解决依赖性,不用编写一个数据库连接
    • 运用Spring AOP 可以解决公共代码重复问题

1.3 Spring框架简介

  • Spring框架
    • 轻量级
    • 容器
    • 开源框架
    • 用于解决企业应用程序开发复杂性
    • 一个轻量级的IOC和AOP容器框架
    • 一个解决了许多J2EE开发中常见的问题的强大框架
  • Spring框架有7个模块, 每个模块都可以单独存在,或者与其他一个或多个模块联合实现

 2. Spring Bean封装机制

  • Spring以Bean的方式管理所有的组件,J2EE的全部组件都被视为Bean管理
  • Spring负责创建Bean的实例,并管理其生命周期
  • Bean在Spring的容器中运行,无须知道Spring容器的存在也可以使用Spring的一些特性

最简单的Spring XML配置文件

 <bean>:使用bean标签定义bean管理实体对象

Spring XML文件bean节点常见属性

 各个属性的含义:

 2.1 BeanFactory

  • BeanFactory
    • 由org.springframework.beans.factory.BeanFactory接口定义
  • BeanFactory是工厂模式(Factory pattern)的实现,负责创建和管理bean
  • BeanFactory接口包含以下基本方法
    • containsBean(String name)
    • getBean(String name)
    • getBean(String name,Class class)
    • getType(String name)

2.2 ApplicationContext

  • ApplicationContext是基于BeanFactory之上的,提供了应用程序框架服务,扩展的新功能如下
    • 提供国际化的支持
    • 资源访问,如URL和文件
    • 事件传递
    • 载入多个配置文件等
  • 搜索classpath路径,以classpath路径下的applicationContext.xml和bean.xml创建ApplicationContext
  •  按照指定路径下的applicationContext.xml和bean.xml创建ApplicationContext
  •  ApplicationContext接口的重要方法

3. Spring DI/IOC

3.1 什么是Spring的依赖注入 

  • 依赖注入,是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入
  • 实体对象间的依赖关系的演变过程
    • 传统方式
    • 工厂模式
    • 依赖注入

3.2 Spring的设值注入方式

  • 设值注入是指通过setter方法传入被调用者的实例
    • 被调用者实体对象

MainFrame(主机)类:

 Computer(电脑)类:

 ​​​​​Display(显示器)类:

  •  Spring配置文件

  •  测试运行

通过bean标签的id属性获取bean对象

3.3 Spring的构造注入方式 

  • 构造注入是指通过构造方法完成依赖关系的注入

 3.4 Spring的自动注入方式

  • Spring容器可以自动注入(autowire)相互协作bean之间的关联关系。
  • 在<bean/>元素中使用autowire属性指定

  •  配置文件

 3.5 集合属性

  • 配置文件

  • 实体类

 3.6 Spring注入方式的比较

  •  设值注入的优点
    • 如果依赖关系(或继承关系)较为复杂 ,设值注入模式往往更为简洁
    • 有些地方有其局限性
    • 直观,更加自然
  • 构造注入的优点
    • 构造期即创建一个完整、合法的对象
    • 避免了繁琐的setter方法的编写
    • 无需担心在调用过程中执行setter方法对组件依赖关系产生破坏
    • 在构造函数中决定依赖关系的注入顺序
  • 自动注入
    • 简化配置文件

4. 基于注解的容器配置

  • 注解(Annotation)配置越来越流行
  • 2.5版起提供了基于注解配置、装配 Bean 的功能
  • @Component 注解配置bean
    • @Component注解唯一的一个可选参数是value,用于指定bean的名称(即id值,所以必须是唯一的)

 @Repository 数据访问层bean

@Service 业务层bean

@Controller 视图层bean

  • 扫描 @Component标注的类

  • 使用 @Scope注解配置bean 的作用域 
    • @Scope定义bean的作用域。
    • singleton表示在Spring IoC容器中一个bean定义对应一个对象实例,Spring使用单例模式获取实例
    • prototype表示一个bean定义对应多个对象实例,即非单例模式,常称作多例。

  •  使用 @Autowired注解
    • 可以对类成员变量、方法及构造函数进行标注,以完成自动装配依赖的工作

  •  多个bean导致的创建bean失败的问题
    • 把属性名称做为依赖bean名称
    • @Qualifier 注解明确指定依赖bean的名称

  1. 首先根据属性的类型在Spring 应用容器中查找类型匹配的bean
  2. 如果没有类型匹配的bean,抛出BeanCreationException;如果只有一个,则注入依赖,完成自动装配;如果不只一个,则继续执行步骤3;
  3. 如果通过 @Qualifier指定了bean 名称,则从所有符合类型的bean中返回指定的bean,完成自动装配;如果没有通过 @Qualifier制定bean 名称,则通过反射技术获取当前属性的名称作为bean 名称返回指定的bean,完成自动装配;

使用JSR-250 规范定义的注解

  • 使用 @Resource 注解注入依赖
  • @Autowired 默认按 byType 自动注入
  • @Resource 默认按 byName 自动注入

  • @PostConstruct 和 @PreDestroy 
    • @PostConstruct 注解的方法将在类实例化后调用
    • @PreDestroy注解的方法将在类销毁之前调用
    • ConfigurableApplicationContext close方法

 总结

  • Spring的工作原理
  • BeanFactory接口的应用
  • applicationContent对Bean的管理
  • Spring依赖注入
    • 设值注入
    • 构造注入
    • 自动注入
  • 基于注解注入

标签:依赖,Spring,Bean,bean,简介,注解,注入
From: https://blog.csdn.net/weixin_52937170/article/details/142578226

相关文章

  • springboot在线教学平台
     基于springboot+vue实现的在线教学平台 (源码+L文+ppt)4-069 4.1系统结构设计  这些功能可以充分满足在线教学平台的需求。此系统功能较为全面如下图系统功能结构如图4-1所示。        图4-1功能结构图         4.2系统功能模块设......
  • springboot在线教学平台
     基于springboot+vue实现的在线教学平台 (源码+L文+ppt)4-069 4.1系统结构设计  这些功能可以充分满足在线教学平台的需求。此系统功能较为全面如下图系统功能结构如图4-1所示。        图4-1功能结构图         4.2系统功能模块设......
  • 基于SpringBoot 应用Stream流+递归 实现多级分类
    SpringBoot->Stream流实现步骤:先查询所有级联的数据,然后通过Java8 Stream 流来比较和判断,最终生成有顺序的级联数据实体类:@DatapublicclassAddr{/***主键id*/privateLongaddrId;/***名称*/privateStringaddrNam......
  • springboot在线教学平台
     基于springboot+vue实现的在线教学平台 (源码+L文+ppt)4-069 4.1系统结构设计  这些功能可以充分满足在线教学平台的需求。此系统功能较为全面如下图系统功能结构如图4-1所示。        图4-1功能结构图         4.2系统功能模块设......
  • [微信小程序原创项目]基于Springboot+Vue+Uniapp的通用商城小程序、商城管理系统
    项目提供:完整源码+数据库sql文件+数据库表Excel文件关注我的B站:程序员阿水呀,带小白学习更多干货教程!1、项目功能描述本项目为双角色,用户和管理员,用户使用小程序前台,管理员使用web后台。1.1注册注册功能:填写用户名、密码进行注册。仅开放小程序端即用户端进行注册。......
  • springboot版本不同导致的报错
    Errorcreatingbeanwithname'sysOrganizeController'definedinURL[jar:file:/D:/ZBD/zxbczg-1.7.1/com/zhongbaodeng/rtms-se-admin-biz/1.3.4-SNAPSHOT/rtms-se-admin-biz-1.3.4-SNAPSHOT.jar!/com/sky/sparrow/admin/controller/SysOrganizeController.cl......
  • 基于Spring Boot的高校心理健康评测与服务系统
    目录前言 一、技术栈二、系统功能介绍三、核心代码1、登录模块 2、文件上传模块3、代码封装前言随着社会的发展,系统的管理形势越来越严峻。越来越多的用户利用互联网获得信息,但各种信息鱼龙混杂,信息真假难以辨别。为了方便用户更好的获得高校心理健康评测与服务,......
  • Springboot篮球竞赛预约平台kklwr--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着体育运动的普及和全民健身意识的提升,篮球作为一项广受欢迎的运动项目,其竞赛活动日益增多。然而,传统的篮球竞赛组织方式存在......
  • Springboot垃圾分类公益回收管理系统666n5程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,垃圾分类,垃圾知识,垃圾搜索,回收者,垃圾回收,订单信息开题报告内容一、项目背景与意义随着城市化进程的加快,垃圾处理问题日益严峻,垃圾分类已成为社会共......
  • Springboot空地一体化智能交通平台测控中心软件系统p86jw(程序+源码+数据库+调试部署+
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,智能车,车队信息,比赛信息,获奖情况,使用情况,无人机,无人机比赛,赛道编辑,用户报修,报修处理开题报告内容一、选题背景与意义随着城市化进程的加快和交......