spring入门---IOC(xml配置文件管理Bean)

文章详细介绍了Spring框架的核心概念,包括控制反转(IOC)和面向切面编程(AOP)。它解释了Spring如何简化JavaEE开发,以及Spring技术栈的不同组成部分,如SpringMVC和SpringBoot。文中还深入讨论了SpringFramework,特别是IOC容器的实现,如BeanFactory和ApplicationContext接口。此外,文章涵盖了Bean的管理、作用域、生命周期,以及如何通过XML配置和注解进行属性注入。
摘要由CSDN通过智能技术生成

什么是spring?

一个主流的开源的轻量的JavaEE框架。有Rod Jhonson(spring之父)提出,用于简化开发难度和开发周期。
在这里插入图片描述

spring分类

广义:spring技术栈

由多个子项目组成,如:springMVC 、SpringBoot、SpringCloud等。其中springFramework是所有子项目的基础。

狭义:springFramework

两个核心:IOC、AOP
IOC:控制反转,把创建对象和管理对象的整个过程交个spring来处理。
AOP:面向切面,在不改变代码或很少改变代码的情况下增加其他功能。

spring特点

1、非侵入式:零污染。不依赖其他组件也可使用。
2、IOC:控制反转。
3、AOP:面向切面。
4、容器:把对象放入容器中,由此容器对对象的生命周期进行管理。
5、组件化:把复杂的应用拆分为多个简单组件。

spring5入门案例

在这里插入图片描述

  • 4、创建普通的Student类,在类中添加属性和方法
    在这里插入图片描述
  • 5、创建spring配置文件,再配置文件中创建对应的对象
    在这里插入图片描述
  • 6、进行测试
    在这里插入图片描述
    测试结果:
    在这里插入图片描述

IOC的概念和原理

一、什么是IOC

1、控制反转,把对象创建和对象之间的调用的过程交给spring进行管理。
2、目的:降低耦合度

二、IOC底层原理

xml解析、工厂模式、反射

  • 原始方法调用类中的属性
    在这里插入图片描述- 工厂模式降低耦合度
    在这里插入图片描述
  • 画图讲解IOC底层原理
  • 1、xml配置文件,配置创建对象
    在这里插入图片描述

  • 2、创建工厂类

class StudentFactory{
	pulbic static StudentMapper getStudent(){
		String classValue  = class属性值;//xml解析
		Class c = Class.forName(classValue);//获取类的class对象
		Student stu = (Student) c.newInstance();//实例化对象的
		return stu;
		}
	}

三、spring提供IOC容器实现的两种方式(两个接口)

BeanFactory: IOC基本实现,是spring内部使用的接口,不提供给开发人员进行使用。加载配置文件的时候不会创建对象,要在获取对象的时候才创建。
ApplicationContext:BeanFactory子接口,提供了更多更强大的功能,一般由开发人员使用。加载配置文件的时候就把配置文件中的对象进行创建。

ApplicationContext接口中的实现类

如图:在这里插入图片描述

四、IOC操作Bean管理

1、什么是Bean管理

Bean管理是指两个操作,spring创建对象和spring注入属性。

2、Bean管理操作的两种方式:

基于XML配置文件方式
基于注解方式

基于xml方式创建对象

如:在这里插入图片描述1、在spring配置中,使用bean标签,在标签里面添加相应属性,就可以实现对象的创建。
2、在bean标签中的属性:
id:唯一标识
class:类全路径(包类路径)
3、创建对象时,默认执行无参构造方法来创建对象。

