六十九、Spring入门案例(Spring与IOC)

简介: 六十九、Spring入门案例(Spring与IOC)

理论连接


六十八、Spring框架入门 -- 理论_托马斯-酷涛的博客-CSDN博客

1、Spring 是轻量级的开源的 JavaEE 框架2、Spring 可以解决企业应用开发的复杂性3、Spring 有两个核心部分:IOC 和 Aop ...

https://blog.csdn.net/m0_54925305/article/details/123074976?spm=1001.2014.3001.5501


项目整体框架


57.png


项目准备


1、Spring下载


https://tuomasi.lanzouy.com/iD2dd00kjk2h


       密码:Spring


2、SSM全套Jar包


https://tuomasi.lanzouy.com/b02uszjch


       密码:jars


项目启动


1、创建Web项目


58.png

59.png


60.png



2、将Jar包拷贝到 lib 目录下


61.png


3、在 src 目录下新建包


62.png

63.png


4、创建接口 UserDao


64.png

65.png


5、写一个简单的say方法


66.png


6、创建实现类


67.png


68.png

69.png


7、打印 hello World


70.png


8、src 目录下创建xml


71.png


72.png

73.png



9、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-4.3.xsd">
  <!-- 将指定类配置给Spring,让Spring创建其对象的实例 -->
  <bean id="userDao" class="com.Example.ioc.UserDaoImpl"></bean>
  </bean>
</beans>

10、创建测试类


74.png

75.png


11、通过容器获取并调用实例方法


76.png


12、运行程序


77.png


        注:say方法被调用


Spring IOC:在main方法中没有通过new关键字来创建UserDao接口的实现类对象,而是通过Spring容器来获取的实现类对象,这就是Spring IOC容器的工作机制


依赖注入


控制反转:在使用Spring框架后,对象的实例不再由调用者创建,而是由Spring容器来创建,Spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样控制权由应用代码转移到了Spring容器,控制权发生了反转,这就是Spring的控制反转。


依赖注入:从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这样相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入。


1、创建接口UserService


public interface UserService {
  public void say();
}

2、创建实现类UserServicelmpl


public class UserServiceImpl implements UserService {
  // 声明属性
  private UserDao userDao;
  // 添加userDao属性的setter方法,用于实现依赖注入
  public void setUserDao(UserDao userDao) {
  this.userDao = userDao;
  }
  @Override
  public void say() {
  // 调用userDao中的say()方法,执行输出语句
  this.userDao.say();
  System.out.println("userService say hell world!");
  }
}

3、添加 xml 依赖


<!-- 添加一个id为userService的实例 -->
  <bean id="userService" class="com.Example.ioc.UserServiceImpl">
  <!-- 将id为userDao的Bean实例注入到userService -->
  <property name="userDao" ref="userDao"></property>
  </bean>

       注:<property>是<bean>元素的子元素,它用于调用Bean实例中的setUserDao()方法完成属性赋值,从而实现依赖注入。


       name属性表示Bean实例中的相应属性名,ref属性用于指定其属性值。


4、创建测试类进行测试


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestDI {
  public static void main(String[] args) {
  // 1.初始化Spring容器,加载配置文件
  ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
  // 2.通过容器获取UserService实例
  UserService userService = (UserService) applicationContext.getBean("userService");
  // 3.调用实例中的say()方法
  userService.say();
  }
}

5、运行程序


78.png


        注:使用Spring容器通过UserService实现类中的say()方法,调用了UserDao实现类中的say()方法,并输出了结果。这就是Spring容器属性setter注入的方式,也是实际开发中最为常用的一种方式。


Spring与IOC总结


控制反转(IOC,Inversion of Control),是一个概念,是一种思想。指将传统上由程序代 码直接操控的对象调用权交给容器,通过容器来实现对象的装配和管理。控制反转就是对对 象控制权的转移,从程序代码本身反转到了外部容器。


IoC 是一个概念,是一种思想,其实现方式多种多样。当前比较流行的实现方式有两种: 依赖注入和依赖查找。依赖注入方式应用更为广泛。


1、依赖查找:Dependency Lookup,DL,容器提供回调接口和上下文环境给组件,程序代 码则需要提供具体的查找方式。比较典型的是依赖于 JNDI 系统的查找。


2、依赖注入:Dependency Injection,DI,程序代码不做定位查询,这些工作由容器自行完成。


依赖注入 DI 是指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序。


Spring 的依赖注入对调用者与被调用者几乎没有任何要求,完全支持 POJO 之间依赖关系的管理。


依赖注入是目前最优秀的解耦方式。依赖注入让 Spring 的 Bean 之间以配置文件的方式组织在一起,而不是以硬编码的方式耦合在一起的。


相关文章
|
1月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
169 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
|
1月前
|
XML Java 测试技术
spring复习01,IOC的思想和第一个spring程序helloWorld
Spring框架中IOC(控制反转)的思想和实现,通过一个简单的例子展示了如何通过IOC容器管理对象依赖,从而提高代码的灵活性和可维护性。
spring复习01,IOC的思想和第一个spring程序helloWorld
|
9天前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
13 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
9天前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
12 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
|
21天前
|
Java Spring 容器
Spring IOC、AOP与事务管理底层原理及源码解析
【10月更文挑战第1天】Spring框架以其强大的控制反转(IOC)和面向切面编程(AOP)功能,成为Java企业级开发中的首选框架。本文将深入探讨Spring IOC和AOP的底层原理,并通过源码解析来揭示其实现机制。同时,我们还将探讨Spring事务管理的核心原理,并给出相应的源码示例。
74 9
|
18天前
|
存储 开发框架 Java
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
文章详细介绍了Spring、IOC、DI的概念和关系,解释了控制反转(IOC)和依赖注入(DI)的原理,并提供了IOC的代码示例,阐述了Spring框架作为IOC容器的应用。
17 0
什么是Spring?什么是IOC?什么是DI?IOC和DI的关系? —— 零基础可无压力学习,带源码
|
27天前
|
缓存 Java Spring
手写Spring Ioc 循环依赖底层源码剖析
在Spring框架中,IoC(控制反转)是一个核心特性,它通过依赖注入(DI)实现了对象间的解耦。然而,在实际开发中,循环依赖是一个常见的问题。
33 4
|
5天前
|
XML Java 数据格式
Spring IOC容器的深度解析及实战应用
【10月更文挑战第14天】在软件工程中,随着系统规模的扩大,对象间的依赖关系变得越来越复杂,这导致了系统的高耦合度,增加了开发和维护的难度。为解决这一问题,Michael Mattson在1996年提出了IOC(Inversion of Control,控制反转)理论,旨在降低对象间的耦合度,提高系统的灵活性和可维护性。Spring框架正是基于这一理论,通过IOC容器实现了对象间的依赖注入和生命周期管理。
15 0
|
1月前
|
XML Java 开发者
经典面试---spring IOC容器的核心实现原理
作为一名拥有十年研发经验的工程师,对Spring框架尤其是其IOC(Inversion of Control,控制反转)容器的核心实现原理有着深入的理解。
80 3
|
13天前
|
XML Java 数据格式
Spring的IOC和AOP
Spring的IOC和AOP
32 0