Spring框架基础知识

1.Spring 框架作用
  • 主要解决了创建对象管理对象的问题.
  • 自动装配机制
2.Spring 框架
  • (Spring容器,JavaBean容器,Bean容器,Spring容器,IOC容器)

    • 容器: 只要有需要都可以找它去拿,叫容器
3.依赖关系:
  • 类与类之间的是有依赖关系的(例如:在类B里边调用类A的方法) ;
4.异常NPE
  • Null Point Exeception)
5.Spring框架依赖项
  • spring-context (pom.xml加载依赖项)
6.Spring Bean :
  • 被Spring管理的对象

    • 创建对象的方式有两种:

      • 通过@Bean方法

      • @Configuration
        public class SpringBeanFactory {
        @Bean
        public Random random() {
        return new Random();
        }
        }
      • 通过组件扫描:只适用于自定义的类

      • @Configuration
        @ComponentScan("cn.tedu.spring")
        public class SpringConfig {
        }
        @Component/@Controller/@Service/@Repository
        public class UserMapper {
        }
7.相关注解:
注解 解释
@Configuration 添加在类的声明之前,表示此类是配置类,会自动执行配置类中的@Bean方法,并解读配置类上的其它注解
@Bean 使得Spring框架自动调用此方法,并管理此方法返回的结果,@Bean方法必须存在于@Configuration类中
@ComponentScan 组件扫描,当加载到此注解时,Spring会扫描此注解配置的根包下是否存在组件类,如果存在,会自动创建组件类的对象,如果某些类不是组件,会被跳过(无视)
@Component 组件注解,添加在类的声明之前,表示此类是组件类,是通用注解,应该添加在不是控制器类,也不是业务逻辑类,也不是数据访问类的类上
@Controller 组件注解,添加在类的声明之前,表示此类是组件类,应该添加在控制器类上
@Service 组件注解,添加在类的声明之前,表示此类是组件类,应该添加在业务逻辑类上
@Repository 组件注解,添加在类的声明之前,表示此类是组件类,应该添加在数据访问类上
@scope 配置Spring Bean的作用域,当配置为@Scope("prototype")时,Spring Bean将是“非单例的”
@Lazy 配置单例的Spring Bean是否是“懒加载”的,当在@Bean方法之前,或在组件类的声明之前添加此注解,则会使得此Spring Bean是懒加载的
@Autowired 自动装配(布线) 的注解,当某个属性需要被Spring装配值时,在属性之前添加此注解
@Qualifier 在自动装配方法参数时指定beanName
@Resource 自动装配(布线) 的注解
8.Spring运行流程
  1. Spring跑起来:ACAC

  2. 获取对象

  3. 测试使用

  4. 结束

  5. 注解格式:
    
    	类型  参数名(value...)  [default默认值]
    
       1. value可以不写
    2. @AliasFor==等效于
    3. 数组类型,只写一个的时候大括号可以不写 ※语义: 见注解属性(参数名)知其意思
    ※引申: 设计大于需求
    ※所有的注解的意义或作用,都取决于运行环境或调用者

Spring Bean的作用域

  1. 默认是单例预加载(常用)

  2. 注解
    singleton 只使用1个实例
    prototype 每次引用到bean时都会创建新的实例
    session 每个用户会话创建新的实例 - 仅限Web环境
    request 每个请求创建新的实例 - 仅限Web环境
  3. 对象加载

    • 单例模式

      • 预加载 Spring启动时就开始创建对象
      • 懒加载 @Lazy 需要获取对象时才加载

自动装配机制

  • Spring的自动装配机制表现为:当某个量需要被赋值时,可以使用特定的语法,使得Spring尝试从容器找到合适的值,并自动完成赋值
  • 最典型的表现就是在类的属性上添加@Autowired注解,Spring就会尝试从容器中找到合适的值为这个属性赋值
1.@Autowired的装配机制
  1. 关于@Autowired的装配机制,首先,会根据需要装配的数据的类型在Spring容器中统计匹配的Bean(对象)的数量

    • 当匹配的Bean数量为0个时,判断@Autowired注解的required属性值– true(默认):装配失败,启动项目时即抛出NoSuchBeanDefinitionException– false:放弃自动装配,不会报告异常,后续直接使用此属性时,会出现NPE
    • 当匹配的Bean数量为1个时,将直接装配,且装配成功
    • 当匹配的Bean数量为多个时:自动尝试按照名称实现装配(即:要求属性名称与beanName相同)
      • 存在与属性名称匹配的Spring Bean:装配成功
      • 不存在与属性名称匹配的Spring Bean:装配失败,启动项目时即抛出NoUniqueBeanDefinitionException
2.※重要小结:
  1. 自动装配的前提是Spring会自动创建此类的对象;否则Spring不可能为属性赋值,也不可能调用类中的方法

    1. @Autowired为属性赋值(自动装配依赖注入)
    2. 自动装配方法传参(Spring可以找到此对象)

