Skip to content

需求分析:将BookServiceImpl和BookDaoImpl交给Spring管理,并从容器中获取对应的bean对象进行方法调用。

一、创建Maven的java项目

二、2.pom.xml添加Spring的依赖jar包

js
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.2.10.RELEASE</version>
</dependency>

三、创建BookDao,BookDaoImpl,BookService和BookServiceImpl四个类

BookDao

js
public interface BookDao {
    public void save();
}

BookDaoImpl

js
public class BookDaoImpl implements BookDao {
    public void save() {
        System.out.println("book dao save ...");
    }
}

BookService

js
public interface BookService {
    public void save();
}

BookServiceImpl

js
public class BookServiceImpl implements BookService {
    private BookDao bookDao = new BookDaoImpl();
    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
}

四、resources下添加spring配置文件

右键 -> 新建 -> XML配置文件 -> Spring配置

五、在配置文件中完成bean的配置

js
<?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="bookDao" class="com.blog.dao.impl.BookDaoImpl"/>
    <bean id="bookService" class="com.blog.service.impl.BookServiceImpl"/>
</beans>

⚠️

注意事项:bean定义时id属性在同一个上下文中(配置文件)不能重复

六、获取IOC容器

使用Spring提供的接口完成IOC容器的创建,创建App类,编写main方法

js
public class App {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

    }
}

七、从容器中获取对象进行方法调用 使用getBean(String name)方法,其name参数就是我们在bean配置的id,通过这个id来造对象

js
public class App {
    public static void main(String[] args) {
        // 3.获取IOC容器
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        // 4.获取bean
        BookService bookService = (BookService) context.getBean("bookService");
        bookService.save();
    }
}

八、运行程序

测试结果如下

js
book service save …
book dao save …

总结

至此,Spring的IOC入门案例已经完成,但是在BookServiceImpl的类中依然存在BookDaoImpl对象的new操作,它们之间的耦合度还是比较高,这块该如何解决,就需要用到下面的DI(依赖注入)