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.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业务层:所有和请求响应无关的代码,放在业务层