Spring基础

Spring框架

  1. 作用:解决了创建对象管理对象繁琐的问题
  2. 核心价值:开发人员可以通过Spring框架提供的机制将创建对象、管理对象的任务交给Spring来完成,不必关心这些过程,需要时通过Spring容器获取对象即可。
    Spring框架也经常被称之为:Spring容器

Spring创建对象的方式

  1. 通过@Bean方法
    1. 获取Bean对象方法:getBean()方法
    2. 相关异常:
      1. 容器中没有该Bean对象:NoSuchBeanDefinitionException
      2. 有多个Bean对象:致NoUniqueBeanDefinitionException
  2. 通过组件扫描:添加注解
       1. @Component    //通用组件注解
       2. @Configuration  //配置类  Spring会通过CGLiB代理模式处理  需添加 @ComponentScan,且在注解参数指定包名
       3. @Repository:用于实现数据访问的类
       4. @Service:用于处理业务逻辑的类
       5. @Controller:用于控制器类

Bean对象的作用域

  1. 默认情况下是单例的,可通过 @Scope 注解进行修改
  2. 默认情况下 Bean 是预加载的,可通过 @Lazy 注解进行懒加载
    预加载:
         优点:事先创建好对象,需要时直接获取
         缺点:启动程序时,因为创建的对象比较多,启动过程比较慢,而且对象长时间处于内存中,是一种资源浪费
    懒加载:
         优点:需要时才会创建对象,不会形成资源浪费
         缺点:如果当前系统已经处于负荷状态,会增加系统的负担,不利于高并发的场景
         ```
    
    

自动装配机制 @Autowired @Resource

  1. 什么是自动装配机制?
    当某个量需要被赋值时,可以使用特定的语法,使得Spring尝试从容器中找到合适的值,并自动完成赋值
  2. 不存在与属性名称匹配的Spring Bean:装配失败,启动项目时即抛出 NoUniqueBeanDefinitionException
  3. @Qualifier注解是在自动装配机制中,用于指定beanName的注解
@Autowired与@Resource的区别:
    除了这2个注解所在的 包不同、装配机制不同以外,还存在以下区别: 
    – @Autowired可以添加在构造方法的声明之前,@Resource不可以
    – @以Resource可以添加在类的声明之前(但不会装配属性的值),@Autowired不可 
    – 当存在多个同类型的Bean时 – 当装配属性时,@Autowired需要通过@Qualifier指定beanName,而@Resource可以 直接配置name属性以指定beanName 
    – 当装配方法的参数时(例如添加了@Autowired的构造方法的参数),

IoC (控制反转)

概念:在传统开发模式中,是由开发者创建对象,为对象的属性赋值、管理对象的作用域和生命周期等,相当于时开发者拥有 控制权 ,当使用了Spring之后,这些都交给了Spring框架去完成了,开发者不必关心这些操作的具体实现,所以称之为 控制反转
比如注解创建对象、自动装配等都是控制反转的体现,都可以称之为Spring IoC的过程

DI (依赖注入)

概念:是Spring IoC的核心实现,当某个类声明了另一个类的属性,则被称之为依赖,Spring框架会帮你完成依赖项(属性)的赋值,只是在你的代码中看不到赋值的过程或赋值符号,所以被称之为注入

IoC和DI的关系:DI实现了IoC,IoC是目标,DI是实现目标的重要手段

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值