在哔站黑马程序员学习Spring—Spring Framework—(一)核心容器(core container)重点之spring第一特征IOC控制反转

一、spring介绍

        spring是一个大家族全家桶,spring技术是JavaEE开发必备技能。spring技术解决的问题:一是简化开发,降低企业级开发的复杂性。二是框架整合,高效整合其他技术,提高企业级应用开发与运行效率。

        spring技术要学习以下内容: 

 spring大家族全家桶(生态圈):

 主要学习以下技术:

Spring Framework:是spring最早出现的技术,其他所有的spring技术都是依赖于spring framework执行的,它是一个底层的框架,所有东西都能够放在spring framework上运行,所以spring framework在spring大家族中具有决定性作用。

Spring Boot:spring能够简化开发,而使用springboot能够在简化开发的基础上加速开发,springboot是用来提高开发速度的,能够让原先的spring开发变得更加简单,书写更少的东西。

 Spring Cloud:分布式开发相关技术。

 二、Spring Framework

(一)spring framework系统架构图

系统架构中上层依赖于下层

(二)spring framework学习路线

 (三)第一部分:核心容器学习

核心概念:IoC(控制反转)/DI(依赖注入)、IoC容器、Bean

1、IoC(控制反转):

 以前的问题:当数据层的实现改变后,这时带来一个问题,业务层的实现相关代码必须要改变,这就导致原代码改变,这时就需要重新测试,重新部署,重新发布,这些工作都需要成本。而导致这个问题的根本原因:是在业务层的实现里面出现了其他类的代码,导致耦合度变高。

IoC容器:把对象放在IoC容器里面,由IoC容器帮助去创建对象,当业务层中要使用对象时,IoC容器给对象就行了。IoC容器管理大量的对象,管理对象的创建和初始化,包括service和dao,这些对象统一叫作Bean

2、DI(依赖注入):

 当使用service对象时是依赖于dao对象的,通过DI把dao数据层和service服务层这两个对象建立起依赖关系,这时使用service对象时可以直接获得dao对象。

使用spring实现IoC思想的入门案列:

将被管理的对象告知IoC容器(使用配置文件applicationContext.xml告知)(文件名任取)

1.导入spring的依赖包并刷新maven:

 

 2.新建spring的xml文件:

3. 在配置文件中配置bean:

4. 在app中获取IoC容器并通过IoC容器获取到bean对象:

 案列代码详细步骤如下:

 

 

 

 

 但是此时只是实现了IoC,并没有解耦,也就是业务层代码中仍然是new一个对象,这时就需要使用到DI依赖注入来充分解耦。

使用spring实现 DI 的入门案列:

 

 

  案列代码详细步骤如下:

 

 




3、bean的相关知识:

bean基础配置、bean别名配置、bean作用范围配置

bean别名配置: 

name属性可以为bean取更多的别名,也就是多个名字。

 

 bean的作用范围是用来控制创建的实例对象的数量的。

spring在帮我们管理对象的时候只创建一个内容对象,第一次使用后下一次还是使用的上一次的,这样不仅效率高,对内存也友好。

bean的创建(实例化的三种形式)

bean实质上是对象,创建bean使用构造方法完成(容器中管理的对象叫bean)

第一种实例化bean的方式——构造方法(常用):

以前创建对象是new+构造方法

对于spring来说也是使用构造方法来创建bean的,但是是无惨的构造方法,且不管是private还是public都可以运行(涉及到反射的工作原理)。

第二种实例化bean的方式——使用静态工厂(早些年做程序的常用方式),了解即可:

 

 这样的对象spring如何管理???

 

 

 第三种实例化bean的方式——使用实例工厂初始化bean,不再是静态的。

 

 第四种实例化bean的方式—— spring改良(第三种方式的改进版本,使得配置spring时简单)(务必要掌握):

 

 

 

 bean生命周期:

 



依赖注入方式:

 上面已经总结了使用setter注入,通过使用setter方法使得dao数据层对象传入到service服务层中。

 

 使用构造器(构造方法)注入:就不再需要setter方法,而是在构造方法里面传入对象或数据,其他是一样的,但是在配置文件中,配置bean的写法不一样。

 注意:自己写程序的时候最好使用setter方式注入对象或数据。



依赖自动装配:

spring帮助我们自动进行依赖注入,所以在spring的配置文件中就不再需要我们自己注入,也就是删掉<property>的代码,从此只需一个<bean>即可配置完成一个bean对象。

 提示:学完注解更简单,不再需要以上代码。

集合注入:数组、List、Set、Map、Properties

 

 注意:集合的注入使用频率很低

 第三方数据源对象管理:第三方传递过来的bean如何管理

核心:探索连接池对象

 第二个案例:c3p0的数据源

需要导入两个pom坐标: 

 但是:这种方法不是最终方法,因为这种方法可以看见密码用户名等数据,而常用方法是使用properties文件。

 

 那么对于spring应该如何读取这个properties文件呢??
spring加载properties文件:

1.开启一个全新的context命名空间

2.使用context空间加载properties文件

3.使用属性占位符${ } 读取properties文件中的属性



容器相关操作:

 



 核心容器大总结(core container)

三大部分:容器相关、bean相关、依赖注入相关

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值