13.SpringBoot项目之Service层

news2025/2/26 23:26:07

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.fori
       for (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工具导入到当前控制器中
   @Autowired
   RestTemplate restTemplate;
   @Autowired
   StockService 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.coloradmin.cn/o/1087521.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为汪涛:5.5G时代UBB目标网,跃升数字生产力

[阿联酋&#xff0c;迪拜&#xff0c;2023年10月12日] 在2023全球超宽带高峰论坛上&#xff0c;华为常务董事、ICT基础设施业务管理委员会主任汪涛发表了“5.5G时代UBB目标网&#xff0c;跃升数字生产力”的主题发言&#xff0c;分享了超宽带产业的最新思考与实践&#xff0c;探…

Ubuntu 23.10 Beta 镜像开放下载

导读Canonical放出了 Ubuntu 23.10 Beta 镜像&#xff0c;此外 Edubuntu、Kubuntu、Lubuntu、Ubuntu Budgie、Ubuntu Cinnamon、Ubuntu Kylin、Ubuntu MATE、Ubuntu Studio、Ubuntu Unity 和 Xubuntu 等风味版本也同步放出镜像。 近日消息&#xff0c;Canonical 放出了 Ubuntu …

【1++的Linux】之文件(二)

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的Linux】 文章目录 一&#xff0c;文件描述符二&#xff0c;重定向三&#xff0c;理解Linux下一切皆文件 一&#xff0c;文件描述符 我们先来看一段代码&#xff1a; #include<unistd.h&g…

什么是CDN内容分发网络?如何做到加速的?

这里写目录标题 CDN如何做到加速的&#xff1f; CDN content delivery network内容分发网络是建立并覆盖在承载网上&#xff0c;由遍布全球的边缘节点服务器群组成的分布式网络。 CDN将源站资源缓存在遍布全球的边缘加速节点服务器上&#xff0c;当客户需要访问和获取资源的时…

如何使用Net2FTP搭建免费web文件管理器打造个人网盘

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人…

助力乡村教育 泰格智能AI英语开展捐赠实施线上培训

2023年10月11日晚8点至9点&#xff0c;泰格智能AI英语创始人李勤骞老师举行了一场为期一小时的线上培训&#xff0c;旨在详细解答泰格智能AI英语联合中国善网捐赠千词切APP训练账号的意义&#xff0c;探讨乡村教育、学习英语的现状和方法&#xff0c;以及项目的实施和落地要求。…

阿里健康携手15家药企发起“慢病减压计划”,为职场人的健康“减负”

近年来&#xff0c;慢性疾病患者的发病年龄正在逐年递减。一组来自阿里健康研究院内部分析数据印证了这一趋势。数据显示&#xff0c;当代80后职场人群中&#xff0c;三成用户购买过慢病药品。 30-39岁已经成为肝胆、心脑等相关疾病药品的购药主力人群 。35-39岁是高血压疾病药…

204、RabbitMQ 之 使用 topic 类型的 Exchange 实现通配符路由

目录 ★ 使用topic实现通配符路由代码演示topic通配符类型的Exchange代码演示:ConstantUtilConnectionUtilProducerConsumer01执行结果生产者消费者01消费者02 完整代码&#xff1a;ConstantUtilConnectionUtilProducerConsumer01Consumer02pom.xml ★ 使用topic实现通配符路由…

Linux系统移植框架简介

一、系统移植简介 系统移植就是给开发板安装一个linux系统。需要从官方下载u-boot源码&#xff0c;linux内核源码&#xff0c;根文件系统的源码&#xff0c;对源码进行配置和编译&#xff0c;生成对应的源码的镜像文件&#xff0c;将镜像文件部署到开发板中&#xff0c;使开发…

上海亚商投顾:沪指高开高走 锂电等新能源赛道大反攻

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日高开后强势震荡&#xff0c;创业板指盘中一度翻绿&#xff0c;随后探底回升再度走高。碳酸锂期货合约…

制药行业中的设备管理系统和CSV最佳实践

在制药行业&#xff0c;合规性和质量是关键要素&#xff0c;而设备管理和计算机化系统验证&#xff08;CSV&#xff09;是确保这些要素的关键。之前我们介绍过设备健康管理系统如何帮助制药企业实现CSV合规性>>PreMaint设备健康管理系统&#xff1a;实现制药企业的CSV合规…

Activiti 8.0.0 发布,业务流程管理与工作流系统

导读Activiti 8.0.0 现已发布。Activiti 是一个业务流程管理 (BPM) 和工作流系统&#xff0c;适用于开发人员和系统管理员。其核心是超快速、稳定的 BPMN2 流程引擎。Activiti 可以在任何 Java 应用程序、服务器、集群或云中运行&#xff0c;与 Spring 完美集成。 具体更新内容…

声音克隆,定制自己的声音,使用最新版Bert-VITS2的云端训练+推理记录

说明 本次训练服务器使用Google Colab T4 GPUBert-VITS2库为&#xff1a;https://github.com/fishaudio/Bert-VITS2&#xff0c;其更新较为频繁&#xff0c;使用其2023.10.12的commit版本&#xff1a;主要参考&#xff1a;B站诸多大佬视频&#xff0c;CSDN:https://blog.csdn.…

Visual Studio主题颜色及字体

一、打开VS上方的工具 二、选择“选项” 三、在“常规”中选择“颜色主题” 一共四个颜色供大家参考&#xff1a; ①深色 ②浅色 ③蓝色 ④蓝&#xff08;额外对比度&#xff09; 四、字体设置 左边环境中下划

【实训项目】“优品果园”-线上水果商城小程序

1.项目背景 随着现代人对消费水平的追求以及对食物安全的需要&#xff0c;无污染、产地直销的有机水果受到越来越多市民的喜欢。交易过程的简洁化是现代消费者的追求&#xff0c;产地直销也是近期流行的一种新型的交易模式。产地直销的交易模式使得交易过程更加简便快捷&#…

产业集群的转型升级需要各个方面的协同转型——以河北吉力宝为例

随着全球经济的不断演进&#xff0c;产业集群的转型升级已经成为确保企业持续竞争力的必经之路。产业集群是一种由相关产业企业在相对密集的地理区域内紧密互联的经济组织形式&#xff0c;它们通常共享类似的供应链、市场和技术基础。其中&#xff0c;河北吉力宝是中国鞋业产业…

【教学类-32-04】20231013十二生肖4.0(标记+1位数字+排序+左右分类)(大班:《我是中国人》偏科学-数)

作品展示 一位数字、汉字对齐排列 背景需求&#xff1a; 1、优化教案&#xff0c;参与比赛 10月份有一个幼儿园原创教案比赛&#xff0c;我把这个活动《十二生肖排排队》上报了。 2、把两位数序号改成一位数。 “老师&#xff0c;我觉得猴子最大&#xff0c;他是90”。 因…

关于Vue+webpack使用unocss编写CSS,打包后CSS没加前缀

关于Vuewebpack使用unocss编写CSS&#xff0c;打包后CSS没加前缀&#xff0c;封装了一个插件去解决了这个问题 unocss-postcss-webpack-plugin unocss在vite中使用配置&#xff0c;关于unocss在vite中使用&#xff0c;自行查阅官网 https://unocss.dev/integrations/vite ,vi…

Jetson ORIN NX安装Ubuntu20.04,配置CUDA,cuDNN 等注意事项

大体准备工作与流程与博客英伟达官方源Jetson Xavier NX安装Ubuntu20.04&#xff0c;配置CUDA&#xff0c;cuDNN&#xff0c;Pytorch等环境教程&#xff08;基于NVIDIA官方教程&#xff0c;理论适用其它Jetson设备&#xff09;一致&#xff0c;主要在步骤二、三处有一些区别&am…