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

初学Spring之 IOC 控制反转

Spring 是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架

导入 jar 包:spring-webmvc、spring-jdbc

<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.1.10</version>
</dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>6.1.10</version>
</dependency>

SpringBoot:(构建)

1.一个快速开发的脚手架

2.基于 SpringBoot 可以快速开发单个微服务

3.约定大于配置

SpringCloud:(协调)

SpringCloud 是基于 SpringBoot 实现的

dao 层即 Data Access Object

service 层即业务层,在业务层调用 dao 层

使用 set 注入后,程序不再具有主动性,而是变成了被动的接收对象

写个测试类调用 set 方法

用户实际调用的是业务层,dao 层用户不需要接触(程序在 dao 层修改)

即不通过直接访问 dao 层,通过 service 层作为桥梁来调用

UserServiceImpl 类代码:

package com.demo.service;
import com.demo.dao.UserDao;public class UserServiceImpl implements UserService{private UserDao userDao;//利用set进行动态实现值的注入public void setUserDao(UserDao userDao) {this.userDao = userDao;}@Overridepublic void getUser() {userDao.getUser(); //业务层调dao层}
}

MyTest 类代码:

import com.demo.dao.UserDaoMysqlImpl;
import com.demo.service.UserService;
import com.demo.service.UserServiceImpl;public class MyTest {public static void main(String[] args) {/*用户实际调用的是业务层,dao层不需要接触即不通过直接访问dao层,通过service作为桥梁来调用*/UserService userService = new UserServiceImpl();((UserServiceImpl)userService).setUserDao(new UserDaoMysqlImpl());userService.getUser();}
}

IOC 控制反转(Inversion of Control),获得依赖对象的方式反转,即把选择权交给用户,其实现方式是依赖注入(Dependency Injection,DI)

(如果不是这种设计思想,主动权在业务层,

private UserDao userDao = new UserDaoImpl(); 每次都要 new 新的 dao 层类,不适用)

http://www.lryc.cn/news/389256.html

相关文章:

  • rpc的仅有通信的功能,在网断的情况下,比网通情况下,内存增长会是什么原因
  • 从零开始:如何设计一个现代化聊天系统
  • 香橙派OrangePi AIpro初体验:当小白拿到一块开发板第一时间会做什么?
  • 【C语言内存函数】
  • Mysql部署MHA高可用
  • 【算法学习】射线法判断点在多边形内外(C#)以及确定内外两点连线与边界的交点
  • SQL语句(DML)
  • uniapp小程序打开地图导航
  • webstorm格式化或保存时 vue3引入的组件被删除了
  • Java时间转换
  • Spring Boot与WebFlux的实战案例
  • vue3引入本地静态资源图片
  • git 禁止dev合并到任何其他分支
  • 第二节:如何使用thymeleaf渲染html(自学Spring boot 3.x的第一天)
  • 计算机相关术语科普之什么叫网关(Gateway)
  • B站网页部分API
  • 使用Spring Boot和Spring Security保护你的应用
  • CVE-2019-12272 Openwrt可视页面LuCi命令注入漏洞复现(完结)
  • 【多线程开发 4】从源码学习LockSupport
  • gameui C++的代码
  • 1.什么是js?特点是什么?组成部分?
  • 爬虫是什么?
  • 深入理解Presto分页查询:方法与最佳实践
  • 如何使用Go语言中的并发函数实现网络爬虫的分布式部署?
  • STM32第九课:DHT11温湿度传感器
  • JVM线上监控环境搭建Grafana+Prometheus+Micrometer
  • MyBatis(17)MyBatis 如何处理枚举类型
  • 云数据中心运维新纪元:让Linux服务器如虎添翼
  • C# 多线程造成CPU占用率高
  • 谈谈在不同公司中的SAP职位