栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring框架

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring框架

文章目录
  • 前言
  • 一、关于Spring框架
  • 二、 通过Spring创建对象
  • 三、 Spring管理的对象
  • 四、自动装配
  • 五、关于DI与IoC
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

关于spring框架,这里着重介绍了关于spring框架的作用和自动装配问题。


提示:以下是本篇文章正文内容,下面案例可供参考

一、关于Spring框架

Spring框架主要解决了创建对象、管理对象的问题。

二、 通过Spring创建对象

需要Spring创建对象,有2种做法:

  • @Bean方法
  • 组件扫描

关于@Bean方法

  • 在配置类中,自定义某个方法,其返回值类型就是你需要Spring创建对象的类型,在方法体中自行编写创建对象的代码,并且,在此方法上添加@Bean注解即可

关于组件扫描

  1. 通过@ComponentScan注解,可以开启组件扫描,并配置扫描的包

    • 在Spring Boot项目中,启动类上的@SpringBootApplication已经使用@ComponentScan作为元注解
    • 在Spring Boot项目中,默认的组件扫描的包就是启动类所在的包
    • 任何组件扫描,都会扫描指定的包及其子孙包
  2. 在组件类上,需要添加组件注解:基础的组件注解有:

    • @Component:通用组件注解

    • @Controller:建议添加在控制器类上

    • @Service:建议添加在处理业务逻辑的类上

    • @Repository:建议添加在数据访问层的类上,在使用IntelliJ IDEA时,在Mybatis的Mapper接口上添加此注解,只是为了避免IntelliJ IDEA误判而已,并没有实质的作用

    • 以上4种注解,在Spring的解释范围内,是完全等效的,只是语义不同

      另外,如果某个组件扫描范围内的类添加了@Configuration,也会被创建对象,添加此注解的类被视为“配置类”,与一般的组件不同,Spring框架会通过CGLib代理模式进行处理。

三、 Spring管理的对象

Spring管理的对象,默认是单例的!并且,默认情况下,单例的对象都是默认加载的。

单例:单一实例,在某个时间点,此类的对象最多只有1个。

默认加载:加载Spring时,就会创建此类的对象,类似于单例模式中的饿汉式单例模式。

注意:Spring并没有使用单例模式,只是Spring管理的对象的表现与单例模式的特点是相同的。

四、自动装配

Spring容器:Spring的本质是一个容器,它会将它创建的所有对象都管理在此容器中。

Spring Bean:每个被Spring创建的对象都是一个Spring Bean。

自动装配:当某个添加了自动装配注解的属性,或某个被Spring自动调用的方法的参数需要值时,Spring会自动尝试从容器中查找适合的Spring Bean,用于为此赋值。

通常,其表现就是在类的属性上添加@Autowired注解,则Spring会尝试自动为此属性赋值。

关于@Autowired的装配机制:

  • 首先,在Spring容器中查找匹配类型的Spring Bean的数量
    • 0个:取决于@Autowired注解的required属性
      • required = true:加载Spring时出现NoSuchBeanDefinitionException
      • required = false:放弃自动装配,则属性值为null
    • 1个:直接装配,且成功
    • 多个:将尝试根据名称来自动装配,要求被自动装配的属性名与Spring Bean的名称是匹配的,如果存在匹配的,则成功装配,否则,加载Spring时出现NoUniqueBeanDefinitionException
      • 关于名称匹配,可以是属性名改为某个Spring Bean名称,或在属性上添加@Qualifier注解来指定某个Spring Bean的名称
      • 另外,在不使用@Autowired(含匹配的@Qualifier)的情况下,也可以在属性上添加@Resource注解来实现自动装配!不想讲,因为太鸡肋!!!
五、关于DI与IoC

IoC:Inversion Of Control,控制反转,表示将对象的控制权(创建、管理)交给框架

DI:Dependency Injection,依赖注入,表现为给对象的依赖属性赋值,如果不使用自动装配注解,也可以使用set和构造方法给对象属性赋值。

总结

提示:这里对文章进行总结:
关于Spring框架,应该:

  • 理解Spring框架的作用
  • 掌握使得Spring框架创建对象的2种方式
    • @Bean方法
    • 组件扫描
  • 理解Spring框架管理的对象的作用域
    • 默认具有单例的特点
    • 在单例的状态下,默认是预加载的
  • 理解Spring框架的自动装配的特点,理解@Autowired的装配机制
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1036406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号