Spring框架入门之IOC与DI案例演示

一: 学习Spring框架的原因

        1.简化开发

        2.可以整合其他技术(框架)

二: Spring的核心概念

        1. IOC(Inversion of Control) 控制反转, 即将new对象的权利由程序转到外部(Spring的IOC容器)

            Plus:Spring提供了一个容器,称为IOC容器,IOC容器负责对象的创建、初始化等一系列      工作,被创建或被管理的对象在IOC容器中统称为Bean

        2. DI(Dependency injection) 依赖注入, 即在IOC容器中建立Bean与Bean之间的依赖关系

三:IOC入门案例(创建Maven项目后使用Spring构建项目)

        实现步骤:

        1.在pom.xml文件中导入Spring坐标

<dependencies>
    <!--导入spring的坐标spring-context,对应版本是5.2.10.RELEASE-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>
</dependencies>

        2.编写要交给Spring管理的类(不是固定格式,根据具体业务来定)

            Eg: 编写xxxService,xxxDao的接口以及他们各自的实现类xxxServiceImpl,xxxDaoImpl

public interface BookDao {
    public void save();
}

public class BookDaoImpl implements BookDao {
    public void save() {
        System.out.println("BookDaoImpl运行了save方法");
    }
}

public interface BookService {
    public void save();
}

public class BookServiceImpl implements BookService {
    private BookDao bookDao= new BookDaoImpl();
    public void save() {
        System.out.println("BookServiceImpl执行了save方法");
        bookDao.save();
}

        3.  在Maven项目Resources文件夹下创建Spring的配置文件applicationContext.xml, 并且配置对应的类作为Spring管理的Bean

             (注意:导过Spring坐标刷新Maven后才会出现这个配置文件)

<?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标签:表示配置bean
    	id属性:表示给bean起名字
    	class属性:表示给bean定义类型
	-->
    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl"/>

</beans>

        4.初始化IOC容器,通过容器获取Bean对象

public class App {
    public static void main(String[] args) {
        //1.创建IoC容器对象,加载spring核心配置文件
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        //2 从IOC容器中获取Bean对象(BookService对象)
        BookService bookService= (BookService)ctx.getBean("bookService");
        //3 调用Bean对象(BookService对象)的方法
        bookService.save();
    }
}

        注意看这个案例我们是通过IOC容器(AppliacationContext)来创建BookService对象而不是通          过我们主动new的方式来创建对象的,这个思想就是叫做IOC(Inversion of Control 控制反转)

四:DI入门案例(创建Maven项目后使用Spring构建项目)

     对上述的案例进行DI优化,主要是建立起bookService与bookDao之间的关系

     实现步骤:

        1.删除使用new的形式创建对象的代码

public class BookServiceImpl implements BookService {

    //private BookDao bookDao= new BookDaoImpl();
    //删除原先使用new的方式创建的bookDao对象
    private BookDao bookDao;

    public void save() {
        System.out.println("BookServiceImpl执行了save方法");
        bookDao.save();
    }
}

        2.提供依赖对象对应的setter方法

public class BookServiceImpl implements BookService {

    //private BookDao bookDao= new BookDaoImpl();
    //删除原先使用new的方式创建的bookDao对象
    private BookDao bookDao;

    public void save() {
        System.out.println("BookServiceImpl执行了save方法");
        bookDao.save();
    }

    //提供对应的set方法
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

        3.配置service与dao之间的关系

           在applicationContext.xml中配置

<?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标签<bean />表示配置bean
    id属性表示给bean起名字
    class属性表示给bean定义类型-->
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
   <!-- <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl"/>--><!--
    在service这个bean中配置与Dao的关系-->
    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
        <!--property标签表示配置当前bean的属性
        name属性表示配置的一个具体的属性
        ref属性表示参照哪一个bean-->
        <property name="bookDao" ref="bookDao"/>
    </bean>

</beans>

注意:配置文件中的三个bookDao有着不同的对应关系,ref后面的bookDao对应IOC容器中id叫做bookDao的Bean对象,name属性后面的bookDao对应BookServiceImpl中的属性bookDao

好啦Spring入门就说到这里啦,用SprigBoot也可以演示IOC和DI思想,具体参见其他博文~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值