Spring1-概念基础

一、概述

SpringBoot是Spring的简化版,底层就是Spring

分布式SpringCloud底层就是SpringBoot

image-20200916094551882

1.1 作用:解耦

​ 耦合:抽象类/接口 对象=new 子类/接口实现类();企业需求变化,new的代码都要改

image-20200916094923131

任何类的一个对象都是一个javaBean

早期使用的是EJB,重量级框架,使用配置复杂

Spring轻量级框架

1.2 业务功能

项目中的业务功能可以分成两类

​ 主业务逻辑

​ 复用度低:转账,存钱,取钱;借书,还书;入住,结账

​ 一个公司的系统不可能拿来给另一个公司用,同一行业也不行,业务逻辑都不同

​ 交叉业务逻辑(系统级服务,不能独立用,放在主业务中)

​ 可以复用:记录日志,事务控制,权限控制(filter的代码可以复用)

1.3 IoC和AOP

IoC:控制反转就是解决主业务的耦合,配置文件+反射+工厂

AOP:面向切面编程,将交叉业务作为切面(交叉业务)织入到主业务中

​ 解决主业务逻辑和交叉业务逻辑耦合

​ Filter就是AOP

​ 执行主业务之前,Filter做登录判断(切面,可复用的交叉业务)

​ 下面都是主业务

image-20200916101256879

二、框架搭建

学的是Spring Framework

jar包image-20200916102251329

image-20200916102725461

spring对市面上常用的第三方jar包进行了一个整合,前面加了自己的名字,但源代码都是一样的

image-20200916102615112

核心包

image-20200916104258863

image-20200916104717655

image-20200916104922037

2.1 添加jar包

log4j实现logging的接口,jog4j可以不要,logging必须要

image-20200916105455435

image-20200916105635563

日志门面和log4j,测试jar

一共七个包

image-20200916105819173

2.2 配置文件

建议放在src类路径根目录下,名字可以任意,官方建议applicationContext.xml

2.2.1约束头

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!-- bean definitions here -->

</beans>

提示自己配一下,核心包里都有

2.2.2 beans标签

image-20200916110908720

2.3 应用

读取类路径

image-20200916111145630

进行解耦

其实这就是IoC:控制反转,对象创建权的转移,传统方法是程序员自己new的

使用Spring框架,将对象的创建交给Spring容器,由框架创建,底层:工厂模式+配置文件+反射

只需要更改配置文件即可,不用动源代码

image-20200916111416781

filesystem文件系统就是I/O,路径你随意放,上面只能放在类路径下

image-20200916141033033

2.4 注意事项

2.4.0

image-20200916111621571

对应bean标签的id4

2.4.1 servlet底层源码没有日志

2.4.2 logging和log4j的关系

​ logging:日志门面,接口

​ log4j:一种日志实现

2.4.3 ApplicationContext和BeanFactroy区别

Bean工厂也是造bean的

image-20200916142524600

BeanFactory:调用getBean()才会创建对象,不建议使用

ApplicationContext:容器启动时,创建所有bean,第一次比较慢,负担较大,后面的人用得体验好

2.5 Bean的装配

Bean的装备:让容器创建对象

2.5.1 默认装配方法:(我们常用)

​ 底层使用无参构造器image-20200916143406589

​ 写了带参构造器,一定添加无参构造

缺无参构造错误image-20200916143542663

2.5.2 动态工厂Bean

使用工厂创建对象,工厂方法是实例方法

没用对,直接用工厂生成对象,在创建什么产品时还是有耦合,所以不对

原因:把工厂bean当成普通bean来用了

错误示例:

image-20200916144706962

正确用法:

image-20200916145126301

image-20200916164316176

2.5.3 静态工厂Bean

静态方法直接类调用,不用对象调用

image-20200916145450464

image-20200916145547308

image-20200916145516375

2.6 Bean的作用域

默认单例

image-20200916191116445

2.7 Bean的生命周期

Bean的生命周期比较复杂,有11个生命周期

image-20200916191924260

image-20200916191945883

image-20200916192000754

接口没有方法,接口实现类才有close()方法,要进行向下转型

image-20200916152732099

向下转型不一定能转成功,假转是可以的,真转骗一下编译器运行也会出错

有fc=sc是假转,没有是真转,真转就报错,类型不兼容

image-20200916153546396

一开始调用这个方法哪来的config参数,是读取配置文件得到的参数信息

image-20200916154027501

2.8 DI依赖注入

2.8.1概述

IoC:Inversion of Controll控制反转(不需要自己new,交给容器来创建对象),是一种思想,有不同的实现方式,常见的有两种:

​ DL:依赖查找dependence looup,类似于目录查找

​ JNDL:java命名的查找

​ DI:依赖注入dependence injection,对象由容器来创建,要一个创建一个,对象的属性值也在配置文件中配置

​ 创建对象+对象属性赋值

DI有两种实现

​ 设值注入

​ 构造注入

2.8.2 设值注入

1.单表image-20200916155518803

底层使用的无参构造+SetXxx

2.有域属性

基本数据类型和字符串用value,其他用ref

image-202009161600417982.8.3 构造注入

image-20200916160530224

底层使用的带参构造

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值