DI(Dependency Injection)依赖注入:
- 在容器中建立Bean与Bean之间的依赖关系和整个过程 , 被称为依赖注入
Spring技术对Ioc思想进行了实现:
- Spring提供了一个容器 , 被称为Ioc容器 , 用来充当IoC思想的外部
- IoC容器负责对象的创建 , 初始化等一系列工作 , 被创建和管理的对象在IoC容器中被称为Bean
// 数据层实现 public class BookDaoImpl implements BookDao { public void save() { System.out.println("book dao save ..."); } }
// IoC容器 /* 包含 dao service 两者可以建立连接 */
// 业务层实现 public class BookServiceImpl implements BookService { private BookDao bookDao; public void save() { bookDao.save(); } }
目的:充分解耦
- IoC:使用IoC容器管理bean
- DI:在IoC容器内将有依赖关系的bean进行关系绑定
最终效果:
- 使用对象不仅可以直接从IoC容器中获取 , 还可以将已获得的Bean之间绑定依赖关系
首先我们需要明白IoC的使用规则:
- IoC负责管理什么:Service和Dao
- 如何被管理的对象告知IoC容器:(配置)
- 被管理的对象交给IoC容器 , 如何获得IoC容器:(接口)
- IoC容器得到之后 , 如何获得Bean:(接口方法)
- 使用Spring所需要导入的坐标:(pom.xml)
下面我们给出IoC入门的详细步骤:
- 创建Maven项目 , 在pom.xml中导入坐标
org.springframework spring-context 5.2.10.RELEASE
- 创建Spring.xml的配置包(applicationContext.xml,导入坐标后xml中更新该XML)
- 主函数
package com.itheima; import com.itheima.dao.BookDao; import com.itheima.service.BookService; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App2 { public static void main(String[] args) { //3.获取IoC容器 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); //4.获取bean(根据bean配置id获取) //BookDao bookDao = (BookDao) ctx.getBean("bookDao"); //bookDao.save(); // 注意:需要类型转化 BookService bookService = (BookService) ctx.getBean("bookService"); bookService.save(); } }
DI入门 首先我们需要明白DI的使用规则:
- 基于IoC管理bean
- Service中使用new形式创建Dao对象是否保留:(否)
- Service中需要Dao对象如何进入到Service中:(提供方法)
- Service与Dao之间的关系如何描述:(配置)
下面我们给出DI入门的详细步骤(基于IoC入门):
- 删除new方法
public class BookServiceImpl implements BookService { //5.删除业务层中使用new的方式创建的dao对象 private BookDao bookDao; public void save() { System.out.println("book service save ..."); bookDao.save(); } }
- 创建对象的set方法
public class BookServiceImpl implements BookService { //5.删除业务层中使用new的方式创建的dao对象 private BookDao bookDao; public void save() { System.out.println("book service save ..."); bookDao.save(); } //6.提供对应的set方法 public void setBookDao(BookDao bookDao) { this.bookDao = bookDao; } }
- 创建Dao和Service的连接
Bean是保存在IoC中的对象 , 我们通过配置的方式获得Bean
下面我们从三个方面分别讲解Bean:
bean基本配置
首先我们先介绍bean本身性质:
类别
描述
名称
bean
类型
所属
beans标签
功能
定义Spring核心容器管理对象
格式
属性列表
id:bean的id , 使用容器可以通过id值获得对应的bean , 在一个容器中id值唯一
class:bean的类型 , 即配置的bean的全路径类名
范例
然后我们介绍一下bean的别名:
类别
描述
名称
name
类型
推荐阅读
- 柠檬水什么时候喝最好 柠檬水什么时候喝好
- 我想念你(我想念你的句子)
- 黄子韬|黄子韬徐艺洋见家长疑同居,还不承认恋情,再怎么嘴硬都无济于事
- 完美日记|这届双11,完美日记为啥“隐身”了?
- 玄奘有什么身世 ? 玄奘的身世
- 手机导航究竟哪个更好用 手机导航哪个好用
- 指甲白色月牙变少,指甲的月牙白越来越多-
- 戴尔台式机评测 戴尔台式机
- 绿松石|绿松石与藏族金轮
- |艺术家徐耀——淡雅脱俗 赏心悦目