当前位置: 首页 > news >正文

spring入门(二)IOC入门案例和DI入门案例

一、IOC入门案例

实现步骤:
第一步 、使用Maven导入Spring坐标

<dependencies><!--导入spring的坐标spring-context--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>RELEASE</version></dependency>
</dependencies>

第二步、定义Spring管理的类(接口)

BookDao接口和BookDaoImpl实现类:

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

BookService接口和BookServiceImpl实现类:

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

第三步、创建Spring配置文件,配置对应类作为Spring管理的bean对象

定义applicationContext.xml配置文件并配置BookServiceImpl

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

==☆☆注意事项:bean定义时id属性在同一个上下文中(IOC容器中)不能重复☆☆==

第四步、初始化IOC容器(Spring核心容器/Spring容器),通过容器获取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();}
}

运行测试成功。打印service层和dao层的save方法。

二、DI入门案例

第一步、删除使用new的形式创建对象的代码


 

public class BookServiceImpl implements BookService {private BookDao bookDao;  //【第一步】删除使用new的形式创建对象的代码public void save() {System.out.println("book service save ...");bookDao.save();}
}


第二步、提供依赖对象对应的setter方法

public class BookServiceImpl implements BookService {private BookDao bookDao;public void save() {System.out.println("book service save ...");bookDao.save();}//【第二步】提供依赖对象对应的setter方法public void setBookDao(BookDao bookDao) {this.bookDao = bookDao;}
}

第三步、配置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标签:表示配置beanid属性:表示给bean起名字class属性:表示给bean定义类型--><bean id="bookDao" class="com.it.dao.impl.BookDaoImpl"/><bean id="bookService" class="com.it.service.impl.BookServiceImpl"><!--配置server与dao的关系property标签:表示配置当前bean的属性name属性:表示配置哪一个具体的属性ref属性:表示参照哪一个bean--><property name="bookDao" ref="bookDao"/></bean>
</beans>

运行测试成功。打印service层和dao层的save方法。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android Dialog:Dialog和DialogFragment的区别?DialogFragment如何使用?源码解析
  • MATLAB进行天线阵列方向图综合
  • 海外域名自动手动免费续费ssl证书
  • 对象存储数据库minio的持久化存储
  • 模拟算法专题——算法介绍算法讲解力扣实战应用
  • Android中使用eBPF跟踪 FD打开与关闭
  • HTTP“请求”和“响应”的报头及正文详解
  • BUUCTF—[网鼎杯 2020 朱雀组]phpweb
  • 【Spring Boot 3】【Web】解析获取HTTP请求参数
  • 828华为云征文|部署私有云和文档管理系统 Kodcloud
  • 【C++】static作用总结
  • Harmony TextInput实现带有提示语的Text效果
  • Linux之MySQL日志
  • java 中简单实现异步的几种方法
  • Falcon Mamba:首个高效的无注意力机制7B模型
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Angular4 模板式表单用法以及验证
  • Apache Spark Streaming 使用实例
  • interface和setter,getter
  • Java IO学习笔记一
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • React as a UI Runtime(五、列表)
  • React系列之 Redux 架构模式
  • Yeoman_Bower_Grunt
  • 老板让我十分钟上手nx-admin
  • 前端面试题总结
  • 三栏布局总结
  • 数据科学 第 3 章 11 字符串处理
  • 微信开源mars源码分析1—上层samples分析
  •  一套莫尔斯电报听写、翻译系统
  • 找一份好的前端工作,起点很重要
  • 追踪解析 FutureTask 源码
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 交换综合实验一
  • # Redis 入门到精通(一)数据类型(4)
  • #《AI中文版》V3 第 1 章 概述
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (多级缓存)缓存同步
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (三)uboot源码分析
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)大型网站的系统架构
  • (转)大型网站架构演变和知识体系
  • (转载)利用webkit抓取动态网页和链接
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET C# 操作Neo4j图数据库
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .Net 基于MiniExcel的导入功能接口示例
  • .net6Api后台+uniapp导出Excel
  • .Net多线程总结