IoC入门案例

IoC入门案例

思路分析

  1. 管理什么?(Service与Dao)
  2. 如何将被管理的对象告知IoC容器?(配置)
  3. 被管理的对象交给IoC容器,如何获取到IoC容器?(接口)
  4. IoC容器得到后,如何从容器中获取bean?(接口方法)

入门案例(XML版)

  1. 导入Spring坐标

    <!--pom.xml-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>
    
  2. 定义Spring管理的类(接口)

    //BookService.java
    public interface BookService {
        void save();
    }
    
    //BookServiceImpl.java
    public class BookServiceImpl implements BookService {
        private BookDao bookDao = new BookDaoImpl();
    
        @Override
        public void save(){
            System.out.println("book service save...");
            bookDao.save();
        }
    }
    
  3. 创建Spring配置文件,配置对应类作为Spring管理的bean

    <!--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">
        <!--1.导入spring的坐标spring-context, 对应版本是5.2.10.RELEASE-->
        <!--2.配置bean-->
        <!--bean标签表示配置bean
        id属性表示给bean起名字
        class属性表示给bean定义类型-->
        <bean id="bookDao" class="com.charley.dao.impl.BookDaoImpl"/>
        <bean id="bookService" class="com.charley.service.impl.BookServiceImpl"/>
    </beans>
    
  4. 初始化IoC容器(Spring核心容器/Spring容器),通过容器获取bean

    // App2.java
    public class App2 {
        public static void main(String[] args) {
            // 3.获取容器
            ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
            // 4. 获取bean
    //        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
    //        bookDao.save();
    
            BookService bookService = (BookService) ctx.getBean("bookService");
            bookService.save();
        }
    }