IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【SSM学习】01-2-Spring IOC -> 正文阅读

[Java知识库]【SSM学习】01-2-Spring IOC

SSM(B站黑马)学习笔记

01-1-Spring概述
01-2-Spring IOC
01-3-Spring AOP
01-4-Spring 事务



前言

SSM(B站黑马)学习笔记 01-2-Spring IOC


IOC、核心容器

核心观点

IOC/DI、IOC容器(管理对象的创建和初始化过程)、Bean

更改数据层实现,需要重新编译、测试、部署、发布,都是有成本的。

IOC快速入门

快速入门思路分




  1. 导入Spring坐标(依赖)

  2. 定义spring管理的类(接口)

  3. 创建Spring配置文件,配置对应类作为Spring管理的bean

  4. 初始化IOC容器(Spring核心容器/Spring容器),提供容器获取bean

DI(dependency injection 依赖注入)

DI 快速入门

就是旧写法对项目的耦合度偏高,使用IOC将new对象的交由外部管理,bean就是声明要管理的类,在bean中建立类和类的依赖关系,也通过bean传递运行该类所需的东西,比如service需要dao层,在service就不用new dao层,在bean中声明dao层的bean和service的bean,在service的bean中建立两者得到依赖关系称为DI

快速入门思路分析



  1. 删除业务层中使用new的方式创建的dao对象 2.提供对应的set方法

  2. 配置server与dao的关系

DI(依赖注入)方式

依赖注入就是描述bean和bean之间的关系,比如service和dao的关系,在service的bean中引用dao的bean称为引用类型,又比如管理数据库连接池的bean所需驱动 url 用户名 密码 这些就是简单类型。传递供这个bean运行所需的东西,而这个bean又是声明要管理的类,所以就是传给这个类需要的东西让程序正常运行。

依赖注入的两种方式

setter注入——引用类型



setter注入——简单类型


构造器注入——引用类型(了解)

构造器注入——简单类型

参数适配(了解)

两种方式选择

依赖自动装配


依赖自动装配特征

集合注入(很少用)






Bean

Bean配置

bean基础配置

bean别名配置

bean作用范围配置



实例化bean的三(四)种方式

使用构造方法(常用)
就是什么都不写


使用静态工厂实例化(了解)
早些年做程序常用方式,就是造对象不要自己new,用工厂的方式,做一定程度的解耦。这种方式一般是为了兼容早期的遗留系统使用,所以了解即可。
补充:工厂设计模式,顾名思义,就是用来生产对象的,在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则,如果我们使用工厂来生产对象,我们就只和工厂打交道就可以了,彻底和对象解耦,如果要更换对象,直接在工厂里更换该对象即可,达到了与对象解耦的目的:所以说,工厂模式最大的优点就是:解耦



用实例工厂实例化bean(了解)



方式三改良 使用FactoryBean实例化bean(实用)



Bean生命周期

配置的方法控制生命周期

destory没执行,因为现在程序运行在Java虚拟机中,虚拟机启动了,IOC容器加载的配置也启动了,然后bean初始化并执行完了,然后程序执行完虚拟机就退出了,没有给bean销毁的机会

使用接口控制生命周期(了解)



bean销毁

数据源对象管理(第三方的bean管理)

例1:阿里巴巴数据库连接池

导入坐标(依赖)

连接数据库一般需要数据库驱动 url 用户名 密码,查看需要管理的对象是用构造方法还是set方法。按住ctrl点击文件,按ctrl+f12查看方法。(管理第三方提供的资源,就是你的对象交给我管理我把对应的属性提供给它正常工作)

连接成功

例2:C3P0数据库连接池

导入坐标(依赖)

管理C3P0的对象,要管理谁 不知道,通过查询百度等找的类似于阿里巴巴数据库连接池的DruidDataSource。

连接成功

加载properties文件

将 com.mysql.cj.jdbc.Driver 这些写在配置文件中不合适,应该单独抽出来,用properties文件。使用Spring加载properties文件中的信息


容器



核心容器总结

容器相关

bean相关

依赖注入相关

注解开发

