Spring: IOC和DI 入门案例

打印 上一主题 下一主题

主题 1757|帖子 1757|积分 5271

入门案例代码实现

   需求分析:将BookServiceImpl和BookDaoImpl交给Spring管理,并从容器中获取对应的bean对象举行方法调用。
  1.创建Maven的java项目
  2.pom.xml添加Spring的依赖jar包
  3.创建BookService,BookServiceImpl,BookDao和BookDaoImpl四个类
  4.resources下添加spring配置文件,并完成bean的配置
  5.使用Spring提供的接口完成IOC容器的创建
  6.从容器中获取对象举行方法调用
  项目布局如下:

添加Spring的依赖jar包

pom.xml
  1.   <dependencies>
  2.     <dependency>
  3.       <groupId>org.springframework</groupId>
  4.       <artifactId>spring-context</artifactId>
  5.       <version>6.1.14</version>
  6.     </dependency>
  7.     <dependency>
  8.       <groupId>junit</groupId>
  9.       <artifactId>junit</artifactId>
  10.       <version>4.12</version>
  11.       <scope>test</scope>
  12.     </dependency>
  13.   </dependencies>
复制代码
创建BookService,BookServiceImpl,BookDao和BookDaoImpl四个类

  1. // dao 类
  2. public interface BookDao {
  3.     public void save();
  4. }
  5. public class BookDaoImpl implements BookDao {
  6.     public void save() {
  7.         System.out.println("book dao save ...");
  8.     }
  9. }
  10. // service 类
  11. public interface BookService {
  12.     public void save();
  13. }
  14. public class BookServiceImpl implements BookService {
  15.     //5.删除业务层中使用new的方式创建的dao对象
  16.     private BookDao bookDao;
  17.     public void save() {
  18.         System.out.println("book service save ...");
  19.         bookDao.save();
  20.     }
  21.     //6.提供对应的set方法,在Service中提供方法,让Spring的IOC容器可以通过该方法传入bean对象
  22.     public void setBookDao(BookDao bookDao) {
  23.         this.bookDao = bookDao;
  24.     }
  25. }
复制代码
添加spring配置文件

resources下添加spring配置文件applicationContext.xml,并完成bean的配置
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
  5.     <!--1.导入spring的坐标spring-context,对应版本是5.2.10.RELEASE-->
  6.     <!--2.配置bean-->
  7.     <!--bean标签标示配置bean
  8.     id属性标示给bean起名字
  9.     class属性表示给bean定义类型-->
  10.     <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
  11.     <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
  12.         <!--7.配置server与dao的关系-->
  13.         <!--property标签表示配置当前bean的属性
  14.         name属性表示配置哪一个具体的属性
  15.         ref属性表示参照哪一个bean-->
  16.         <property name="bookDao" ref="bookDao"/>
  17.     </bean>
  18. </beans>
复制代码
留意事项:bean定义时id属性在同一个上下文中(配置文件)不能重复
步骤6:获取IOC容器

  1. public class App {
  2.     public static void main(String[] args) {
  3.         // 获取IOC容器
  4.                 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
  5.        // 获取bean(根据bean配置id获取)
  6.         BookService bookService = (BookService) ctx.getBean("bookService");
  7.         bookService.save();
  8.     }
  9. }
复制代码
运行结果


小结



  • 项目中用到的对象没有手动去new,直接被spring IOC容器控制了,用的时候直接get即可
  • 用到spring的依赖注入DI:
    service中用到的dao对象,需要在Service中提供方法,让Spring的IOC容器可以通过该方法传入bean对象,并在配置文件中添加依赖注入的配置
  • 配置中的两个bookDao的寄义是不一样的
    1,name="bookDao"中bookDao的作用是让Spring的IOC容器在获取到名称后,将首字母大写,前面加set找对应的setBookDao()方法举行对象注入;
    2,ref="bookDao"中bookDao的作用是让Spring能在IOC容器中找到id为bookDao的Bean对象给bookService举行注入
    关系如图所示:

[说明]:内容紧张泉源黑马程序员网上资源学习

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表