基于XML方式注入属性

  • 第一种:使用set方法进行注入

    • 创建类,定义属性和对应的set方法
      在这里插入图片描述

    • 在spring配置文件中配置对象的创建和属性的注入
      在这里插入图片描述

    • 在类中创建方法打印测试属性值
      在这里插入图片描述

    • 在测试类中获取对象及测试属性的方法
      在这里插入图片描述

  • 第二种:使用有参构造进行注入

  • 创建类,定义属性和对应的有参构造
    注:要生成无参构造,因为XML配置文件通过无参构造方法来创建对象
    在这里插入图片描述

  • 配置文件中进行属性注入和对象创建
    在这里插入图片描述* 步骤三和步骤四与方法一一致:略

  • 第三种:p名称空间注入
    • 在配置文件中添加p名称空间
      在这里插入图片描述

    • 进行属性注入,在bean便签里面操作
      注:需生成属性对应的set方法
      在这里插入图片描述- 注入其他属性

      • 注入null值
        使用对应的null标签
        在这里插入图片描述
  • 属性值含有特殊符号—把含有特殊符号的内容写入CDATA
    在这里插入图片描述
  • 注入属性–外部Bean
  • 创建emp和dept两个类,并添加相应的属性及set方法
    在这里插入图片描述
    在这里插入图片描述

  • 在emp类引用dept对象属性
    在这里插入图片描述

  • 配置文件配置外部Bean
    在这里插入图片描述
    注:在emp中注入dept对象,使用peoperty标签,其中name属性对应类中的属性名称;ref属性是代表dept对象bean标签中的id属性值。

  • 在emp中创建方法打印测试属性–dept类需要进行toString
    在这里插入图片描述

  • 在测试类中测试emp对象及其测试方法
    在这里插入图片描述 - 注入属性–内部Bean
    在这里插入图片描述注:外部Bean和内部Bean的区别
    外部bean:直接在beans标签内部定义bean对象,外部bean可以被多个bean对象引用;
    内部bean:在某个bean标签内部定义bean对象,内部bean只能对该bean标签的某个属性引用。

  • 注入属性:级联赋值
    需要获取对象的属性值,故在emp类中生成dept的get方法
    例:
    在这里插入图片描述
  • 注入属性-注入其他类型
  1. 注入数组类型
    在这里插入图片描述2.注入list类型
    在这里插入图片描述
    3.注入Set集合类型
    在这里插入图片描述4.注入Map集合类型
    在这里插入图片描述
  • 在集合或数组中设置对象类型值
    1、创建Teacher类和Course类,并创建对应的属性和set方法
    Teacher类在这里插入图片描述Course类在这里插入图片描述2、配置文件中做相应配置
    在这里插入图片描述3、作相应测试
    在这里插入图片描述
    在这里插入图片描述

把集合注入部分提取公用

1、在spring配置文件中引用名称空间util
如图:在这里插入图片描述2、使用util标签完成list集合注入
在这里插入图片描述3、在创建对象时引用注入的集合
在这里插入图片描述

Bean的分类

普通Bean

再配置文件中定义的Bean类型就是返回类型

工厂Bean

在配置文件中洪定义的bean类型可以和返回的类型不一致
1、创建类,让该类作为工厂类,实现接口FactoryBean
2、实现接口里面的方法,在实现的方法中定义bean的返回类型
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

bean的作用域

1、在Spring里面,设置创建bean是单实例还是多实例
2、在spring里面,默认情况下,bean是单实例对象(指向同一个地址值)
在这里插入图片描述3、如何设置bean是单实例或多实例
通过bean标签中的scope属性设置。singleton设置单实例。prototype设置多实例。
多实例案例:
在这里插入图片描述区别 : 单实例情况在加载spring配置文件时就创建出单实例对象;多实例情况下需要在调用getBean()时才会创建多实例对象。

bean生命周期

一、从对象创建到对象销毁的过程。

二、周期历程:
1、通过构造器来创建bean实例(无参构造);
2、为bean的属性设置值;
3、调用bean的初始化方法;
4、使用bean;(获取到了对象)
5、当容器关闭时,调用bean的销毁的方法。

三、演示bean的生命周期
1、创建测试类
如:在这里插入图片描述2、配置文件做相关配置
如:在这里插入图片描述3、创建测试类
如:在这里插入图片描述四、bean的后置处理器,生命周期七步
1、通过构造器来创建bean实例(无参构造);
2、为bean的属性设置值;
3、把bean实例传递给bean后置处理器方法进行相应处理;–postProcessBeforeInitialztion
4、调用bean的初始化方法;
5、把bean实例传递给bean后置处理器方法进行相应处理。–postProcessAfterInitialztion
6、使用bean;(获取到了对象)
7、当容器关闭时,调用bean的销毁的方法。

在这里插入图片描述

五、添加后置处理器:
1、创建类,实现接口BeanPostProcessor
如:
在这里插入图片描述2、配置文件中配置后置处理器
如:在这里插入图片描述

xml自动装配

1、什么是自动装配
根据指定的规则(属性名称,属性类型)将匹配的属性值进行注入。

通过bean标签的autowire属性实现自动装配

2、根据属性名称自动装配(autowire= “byName”)
注:类属性名称要与注入值bean的id属性值保持一致
在这里插入图片描述3、根据属性类型自动装配(autowire= “byType”)
注:类属性类型要与注入值bean的class属性值保持一致
在这里插入图片描述

引入外部属性文件

1、直接配置数据库信息
1.1 配置德鲁伊连接池
1.2 引入的德鲁伊连接池依赖包
如:在这里插入图片描述

2、引入外部属性文件来配置数据库信息
2.1 创建外部属性文件,properties格式文件,用于写数据库信息
如:
在这里插入图片描述

2.2 把外部属性文件引入到spring配置文件中
2.2.1 引入context名称空间
在这里插入图片描述

2.2.2 引入外部属性文件
在这里插入图片描述

2.3配置数据库信息
在这里插入图片描述

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值