Spring提供了一系列注解,使用注解就能加快开发速度。从Spring2.0开始Spring逐步提供了各种各样的注解,到了2.5的时候注解就比较完善了,所以我们先学习如何使用Spring提供的这一系列注解来简化我们的开发。到了Spring3.0的时候推出了纯注解开发。

注解开发定义Bean

根据名称访问@Component(“bookDao”)相当于

根据类访问@Component 不指定名称

<context:component-scan base-package=“com.gdit”/>会扫描该包下的类,相当于bean标签内的class

@Component的衍生注解@Controller @Service @Repository 这三个作用跟@Component功能一样,只是为了方便理解分层

纯注解开发

Spring3.0的时候推出了纯注解开发,免去了配置文件,用类替换掉配置文件

@Configuration就代表这是配置类相当于配置文件的头标

@ComponentScan(“com.gdit”)相当于扫描包<context:component-scan base-package=“com.gdit”/>

容器通过类获取


注解开发依赖注入

配置文件有set注入 构造器注入,Spring注解开发是为了加速开发,所以对原始功能做了阉割,只做了最快最好用的功能 自动装配。

引用类型

@Autowired

注意:由于@Autowired是按类型装配的,当有两个BookDao的实现类时就会出错如图

可以通过@Qualifier(“”)注解指定名称装配 必须打破@Autowired注解使用

简单类型


简单类型加载properties文件



注解开发 bean作用范围与生命周期



第三方bean管理

第三方bean管理

管理第三方bean 由于不能把配置直接写源代码中,所以只能以编程去写

导入坐标(依赖)

新建单独配置类

方式一:扫描包的形式(不推荐,当配置了过多无法观察加载了哪些配置类)

方式二:使用@Import()注解导入配置类(多个使用数组 这样便于精准查看导入了哪些配置类)
只用一个@Import()注解

两种方式都可运行(推荐第二种)两种方式都可运行(推荐第二种)

第三方bean依赖注入

简单类型

引用类型
定义bean

注解开发总结

XML配置与注解配置对比

Spring整合

Spring整合Mybatis

思路分析

Mybatis独立开发 导入依赖->编写mybatis-config.xml配置文件->代理开发(xml映射文件或注解开发,这里使用纯注解开发)->编码执行


Spring IOC用来管bean的,思考Mybatis中哪些bean应该交给它管。在Mybatis独立开发的编码执行阶段,将其分成几部分,其中获取数据层接口部分随着业务的变化也会随之变化所以不是;第二部分获取SqlSession的openSession依赖于SqlSessionFactory造的对象,所以核心对象是SqlSessionFactory。构建SqlSessionFactory对象需要加载mybatis-config.xml,数据库的配置所有都是围绕这个配置文件的,图二中初始化dataSource部分告知SqlSessionFactory操作哪个数据库,所以这一部分是为SqlSessionFactory服务的。

分析核心对象->交由Spring管理

Spring整合Mybatis

相关依赖

<dependencies>
    <!--Spring基础框架-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>

    <!--mybatis依赖-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.5</version>
    </dependency>

    <!--mysql 驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.24</version>
    </dependency>

    <!--数据库连接池-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.16</version>
    </dependency>

    <!--Spring操作数据库-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>

    <!--Spring整合Mybatis-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.0</version>
    </dependency>
</dependencies>

整合Mybatis核心容器注解开发初始化

编写整合Mybatis的配置类

将sqlSessionFactory交由Spring管理,对其所需的mybatis-config.xml配置进行替换(注:dataSource是jdbConfig来的,它生成的DataSource已经交给Spring了)

SqlSessionFactoryBean是Mybatis和Spring整合快速创建SqlSessionFactory对象。FactoryBean都是造对象的,其都有一个getObject()方法返回对象

整合完成运行

Spring整合JUnit

导入相关依赖

编写测试类
设定类运行器->告知上下文配置->自动注入 编写测试方法


注:

该内容是根据B站黑马程序员学习时所记,相关资料可在B站查询:黑马程序员2022最新SSM框架教程_Spring+SpringMVC+Maven高级+SpringBoot+MyBatisPlus企业实用开发技术

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 00:56:31  更:2022-09-04 01:01:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 12:21:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码