spring笔记

spring笔记

一:IOC和DI

对于spring整个的框架学习中,其实就是俩个核心点,一个是IOC,一个是DI

IOC

ioc,叫做控制反转全称叫做inversion of control顾名思义,这就是一种设计模式,通俗的来说就是,其中程序的控制不再有程序自身来管理,而是由外部的框架或者容器来管理
对于ioc来说,我个人认为俩点比较重要

1.实例化容器

实例化容器怎么说呢,实例化容器是一个抽象接口或类,它有多个不同的实现方式,每种实现方式都代表了容器的一种具体实例化策略,这几种方法可以混着用
一般来说,使用xml能配置的,使用注解都可以配置,通俗的说,就是都对应着

1.1.基于xml

1.2.基于注解

对于基于注解开发,这个是属于万金油的存在,但是不能单独使用,使用这个可以是整体的配置更加简洁

在基于xml配置文件的环境下,开启spring的注解开发

<context:annotation>
<context:compnent-scan base-package="">

1.2.1. @component
@controller
@service
@repository

1.2.2.自动装配

按照类型 by type

  • @Autowired
    一般@qualifier常和Autowired一起用,用于类型匹配存在多个选择时,指定一个名字匹配上

    默认情况下,注解注入(放在set方法上,就是set注入),反射,强行破坏封装性,赋值

  • @Inject

按照名称 by name

  • @Named
    配合@Inject
  • @Resource
    先按名称匹配,再按类型匹配

1.2.3.元属性注解

1.3基于java配置类

springboot基本都是基于java类配置

2.bean

对于bean来说,我觉得也是三点比较重要

  • 2.1.实例化bean
    • 工厂方法
      • 静态工厂方法
      • 实例化工厂方法
    • 构造方法
  • 2.2.属性(常见属性)
    • scope
      作用域,支持6种,其中4种要web程序才用的到
      • 单例和多例的区别
        • 一个只能存在一个,一个可以存在多个
        • 单例在容器初始化种,会立刻实例化,多实例,什么时候用,什么时候实例化(ref引用也算被需要)
        • 多实例bean,ioc只创建,不销毁
    • lazy-init
      懒加载,一般只用在单例的bean上,让它变成什么时候需要什么时候创建
    • depends-on
      主要用于跟ref区别,ref是强耦合,比如男朋友依赖于女朋友,用ref,deoend-on,比如先有姐姐,再有妹妹,这个决定bean的实例化顺序
  • 2.3.生命周期
    实例化->属性赋值->初始化->销毁

DI

全称叫做依赖注入,俩种方式

1.基于构造方法的依赖注入

类要有有参构造方法

<bean id="personBean" class="com.example.Person">
    <constructor-arg name="name" value="John" />
    <constructor-arg name="age" value="30" />
</bean>

2.基于set方法的依赖注入

类需要有无参构造方法,还要有set方法

先new,再set

<bean id="carBean" class="com.example.Car">
    <property name="make" value="Toyota" />
    <property name="model" value="Camry" />
</bean>

3.区别

3.1.构造函数 vs Setter方法

  • 基于有参构造,这个在javase中就学过,过程是通过在类的构造函数中接收依赖项作为参数去实现,这就代表着在对象创建时就被传递给了对象,使得对象的状态在创建后不可改变
  • 基于set方法,它是通过在对象创建后通过调用setter方法来设置属性的值,允许对象的属性在运行时去发生改变

3.2.不可变性 vs 可变性

3.3.参数传递方式

  • 基于有参构造的依赖注入就必须要有有参构造方法
  • 基于set要有无参构造器和setter方法
  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值