Spring学习一:spring-context之IOC/DI

本功能使用依赖:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.2.7.RELEASE</version>
</dependency>

IOC控制反转

将对象的创建权交给spring来完成,并存入spring容器,使用对象的时候只需要从容器中去拿。

创建Bean的三种方式

  • 无参构造方法实例化
    空参构造注入,则必须有空参构造器
  • 工厂静态方法实例化(使用类中的方法创建对象,并存入spring容器)
    场景:使用第三方的jar包,将第三方的对象初始化数据并存入容器
  • 工厂普通方法实例化(使用类中的方法创建对象,并存入spring容器)

Bean的作用范围配置:scope属性

<bean id="userDao" class="com.it.dao.imp.UserDaoImpl" scope="prototype"></bean>
当scope的取值为singleton时(默认)
  - Bean的实例化个数:1个
  - Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例
  - Bean的生命周期:
      - 对象创建:当应用加载,创建容器时,对象就被创建了
      - 对象运行:只要容器在,对象一直活着
      - 对象销毁:当应用卸载,销毁容器时,对象就被销毁

当scope的取值为prototype时
    - Bean的实例化个数:多个
    - Bean的实例化时机:当调用getBean方法时实例化Bean
    - Bean的生命周期:
        - 对象创建:当使用对象时,创建新的对象实例
        - 对象运行:只要对象在使用中,就一直活着
        - 对象销毁:当对象长时间不用时,被java的垃圾回收器回收

Bean生命周期配置:init-method属性 和 destory-method属性

  • init-method:指定类中的初始化方法
  • destory-method:指定类中的销毁方法名称

DI依赖注入

依赖注入是spring框架核心IOC的具体实现。

在编写程序时,通过IOC把对象的创建交给spring,但是代码中不可能出现没有相互依赖的情况,IOC只是降低他们的依赖关系(例如业务层调用持久层的方法)。

业务层和持久层的依赖关系,在使用spring之后,就让spring来维护了。也就是坐等spring框架把持久层对象注入到业务层,而不用我们通过getBean()去获取。

  • Bean的注入

    • 构造方法注入bean

    • set方法注入bean

  • 普通数据注入

  • 集合数据注入

引入其他配置文件(分模板开发)

不进行拆解的话,spring主配置文件将会非常的庞大。实际开发中,可以将部分配置拆解到其他配置文件中。在spring主配置文件中引入其他配置文件,使用import标签,当加载主文件时会一并加载其他配置文件。

spring相关api

  • ApplicationContext:接口类型,代表应用上下文,可以通过其实例获取spring容器中的Bean对象。
  • ApplicationContext的实现类:
    • ClassPathXmlApplicationContext:从类路径下加载配置文件
    • FileSystemXmlApplicationContext:从磁盘路径加载配置文件
    • AnnotationConfigApplicationContext:使用注解配置容器对象时,需要此类来加载spring容器。它用来读取注解。
  • getBean方法
    • 源码:

    • 使用:
      注意:参数是Class类型,表示根据类型从容器中匹配Bean实例。但是,若容器中相同类型Bean存在多个,则该方法报错。

spring配置其他第三方Bean:如配置数据源(连接池)

<!--引入context命名空间-->
xmlns:context="http://www.springframework.org/schema/context"
<!--引入context约束路径-->
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd

<!--加载外部的properties文件-->
<context:property-placeholder location="classpath:jdbc.properties"/>

spring注解开发

  • 原始注解
    spring原始注解主要是替代<Bean>的配置。

    使用举例:

  • 新注解
    使用原始注解并不能完全代替xml配置。

    使用举例:

学习来源:https://www.bilibili.com/video/BV1Fi4y1S7ix?p=2

posted @   扬帆去远航  阅读(91)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示