IoC控制反转

62 篇文章 0 订阅
60 篇文章 0 订阅

IoC控制反转

核心概念

1. IoC(Inversion of Control)控制反转

使用对象时,由主动new产生对象转换成,从外部提供对象,在这个过程中,对象的创建控制权由程序转移到外部,此思想称为控制反转。

2. DI(Dependency Injection)依赖注入

在容器中建立bean与bean之间的依赖关系的整个过程,成为依赖注入。

3. Spring技术对IoC思想进行了实现

Spring提供了一个容器,称为IoC容器,用来充当IoC思想的外部。
IoC容器负责对象的搭建,初始化一系列工作,被创建或者被管理的对象在IoC容器中统称为Bean。
目标:充分解耦
使用IoC容器管理Bean(IoC)。
在IoC管理容器内将有依赖关系的Bean进行关系绑定(DI)。
最终效果:使用对象时不仅可以直接从IoC容器中获取,并且获取到的bean 已经绑定了所以的依赖关系。
Demo:

在这里插入图片描述
当代码需要修改时,需要重新修改代码,编译程序,并部署发布,非常耗时废力。代码书写现状:耦合度偏高
解决方案:使用对象时,在程序中不要主动使用new产生对象,转换为由外部提供对象。
IoC(Inversion of Control)控制反转

对象的创建权由程序转移到外部,这种思想称为控制反转。

4. IoC入门案例思路分析:
  1. 管理什么(Service与Dao)
  2. 如何将被管理的对象告知IoC容器(配置)
  3. 被管理的对象交给IoC容器,如何获取到IoC容器(接口)
  4. IoC容器得到后,如何从容器中获取bean(接口方法)
  5. 使用Spring导入哪些坐标(pom.xml)
5. DI入门案例思路分析:
  1. 基于IoC管理bean
  2. Service中使用new形式创建的Dao对象是否保留(否)
  3. Service中需要的Dao对象如何进入到Service中(提供方法)
  4. Service与Dao间的关系如何描述(配置)
6. 项目结构

在这里插入图片描述

附录
1. pol.xml
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>
</dependencies>
2. applicationContext.xml
<!--1.导入spring的坐标spring-context,对应的版本是5.2.10.RELEASE-->
<!--2.配置bean-->
<!--bean标签表示配置
id属性表示给bean起名字
class属性表示给bean定义类型-->
<bean id="bookDao" class="com.yh.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.yh.service.impl.BookServiceImpl">
   <!-- 7.配置service与dao的关系
    property标签表示配置当前bean属性
    name属性表示配置哪一个具体的属性
    ref属性表示参照哪一个bean-->
    <property name="bookDao" ref="bookDao"/>
</bean>
3. APP.java
//3.获取IoC容器
ApplicationContext ctx =new ClassPathXmlApplicationContext("applicationContext.xml");
//4.获取bean
BookDao bookDao=(BookDao) ctx.getBean("bookDao");
bookDao.save();
BookService bookService=(BookService) ctx.getBean("bookService");
bookService.save();
4. BookServiceImpl.java
//5.使用业务层中使用new的方式创建的dao对象
private BookDao bookDao;
//6.提供对应的Set方法
public void setBookDao(BookDao bookDao) {
    this.bookDao = bookDao;
}
public void save(){
    System.out.println("book service save ...");
    bookDao.save();
}

最后

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值