首页 > 其他分享 >Springboot web,三层架构, IOC&DI 使用总结2023

Springboot web,三层架构, IOC&DI 使用总结2023

时间:2023-06-20 19:13:40浏览次数:42  
标签:web Springboot DI spring bean 注解 IOC

Springboot web,三层架构, IOC&DI 使用总结2023

一.spring.io 全家桶
spring boot
spring framework 基础框架,配置繁琐,入门难度大--》spring boot
spring cloud
spring security
spring data

spring发展到今天是一个生态圈,提供了若干个子项目,每个子项目用于完成特定的功能。

二.spring boot
spring 配置繁琐,入门难度大--》spring boot:快速的构建应用程序,简化开发,提供效率。
1.web入门
1.1spring initializr +web spring 模块
1.2请求处理类:@RestController

@RestController
 public class HelloController{
   @RequestMapping("/hello")
   public String hello(){
     return "hello";
   }
 }

1.3 http://localhost:8080/hello
2.http协议
3.web服务器tomcat

三. 请求响应:

@RestController--@ResponseBody
@RequestMapping("/hello")

1.统一返回结果格式:
Restlt(code,msg,data)

2.读取项目里的文件:

String file=this.getClass().getClassLoader().getResource("emp.xml").getFile(); #读取本地项目里的文件
List<Emp> empList XmlParserUtils.parse(file,Emp.class);
empList.stream().forEach(emp->{
  String gender=emp.getGender();
  if("1".equals(gender)){
  emp.setGender("男“);
  }
});

3.静态资源访问:
resouce/static/test.html
localhost:8080/test.html

四.三层架构
1.分层解耦:数据访问,逻辑处理,接收请求,响应数据
controller:接收请求,响应数据
service:逻辑处理
Dao:数据访问:增删改查
面向接口编程:

2.IOC&DI :高内聚:单一任务;低耦合:解除调用层之间的联系--》将需调用的对象放到容器里
3.IOC:控制反转,对象的创建控制权有程序自身转移到外部(容器),这种思想称为控制反转;
4.DI:容器为应用程序提供运行时所依赖的资源,程为依赖注入;

5.@Component #类添加此特性注解:表示将当前类交给IOC容器管理,称为IOC容器中的bean 即控制反转操作
6.@Autowired #调用声明的对象上添加此特性注解(orderService,userService):表示IOC容器会提供该类的bean对象,并赋值给该变量,称为依赖注入。

7.@Component 声明bean的基础注解:的衍生注解:
@Controller 标注在控制器的类上
@Service 标注在业务类上
@Repository 标注在数据访问类上

8.手动指定扫描包:@ComponentScan("","")
9.@SpringBootApplication 默认扫描此类包下的所有类的包;

  1. 多个服务添加了@Service注解,调用时使用那一个对象;
    @Primary #在类上添加这个注解
    @Qualifier #在声明的对象上添加:@Qualifier(“orderServiceA bean的名称”)+@Autowired
    @Resource #在声明的对象上添加:@Resource(name=“orderServiceA bean的名称”) 不需要 @Autowired

11.@Autowired 与@Resource的区别?
spring框架提供的注解,JDK提供的注解;
安照类型注入,按照名称注入。

标签:web,Springboot,DI,spring,bean,注解,IOC
From: https://www.cnblogs.com/chenshaojun2008/p/17494449.html

相关文章

  • Springboot实现WebSocket
    一、什么是webSocketWebSocket是HTML5下一种新的协议(Websocket协议本质上是一个基于tcp的协议),它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的,WebSocket是一个持久化的协议。二、修改配置文件在application.properties,修改内容为:server.port=......
  • 保证editView大小不变防止输入过多变形以及TextView的style引用
    <TableLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:stretchColumns="1"android:padding="5dip">......
  • 数据库转移到sd卡AsyncTask,ProgressDialog使用
    privateclassExportDatabaseFileTaskextendsAsyncTask<String,Void,Boolean>{privatefinalProgressDialogdialog=newProgressDialog(ctx);//canuseUIthreadhereprotectedvoidonPreExecute(){this.di......
  • 5步带你玩转SpringBoot自定义自动配置那些知识点
    目前SpringBoot框架真的深受广大开发者喜爱,毕竟它最大的特点就是:快速构建基于Spring的应用程序的框架,而且它提供了各种默认的功能和配置,可以让开发者快速搭建应用程序的基础结构。但是,当我们需要自定义一些配置时,我们就需要使用自定义自动配置。今天一定让大家深刻体验干货知识点......
  • Web编辑器从word复制粘贴图片
    ​图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。加入下面的代码://判断剪贴......
  • springboot+websocket简单使用
    一、引入依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.o......
  • 抛砖引玉:Redis 与 接口自动化测试框架的结合
    接口自动化测试已成为保证软件质量和稳定性的重要手段。而Redis作为一个高性能的缓存数据库,具备快速读写、多种数据结构等特点,为接口自动化测试提供了强大的支持。勇哥这里粗略介绍如何结合Python操作Redis,并将其应用于接口自动化测试框架中,以提升测试效率和数据管理能力。Redi......
  • 深度思考与有效知识管理:Obsidian工具与问题的价值
    随着信息时代的发展,如何有效管理知识,实现深度思考,成为了一个重要的挑战。Obsidian作为一款强大的知识管理工具,能帮助我们更好地组织和链接我们的知识。然而,有效的知识管理和深度思考的关键并不仅仅在于工具,更在于我们对问题的选择和关注。根据我们的生命历程和问题意识,我们能确定......
  • 适用于MacOS的多合一压缩包管理器Bandizip
    macos解压缩软件哪款好?这里为大家推荐一款智能多合一压缩包管理器Bandizipformac,该软件提供具有拖放功能的直观界面,使创建和提取档案变得容易。它还支持多核处理,这意味着它可以快速高效地处理大型档案。 Bandizip的应用界面设计更加扁平,但并不意味着它有多好的设计感,即便你......
  • springboot简易配置
    server:port:8089servlet:encoding:charset:UTF-8tomcat:uri-encoding:UTF-8spring:datasource:type:com.zaxxer.hikari.HikariDataSourcejdbc-url:jdbc:mysql://localhost:3306/mydb_base?serverTimezone=UTC&useUnicode=t......