SpringBoot项目之Service层
JavaEE三层架构
为了项目维护方便,为了项目开发便利。
三层架构 | 功能 |
---|---|
控制器层:controller | 方便和前端数据进行交互 |
业务层:service | 处理各种业务 |
持久化层:mapper | 和数据库进行数据交互 |
抽取出service层
按照这个层级目录输入
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业务层:所有和请求响应无关的代码,放在业务层