4-1 Spring框架基础知识的更多相关文章

  1. Spring框架基础知识

    本人博客文章网址:https://www.peretang.com/basic-knowledge-of-spring-framework/ Spring框架简介 Spring , 一个开源的框架 , ...

  2. .NET面试题系列[1] - .NET框架基础知识(1)

    很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...

  3. PHP面试(二):程序设计、框架基础知识、算法与数据结构、高并发解决方案类

    一.程序设计 1.设计功能系统——数据表设计.数据表创建语句.连接数据库的方式.编码能力 二.框架基础知识 1.MVC框架基本原理——原理.常见框架.单一入口的工作原理.模板引擎的理解 2.常见框架的 ...

  4. Spring框架基础2

    Spring框架基础2 测试Spring的AOP思想和注解的使用 导包(在前面的基础上添加) SpringAOP名词解释 AOP编程思想:横向重复代码,纵向抽取:就是说多个地方重复的代码可以抽取出来公 ...

  5. DDD框架基础知识

    DDD框架基础知识 参考: https://www.cnblogs.com/zhili/p/OnlineStorewithDDD.html(领域驱动设计,分层架构) https://www.cnblo ...

  6. Spring学习指南-第二章-Spring框架基础(完)

    第二章 Spring框架基础 面向接口编程的设计方法 ​ 在上一章中,我们看到了一个依赖于其他类的POJO类包含了对其依赖项的具体类的引用.例如,FixedDepositController 类包含 ...

  7. Spring MVC基础知识整理➣环境搭建和Hello World

    概述 Spring MVC属于SpringFrameWork的产品,采用Model-View-Controller进行数据交互,已经融合在Spring Web Flow里面.Spring 框架提供了构 ...

  8. spring之基础知识总结

    spring是轻量级的(非侵入式,不用继承spring中的父类等).Spring框架主要提供了IoC容器.AOP.数据访问.Web开发.消息.测试等相关技术.本文主要介绍Spring中的一些小知识点, ...

  9. Spring框架基础

    1         Spring框架 1.1           Spring的基本概念 是一个轻量级的框架,提供基础的开发包,包括消息.web通讯.数据库.大数据.授权.手机应用.session管理 ...

随机推荐

  1. vue - vue基础/vue核心内容

    终于算是顺利进入vue了,确实也只有学了过后才知道,之前三过vue而不学,确实是对的,现在进来了一点都不后悔,ajax.node.js.promise.webpack.git等等确实是除了三大基础外还 ...

  2. SpringBoot整合MybatisPlus基本的增删改查,保姆级教程

    概述 MybatisPlus是国产的第三方插件, 它封装了许多常用的CURDapi,免去了我们写mapper.xml的重复劳动,这里介绍了基本的整合SpringBoot和基础用法. 引入依赖 在项目中 ...

  3. opencv学习之边缘检测

    边缘检测 是图像处理 过程中经常会涉及到的一个环节.而在计算机视觉 和 机器学习领域,边缘检测 用于 特征提取 和 特征检测 效果也是特别明显.而 openCV 中进行边缘检测的 算法 真是五花八门, ...

  4. 【多线程】Thread静态代理模式理解

    Thread静态代理模式理解 代码示例: /** * @Description 静态代理模式 * @Author hzx * @Date 2022-03-26 */ public class Stat ...

  5. Dockerfile指令与Docker-compose容器编排-搭建docker私有仓库

    目录 一:部署应用映射外部目录(持久化) 总结 二:迁移与备份(容器保存为镜像) 1.django执行gitee,项目提交到远端 2.其他操作 3.操作步骤 4.容器保存为镜像 5.把镜像打包成压缩包 ...

  6. STC8H开发(十一): GPIO单线驱动多个DS18B20数字温度计

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  7. JAVA - 缓冲和缓存

    JAVA - 缓冲和缓存 缓冲 Buffer 功能:协调上下层应用之间的性能差异.通过缓冲区的缓冲,当上层组件性能优于下层组件的时候,缓冲可以有效减少上层组件对下层组件的等待时间. 使用场景:IO流中 ...

  8. 【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD登录并获取AccessToken -- cca.acquireTokenByCode(tokenRequest)

    问题描述 在上一篇博文 "[Azure 应用服务]NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤"中, ...

  9. Redis配置文件所在位置

    更新记录 2022年6月13日 发布. Windows系统 Redis 配置文件位于 Redis 安装目录下文件名为 redis.conf 注意:Windows系统下名为 redis.windows. ...

  10. 设置C#启动进程但不显示命令行窗口

    设置一下Process类型相关的配置属性即可,直接上代码. //记得引入命名空间 //using System.Diagnostics; //获得当前环境的基路径 string basePath = ...