Spring: ------ IOC(控制反转)、依赖注入、bean生命周期

一、引言

1 什么是spring

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

spring是轻量级的开源框架,不是替换原有的任何技术,而是对开发过程中的组件(包括Action/service/dao/事务等)进行管理的框架,是项目管理的框架。

​ 其中使用了很多优秀的设计模式(工厂模式、代理模式、原型模式。。。。。)

注意:spring不管理 entity实体类。

2 spring的核心思想

两大核心思想 :IOC(Inversion of Control) 控制反转

​ AOP(Aspect Oriented Programming) 面向切面编程

二、回顾简单工厂

  1. 工厂的作用: 创建对象。

  2. 工厂的好处:解耠合。

  3. 使用工厂的步骤:1) 创建类 2) 配置文件中配置该类 3) 从工厂获取对象

三、环境搭建

仓库网址:https://mvnrepository.com/

  1. 引maven依赖
<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>4.3.13.RELEASE</version>
        </dependency>
    </dependencies>
  1. 配置文件 xml格式

    ​ 文件名称: 随意

    ​ 位置:随意

四、spring的第1个程序【重点】

1 使用步骤

  1. 创建要管理的组件/类

  2. 在spring的配置文件,配置管理组件

<bean id="唯一标识" class="类的全限定名">
</bean>
示例:
<bean id="userService" class="com.baizhi.first.UserServiceImpl">
</bean>
  1. 从spring工厂中,获取组件
	//启动spring工厂(框架/容器)-非web环境的工厂
		//   WebXmlApplicationContext-web环境中的工厂类
	ApplicationContext ctx = new ClassPathXmlApplicationContext(“文件夹/spring.xml”) ; 
	// 从spring工厂中获取对象
	Object obj = ctx.getBean("bean的唯一标识");
	UserService service = (UserService )obj;

示例:

// 启动srping工厂
ApplicationContext ctx = new ClassPathXmlApplicationContext("/spring.xml");
// 从工厂获取对象
UserService service = (UserService)ctx.getBean("userService");

        service.register(new User());

2 spring工厂管理组件的底层实现

伪代码:
    beanid  id唯一标识  class--> 类的全限定名
    Class c = Class.forName("类的全限定名");
	obj = c.newInstance();

五、什么是IOC【重点】

​ IOC(Inversion of Control) 控制反转:对象的创建 由原来代码中new的方法 转移到 spring的配置文件中,由spring工厂进行创建。

​ spring不仅提供了对 对象的管理,而且对象和对象 间的依赖关系 也提供了 完美的解决方案–即,DI(Dependency Injection)依赖注入。

六、DI 依赖注入

1 概念

​ DI是一种编程思想,如果一类要使用另一个类,则把被使用的类定义为当前类的成员变量,使用spring可以进行属性的自动赋值。

2 实现方式

​ DI的实现有3种方式:

 		1. set注入:使用属性的set方法自动赋值  <font color="red">【重点】</font>
 		2. 构造注入:使用构造方法给属性赋值
 		3. 自动注入:使用属性的set方法自动赋值

3 set注入 【重点】

使用属性的set方法自动赋值

  1. 引用注入(引用工厂中已存在的组件)【重点】

    第一种语法:
    在这里插入图片描述

    第二种语法【了解】:
    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3oc7iFSJ-1594526229973)(.\assets\1560154765092.png)]

  2. 值注入(给属性赋的值 不是工厂中已存在的组件)

    8种基本类型、包装类、日期类型:

    ​ 第一种语法:
    在这里插入图片描述

    ​ 第二种语法:

    ​		[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hfRfMyB5-1594526229977)(.\assets\1560218779675.png)]

    数组类型:

    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qLIyCH9C-1594526229979)(.\assets\1560234156550.png)]

    List类型:

    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G0OuFcjK-1594526229980)(.\assets\1560233536066.png)]

    set类型:

    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T1Ol0POq-1594526229981)(.\assets\1560233596546.png)]

    Map类型:

    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-30zXFGnC-1594526229981)(.\assets\1560233615506.png)]

    Properties类型:

    ​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aqVxqIe8-1594526229982)(.\assets\1560233761442.png)]

4 构造注入【了解】

​ 通过带参构造给属性赋值。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S1aPss0f-1594526229983)(.\assets\1560156500043.png)]

5 自动注入【了解】

​ 底层调set方法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gl1LuVD8-1594526229984)(.\assets\1560157609652.png)]

七、spring创建对象的数量【重点】

  • 默认spring单例管理对象,提高性能(节约内存)。

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PaAlf8KY-1594526229985)(.\assets\1560159062961.png)]

​ 单例和多例的对比:

​ 单例: (优)轻量级 (缺)多线程环境中,数据不安全

​ 多例:(优)数据安全 (缺)重量级

八、bean的生命周期 【了解】

​ 4个阶段:实例化、初始化、使用、销毁

​ bean的生命周期,由 spring工厂/容器/框架 进行管理。

​ 1.实例化: 单例----工厂启动,创建对象。

​ 多例—使用时(调getBean方法) 创建。

​ 2.初始化: 只执行1次。

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7wY0Lk4t-1594526229986)(.\assets\1560159788100.png)]

​ 3.使用

​ 4.销毁: 只管理单例bean的销毁 。

​	[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C164FjbG-1594526229987)(.\assets\1560159933375.png)]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值