pom.xml添加依赖
net.sourceforge.plantuml
plantuml
1.2020.10
对应controller写入plantuml脚本
package com.imddysc.testweb.controller;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import net.sourceforge.plantuml.FileFormat;
import net.sourceforge.plantuml.FileFormatOption;
import net.sourceforge.plantuml.SourceStringReader;
@RestController
public class PlantUMLServerController {
@ResponseBody
@RequestMapping(value = "/ping", method = RequestMethod.GET)
public String ping() throws IOException {
System.out.println("Ping");
return "OK!";
}
@ResponseBody
@RequestMapping(value = "/uml", method = RequestMethod.GET, produces = MediaType.IMAGE_PNG_VALUE)
public byte[] generateImageFromUmlScript(@RequestParam(value = "script", defaultValue = "@startuml;actor Kaka;@enduml") String script) throws IOException {
System.out.println("Generate UML for: "+script);
SourceStringReader reader = new SourceStringReader(script.replace(';','\n'));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
reader.generateImage(bos, new FileFormatOption(FileFormat.PNG, false));
return bos.toByteArray();
}
}
二、
服务器需要安装 curl graphviz 等。
yum install -y curl curl-devel graphviz graphviz-devel
@startuml
!include
!include
!include
!include
title Cloudinsight sprites example
skinparam monochrome true
rectangle "\nwebapp" as webapp
queue "" as kafka
rectangle "\ndaemon" as daemon
database "" as cassandra
webapp -> kafka
kafka -> daemon
daemon --> cassandra
@enduml