13.SpringBoot项目之Service层

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.rhkb.cn/news/156863.html

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

相关文章

使用格式工厂转换影片的默认音轨

不少电影尤其是mkv格式的都是英国双语的音轨&#xff0c;如图&#xff1a; 一般默认的是第一个English。有需求让它默认是国语的。 一、打开格式工厂 &#xff0c;选择视频格式&#xff0c;选择添加文件&#xff0c;选择输出配置 二、找到音频流索引 对应本文实例电影的音频顺…

XXE漏洞复现实操

文章目录 一、漏洞原理二、验证payload三、没有回显时的验证四、漏洞特征五、读取文件六、Base64加密读取七、端口检测八、使用php检测端口九、dtd外部实体读取文件十、Xxe漏洞防御 一、漏洞原理 (1)XXE漏洞全称XML External Entity Injection&#xff0c;即xmI外部实体注入漏…

Lego Studio打开solidworks零件/装配体 (sw另存obj文件)

solidworks 2020 Lego studio / part designer 截至2023-10-13&#x1f382;最新版 文章目录 操作步骤1&#xff09; solidworks 开启 ScanTo3D 功能2&#xff09; 零件 / 装配体 保存至stl格式文件3&#xff09; 以SanTo3D网格文件方式打开stl4&#xff09; 将打开的stl另存为…

ES相关面试问题整理

索引模板了解么 索引模板&#xff0c;一种复用机制&#xff0c;就像一些项目的开发框架如 Laravel 一样&#xff0c;省去了大量的重复&#xff0c;体力劳动。当新建一个 Elasticsearch 索引时&#xff0c;自动匹配模板&#xff0c;完成索引的基础部分搭建。 模板定义&#xf…

基于JavaWeb+SpringBoot+Vue超市管理系统的设计和实现

基于JavaWebSpringBootVue超市管理系统的设计和实现 源码传送入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码传送入口 前言 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发…

Spring Boot自动加载

问&#xff1a;自动装配如何实现的&#xff1f; 答&#xff1a;简单来说就是自动去把第三方组件的Bean装载到IOC容器中&#xff0c;不需要开发人员再去写Bean相关的配置&#xff0c;在springboot应用里面只需要在启动类上去加上SpringBootApplication注解&#xff0c;就可以去实…

【大数据】HBase入门指南

原创不易&#xff0c;注重版权。转载请注明原作者和原文链接 文章目录 HBase特性Hadoop的限制基本概念NameSpaceTableRowKeyColumnTimeStampCell 存储结构HBase 数据访问形式架构体系HBase组件HBase读写流程读流程写流程 MemStore Flush参数说明 StoreFile Compaction参数说明触…

华为云云耀云服务器L实例评测 | 实例评测使用之硬件参数评测:华为云云耀云服务器下的 Linux 磁盘目录分析神器 ncdu

华为云云耀云服务器L实例评测 &#xff5c; 实例评测使用之硬件参数评测&#xff1a;华为云云耀云服务器下的 Linux 磁盘目录分析神器 ncdu 介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器…

大数据基础技能入门指南

本文介绍了数据工作中数据基础和复杂数据查询两个基础技能。 背景 当下&#xff0c;不管是业务升级迭代项目&#xff0c;还是体验优化项目&#xff0c;对于数据的需求都越来越大。数据需求主要集中在以下几个方面&#xff1a; 项目数据看板搭建&#xff1a;特别是一些AB实验的看…

MIT 6.S081 Operating System/Fall 2020 macOS搭建risc-v与xv6开发调试环境

文章目录 本机配置安装环境Homebrew执行安装脚本查看安装是否成功 RISC-V tools执行brew的安装脚本 QEMUXV6 测试有用的参考链接&#xff08;感谢前辈&#xff09;写在结尾 本机配置 电脑型号&#xff1a;Apple M2 Pro 2023 操作系统&#xff1a;macOS Ventura 13.4 所以我的电…

谷歌浏览器在新的浏览器窗口中打开所选的每条搜索结果在哪设置? 谷歌的搜索设置在哪设置??

1、进入谷歌搜索页面&#xff0c; 2、点击快捷设置&#xff0c;点击高级搜索 3、点击自定义搜索设置 4、点击其他设置 5、启用在新窗口中打开搜索结果

如何保护我们的网络安全

保护网络安全是至关重要的&#xff0c;尤其是在今天的数字化时代。以下是一些保护网络安全的基本步骤&#xff1a; 1、使用强密码&#xff1a;使用包含字母、数字和特殊字符的复杂密码。不要在多个网站上重复使用相同的密码。定期更改密码。 2、启用双因素认证 (2FA)&#xff…

数据分析基础:数据可视化+数据分析报告

数据分析是指通过对大量数据进行收集、整理、处理和分析&#xff0c;以发现其中的模式、趋势和关联&#xff0c;并从中提取有价值的信息和知识。 数据可视化和数据分析报告是数据分析过程中非常重要的两个环节&#xff0c;它们帮助将数据转化为易于理解和传达的形式&#xff0…

CRM系统:快速实现外勤出差人员远程访问企业提升工作效率!

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 快速实现外勤出差人员远程访问企业CRM系统前言1. 无需公网IP&#xff0c;高效低成本实现CRM系统远程访问1.1 下…

单片机外围电路设计常出现的问题

网友&#xff1a;单片机外围电路有哪些注意事项呀&#xff1f; 工程师&#xff1a;单片机外围电路设计需要注意的点有很多&#xff0c;今天我简单说几个吧 一、单片机上拉电阻的选择&#xff0c;复位电路中电阻R110k时RST是高电平&#xff0c;而当R150时RST为低电平&#xff0…

月老脱单交友盲盒小程序源码系统 带完整搭建教程

大家好啊&#xff0c;知道大家想要什么就给大家分享什么。今天要给大家分享的是月老脱单交友盲盒小程序源码系统&#xff0c;在当下可是十分火热&#xff0c;搭建起来也比较简单&#xff0c;一起来看看吧。 系统特色功能一览&#xff1a; 实现随机生成虚拟商品盒子&#xff0c…

并发、并行、同步、异步、阻塞、非阻塞

一、多核、多cpu &#xff08;一&#xff09;多核 Multicore 核是CPU最重要的部分。负责运算。核包括控制单元、运算单元、寄存器等单元。 多核就是指单个CPU中有多个核。 &#xff08;二&#xff09;多cpu Multiprocessor 多cpu就是一个系统拥有多个CPU。每个CPU可能有单个核…

AI:38-基于深度学习的抽烟行为检测

随着人工智能的迅猛发展,它在各个领域展现出了广泛的应用潜力。其中,基于深度学习的抽烟行为检测技术引起了人们的极大兴趣。这项技术利用计算机视觉和深度学习算法,能够自动检测和监测人们的抽烟行为,为烟草控制和公共卫生提供了新的手段。本文将深入探讨基于深度学习的抽…

SELECT COUNT(*)会不会导致全表扫描引起慢查询

SELECT COUNT(*)会不会导致全表扫描引起慢查询呢&#xff1f; SELECT COUNT(*) FROM SomeTable 网上有一种说法&#xff0c;针对无 where_clause 的 COUNT(*)&#xff0c;MySQL 是有优化的&#xff0c;优化器会选择成本最小的辅助索引查询计数&#xff0c;其实反而性能最高&…

【C++】:内存管理

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux的基础知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数…