Spring两个核心概念:IoC和DI

注意:本文章依据黑马程序员的SSM框架视频编写而成。

目录

前言

一、IoC是什么?

1.通过配置文件告知IoC容器要管理的对象

2.获取IoC容器

3.获取Bean

二、DI是什么?

三、如何在service层中如何调用dao层对象

1.在service的实现类中提供dao层对象的set方法

 2.在配置文件中配置service和dao之间的关系

四、Bean相关和依赖注入相关

1.Bean相关

2.依赖注入相关

总结


前言

理解Spring框架中IoC和DI的概念。


一、IoC是什么?

IoC(Inversion of Control)控制反转:

使用对象时,将new出来的对象转换成由外部提供对象,将创建对象的控制权转交给外部来控制管理,这种思想被称为控制反转。

Spring框架基于这种控制反转思想提供了一个容器来充当外部,该容器被称为IoC容器。

其中IoC容器负责对象的创建,初始化等一类列工作,被创建或被管理的对象在IoC容器中统一被称为Bean。

1.通过配置文件告知IoC容器要管理的对象

<!--id表示Bean的名字  class表示Bean的定义类型-->
<bean id="bookDao" class="com.***.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.***.service.impl.BookServiceImpl">

2.获取IoC容器

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

其中applicationContext.xml为配置文件名。

3.获取Bean

BookDao bookDao = (BookDao) context.getBean("bookDao");

getBean()方法中的"bookDao"参数就是在配置文件中定义的Bean的id名称,这样就获得了由容器所创建的BookDaoImpl对象。

二、DI是什么?

DI(Dependency Injection)依赖注入:

在容器中建立Bean与Bean之间的依赖关系的过程被称为依赖注入。

三、如何在service层中如何调用dao层对象

1.在service的实现类中提供dao层对象的set方法

public void setBookDao(BookDao bookDao) {
    this.bookDao = bookDao;
}

 2.在配置文件中配置service和dao之间的关系

<bean id="bookService" class="com.***.service.impl.BookServiceImpl">
    <!--配置service和dao之间的关系-->
    <!--name标签表示配置哪一个具体的属性,即对象名-->
    <!--ref表示参照哪一个bean名-->
    <property name="bookDao" ref="bookDao"/>
</bean>

四、Bean相关和依赖注入相关

1.Bean相关

<bean
    id="bookDao"                               bean的id
    name="dao bookDaoImpl"                     bean别名
    class="com.***.dao.impl.BookDaoImpl"        bena类型
    scope="singleton"                          控制bean的实例数量
    init-method="init"                         生命周期初始化方法
    destroy-method="destroy"                   生命周期销毁方法
    autowire="byType"                          自动装配类型
/>

2.依赖注入相关

<bean id="bookService" class="com.***.service.impl.BookServiceImpl">
    <constructor-arg name="bookDao" ref="bookDao"/>      构造器注入引用类型
    <constructor-arg name="msg" value="WARN"/>           构造器注入简单类型
    <property name="bookDao" ref="bookDao"/>             setter注入引用类型
    <property name="msg" value="WARN"/>                  setter注入简单类型
    <property name="names">                              list集合
        <list>
            <value>test</value>                          集合注入简单类型
            <ref bean="bookDao"/>                        集合注入引用类型
        </list>
    </property>
</bean>  

总结

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值