13.SpringBoot项目之Service层

news/2024/5/20 19:32:53/文章来源:https://blog.csdn.net/m0_58503202/article/details/133806735

SpringBoot项目之Service层

JavaEE三层架构

为了项目维护方便,为了项目开发便利。
三层架构功能
控制器层:controller方便和前端数据进行交互
业务层:service处理各种业务
持久化层:mapper和数据库进行数据交互

01

抽取出service层

按照这个层级目录输入
02

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Service;/**
* 专门处理股票的各种业务
* (不包含请求和响应,因为请求和响应是控制器处理)
*/
@Service
public class StockService {/*** 处理股票基本信息的json字符串* @param json*/public void stockBasicJsonInfoHandler(String json){//5、JSON转换JSONObject jsonObject = JSONObject.parseObject(json);//获取请求id(测试用)String requestId = jsonObject.getString("request_id");//获取本次的所有数据JSONObject data = jsonObject.getJSONObject("data");//获取表头(数组)JSONArray fields = data.getJSONArray("fields");//fields.forifor (int i = 0; i < fields.size(); i++) {System.out.print(fields.get(i)+"\t\t");}System.out.println();//获取表格内部数据JSONArray items = data.getJSONArray("items");for (int i = 0; i < items.size(); i++) {JSONArray jsonArray = items.getJSONArray(i);//展示这一行的数据for (int j = 0; j < jsonArray.size(); j++) {System.out.print(jsonArray.get(j)+"\t\t");}System.out.println();}}
/**
* 从CSV文件中读取股票信息
*/
public void stockBasicInfoCSVHandler() {File file;try {file = ResourceUtils.getFile("classpath:csvdata/stock_basic.csv");} catch (FileNotFoundException e) {throw new RuntimeException(e);}try (FileReader reader = new FileReader(file);) {CSVReader csvReader = new CSVReader(reader);List<String[]> list = csvReader.readAll();for (String[] arr : list) {//展示某一行的数据for (String s : arr) {System.out.print(s + "\t\t");}System.out.println();}} catch (FileNotFoundException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);} catch (CsvException e) {throw new RuntimeException(e);}
}
}

控制器层:
在前面创建的MyController2类中输入

@RestController
@RequestMapping("/my2")
public class MyController2 {//将RestTemplate工具导入到当前控制器中@AutowiredRestTemplate restTemplate;@AutowiredStockService stockService;//中间其他案例代码省略.......
/*** fastjson的转换展示(带有service)*/@RequestMapping("/r6")public void r6(){//1、封装map参数HashMap<String, String> map = new HashMap<>();map.put("api_name","stock_basic");map.put("token","1d4f7ff4545ece6b15812c50d2e179271e4b8c597e68744f6cbbc662");//2、设置请求头信息HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setContentType(MediaType.APPLICATION_JSON);//3、封装头实体内容HttpEntity<Map> entity = new HttpEntity<>(map, httpHeaders);//4、传递信息String json = restTemplate.postForObject("http://api.tushare.pro", entity, String.class);//5、调用业务层,处理并展示json数据stockService.stockBasicJsonInfoHandler(json);}
/**
* openCSV
*/
@RequestMapping("/r7")
public void r7() {stockService.stockBasicInfoCSVHandler();}
}

Controller控制器层: 所有和请求响应有关的代码,都在该层
Service业务层:所有和请求响应无关的代码,放在业务层

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_560521.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】哈希对unordered_map和unodered_set的封装

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a; C学习 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对我最大…

JOSEF约瑟 可调漏电继电器RT-LB230KS+Q-FL-100 导轨安装 配套零序互感器

一、产品用途及特点 RT-LB230KS漏电继电器&#xff08;以下简称继电器&#xff09;适用于交流电压为660V.至1140V电压系统中,频率为50Hz,电流15~4000A线路中做有无中性点漏电保护. 该继电器可与带分励脱扣器或失压脱扣器的断路器、交流接触器、磁力启动器等组成漏电保护装置&…

压缩炸弹,Java怎么防止

一、什么是压缩炸弹&#xff0c;会有什么危害 1.1 什么是压缩炸弹 压缩炸弹(ZIP)&#xff1a;一个压缩包只有几十KB&#xff0c;但是解压缩后有几十GB&#xff0c;甚至可以去到几百TB&#xff0c;直接撑爆硬盘&#xff0c;或者是在解压过程中CPU飙到100%造成服务器宕机。虽然…

谢邀,ADconf安全大会

儒道易行 道虽远&#xff0c;行则易至&#xff1b;儒虽难&#xff0c;坚为易成 文笔生疏&#xff0c;措辞浅薄&#xff0c;望各位大佬不吝赐教&#xff0c;万分感谢。 免责声明&#xff1a;由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失&am…

C. JoyboardCodeforces Round 902

C. Joyboard 样例1列表找规律&#xff1a; #include<iostream> #define int long long using namespace std; signed main() {int T;cin>>T;while(T--){int n,m,k;cin>>n>>m>>k;if(k1){cout<<1<<endl;}else if(k2){cout<<m…

vscode 资源管理器移动到右边

目录 vscode 资源管理器移动到右边 vscode 资源管理器移动到右边 点击 文件》首选项》设置》工作台》外观》 找到这个配置下拉选择左右

竞赛选题 深度学习OCR中文识别 - opencv python

文章目录 0 前言1 课题背景2 实现效果3 文本区域检测网络-CTPN4 文本识别网络-CRNN5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习OCR中文识别系统 ** 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;…

恢复Windows 11经典右键菜单:一条命令解决显示更多选项问题

恢复Windows 11经典右键菜单&#xff1a;一条命令解决显示更多选项问题 恢复Windows 11经典右键菜单&#xff1a;一条命令解决显示更多选项问题为什么改变&#xff1f;恢复经典右键菜单 我是将军我一直都在&#xff0c;。&#xff01; 恢复Windows 11经典右键菜单&#xff1a;一…

介绍一款小巧的Excel比对工具-DiffExcel

【缘起&#xff1a;此前找了一通&#xff0c;没有找到免费又好用的Excel比对工具&#xff0c;而ExcelBDD需要把Excel文件存放到Git&#xff0c;因此迫切需要Excel比对工具。 最新升级到V1.3.3&#xff0c;因为git diff有变化&#xff0c;原来是git diff会修改文件名&#xff0…

【重拾C语言】十二、C语言程序开发(穷举与试探——八皇后问题)

目录 前言 十二、C语言程序开发 12.1~3 自顶向下、逐步求精&#xff1b;结构化程序设计原则&#xff1b;程序风格 12.4 八皇后——穷举与试探 12.4.1 穷举法 示例&#xff1a;寻找一个整数的平方根 12.4.2 试探法 示例&#xff1a;计算给定数字的阶乘 12.4.3 穷举与试…

[论文笔记]SimCSE

引言 今天带来一篇当时引起轰动的论文SimCSE笔记,论文题目是 语句嵌入的简单对比学习。 SimCSE是一个简单的对比学习框架,它可以通过无监督和有监督的方式来训练。 对于无监督方式,输入一个句子然后在一个对比目标中预测它自己,仅需要标准的Dropout作为噪声。这种简单的…

IDEA 修改插件安装位置

不说假话&#xff0c;一定要看到最后&#xff0c;不然你以为我为什么要自己总结&#xff01;&#xff01;&#xff01; IDEA 修改插件安装位置 前言步骤 前言 IDEA 默认的配置文件均安装在C盘&#xff0c;使用时间长会生成很多文件&#xff0c;这些文件会占用挤兑C盘空间&…

vue打包配置

1.资源相对引用路径 build/webpack.prod.conf.js 找到output&#xff1a;增加 publicPath: ./,2.背景图片的引用问题 build/utils.js 找到if (options.extract) { 添加一行 publicPath:../../3.index.html页面没有显示内容 config/index.js 更改config/index.js 中的参数…

Zotero同步坚果云

实用教程 无意之中发现的Zotero同步坚果云的教程&#xff0c;简直和自己当时看视频&#xff0c;搜经验贴做的步骤一模一样&#xff0c;十分赞&#xff01;值得收藏&#xff01;只是忘记当时在哪保存的图片了&#xff0c;所以没法引用&#xff01;只能在这借花献佛&#xff0c;…

专业音视频领域中,Pro AV的崛起之路

编者按&#xff1a;在技术进步的加持下&#xff0c;AV行业发展得如何了&#xff1f;本文采访了两位深耕于广播电视行业的技术人&#xff0c;为我们介绍了专业音视频的进展&#xff1a;一位冉冉升起的新星&#xff1a;Pro AV以及FPGA在其中发挥的作用。 美国&#xff0c;拉斯维加…

RK3588 USB蓝牙调试

一.蓝牙基本概念 蓝牙技术是一种无线通信的方式&#xff0c;利用特定频率的波段&#xff08;2.4GHz-2.485GHz左右&#xff09;&#xff0c;进行电磁波传输。蓝牙传输原理是主从关系&#xff0c;一个主设备可以与7个蓝牙从设备配对。 二.蓝牙标准 蓝牙标准版本发展如下&#x…

自动化办公篇之python批量改名

#批量命名 import xlwings as xw app xw.App(visibleFalse,add_bookFalse) workbook app.books.open("测试表.xlsx") for sheet in workbook.sheets:sheet.namesheet.name.replace("彩印之","银河") workbook.save() app.quit()

C#中base关键字的使用

在C#编程语言中&#xff0c;base关键字扮演着重要的角色。它用于在派生类中调用基类的成员&#xff0c;并为开发人员提供了一种简单而有效的方式来实现继承以及重用代码。在本文中&#xff0c;我们将探讨base关键字的使用及其在C#中的代码实例。 首先&#xff0c;我们需要了解…

IDEA Debug步入(Step In)进不去源码解决方案

IDE Debug步入(Step In)进不去源码解决方案 小伙伴是不是和我一样&#xff0c;想step in源码学习&#xff0c;发现IDE debug时没有进入源码。 那这个问题怎么解决呢&#xff1f; Step1 点击设置 Step2 点击步进 Step3 找到如下两个 java* javax*Step4 取消勾选java* javax*…

ftp靶机_获取shell

ftp靶机_获取shell 文章目录 ftp靶机_获取shellftp概念实验环境信息探测 发现漏洞优化shell ftp概念 FTP 是File Transfer Protocol(文件传输协议)的英文简称&#xff0c;而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时&#xff0c;它也是一个应用程序(…