IT评测·应用市场-qidao123.com技术社区

标题: Spring01——Spring简介、Spring Framework架构、Spring核心概念、IOC入门 [打印本页]

作者: 水军大提督    时间: 2024-11-9 20:50
标题: Spring01——Spring简介、Spring Framework架构、Spring核心概念、IOC入门
为什么要学


学什么


怎么学


01-初识spring


02-Spring Framework系统架构

Spring Framework是Spring生态圈中最基础的项目,是其他项目的根基
系统架构讲求上层依赖于下层
03-核心概念

代码书写现状:假如想更改数据层的实现,就还得更改业务层new的对象,源代码更改了,就需要重新编译、测试、摆设、发布等

上述标题在于:在类中写了其他的实现,就导致了代码的耦合度偏高
解决方案:利用对象时,在程序中不主动利用new产生对象,转换为由外部提供

上述头脑即为:IOC (Inversion of Control) 控制反转
IOC (Inversion of Control) 控制反转


Spring与IOC的关系、Bean的概念

Spring技术对IOC头脑进行了实现

DI (Dependency Injection) 依赖注入

由于service依赖dao运行,所以在IOC容器中,也将service依赖于dao

怎样实现的充分解耦

上述一系列的利用都是为了一个目的:充分解耦

核心概念小结

重点要理解什么是IOC/DI头脑、什么是IOC容器和什么是Bean:
04-IOC入门案例

IOC入门案例重要介绍:Spring到底是怎样来实现IOC的
思路分析

代码实现

需求分析:将BookServiceImpl和BookDaoImpl交给Spring管理,并从容器中获取对应的bean对象进行方法调用。
  1. <dependencies>
  2.         <dependency>
  3.             <groupId>org.springframework</groupId>
  4.             <artifactId>spring-context</artifactId>
  5.             <version>5.2.10.RELEASE</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>
复制代码
  1. @Override
  2.     public void save() {
  3.         System.out.println("book dao save");
  4.     }
复制代码
  1. public class BookServiceImpl implements BookService {
  2.     private BookDao bookDao = new BookDaoImpl();
  3.     @Override
  4.     public void save() {
  5.         System.out.println("book service save");
  6.         bookDao.save();
  7.     }
  8. }
复制代码
  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.     <!--配置bean-->
  6.     <!--
  7.       bean标签表示配置bean
  8.       id属性表示给bean起名字
  9.       class属性表示给bean定义类型
  10.       得是具体的实现类而不是接口,要靠这个造对象的
  11.       -->
  12.     <bean id="bookDao" class="com.yolo.dao.impl.BookDaoImpl"/>
  13.     <bean id="bookService" class="com.yolo.service.impl.BookServiceImpl"/>
  14. </beans>
复制代码
  1. public class APP {
  2.     public static void main(String[] args) {
  3.         // 获取IOC容器
  4.         ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
  5.         // 获取bean对象
  6. //        BookDao bookDao = (BookDao) ac.getBean("bookDao");
  7.         // 获取到对象后就调用对象方法
  8. //        bookDao.save();
  9.         BookService bookService = (BookService) ac.getBean("bookService");
  10.         bookService.save();
  11.     }
  12. }
复制代码
运行结果

05-DI入门案例

DI入门案例重要介绍:Spring到底是怎样来实现DI的
思路分析

代码实现

需求:基于IOC入门案例,在BookServiceImpl类中删除new对象的方式,利用Spring的DI完成Dao层的注入
  1. // 删除业务层中使用new的方式创建的dao对象
  2.         // private BookDao bookDao = new BookDaoImpl();
  3.     private BookDao bookDao;
复制代码
  1. public void setBookDao(BookDao bookDao) {
  2.         this.bookDao = bookDao;
  3.         System.out.println("set方法被容器调用啦");
  4.     }
复制代码
  1.         <bean id="bookDao" class="com.yolo.dao.impl.BookDaoImpl"/>
  2.     <!--主要变化在这里-->
  3.     <bean id="bookService" class="com.yolo.service.impl.BookServiceImpl">
  4.         <!--配置server与dao的关系-->
  5.         <!--
  6.             property标签表示配置当前bean的属性
  7.             name属性表示配置哪一个具体的属性(这里是配置bookService的bookDao属性)
  8.             ref属性表示参照哪一个bean(参照当前配置文件中的bookDao)
  9.         -->
  10.         <property name="bookDao" ref="bookDao"/>
  11.     </bean>
复制代码
留意:配置中的两个bookDao的含义是不一样的
   name=”bookDao”中bookDao的作用是让Spring的IOC容器在获取到名称后,将首字母大写,前面加set找对应的setBookDao()方法进行对象注入
ref=”bookDao”中bookDao的作用是让Spring能在IOC容器中找到id为bookDao的Bean对象给bookService进行注入
  


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




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4