搭建一个非常简单的springboot项目,只有图片访问的功能。springboot项目其实很灵活,可以打成jar包运行,静态资源的路径也可以随意配置,也可以打成war包配合tomcat运行。
1. 新建maven项目,初始架构为:
2. 引进springboot,补充pom文件:
4.0.0 com.yue springboot-picture 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-parent 1.5.10.RELEASE org.springframework.boot spring-boot-starter-web
3. resources下新建文件application.properties
server.port=8080server.tomcat.basedir=./tomcatTemp
设置tomcat临时目录的原因是,我不想让太多垃圾堆积在c盘。tomcat启动时,会默认在C盘的一个位置生成临时目录,存储大量的临时文件。消耗系统物理内存,我希望把这些消耗掌握在更明显的可控范围内。
4. java包下新建com.yue,yue包下新建Application.class,作为springboot的启动类
@SpringBootApplication(scanBasePackages={"com.yue"})public class Application { public static void main(String[] args) { SpringApplication.run(Application.class); }}
scanBasePackages={"com.yue"} 这一句是配置启动类的所在包路径
此时,最基本的springboot框架已经搭建,运行Application类就可以启动了
控制台输出
2018-06-21 16:12:40.729 INFO 11780 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)2018-06-21 16:12:40.738 INFO 11780 --- [ main] com.yue.Application : Started Application in 3.78 seconds (JVM running for 4.346)
说明启动成功。
5. 增加图片访问功能,这个图片访问不是把图片放到静态资源路径下,然后用 http://ip:port/图片名 的方式访问,而是直接在前端请求过来时,将本地的图片转化成二进制流写入response,响应给前端页面。
新建相关类
@Servicepublic class ImageService { private final String IMAGE_PATH="F:/150094541085.jpg"; public byte[] getImage() throws IOException { FileInputStream fileInputStream = null; byte[] data =null; try { fileInputStream = new FileInputStream(IMAGE_PATH); //适合小容量文件 data = new byte[fileInputStream.available()]; fileInputStream.read(data); } catch (FileNotFoundException e) { e.printStackTrace(); } return data; }}
@Controllerpublic class ImageController { @Autowired private ImageService imageService; @GetMapping("/getImage") public void getImage(HttpServletResponse response) throws IOException { response.setHeader("Pragma", "no-cache"); response.setContentType("image/jpeg"); byte[] image = imageService.getImage(); response.getOutputStream().write(image); response.flushBuffer(); }}
此时,启动项目,输入 http://localhost:8081/getImage 便能访问本地图片了
6. 但是这样子还没办法打包运行,需要继续修改pom文件,添加以下代码
org.apache.maven.plugins maven-compiler-plugin 3.6.1 org.springframework.boot spring-boot-maven-plugin 1.5.10.RELEASE repackage
这样子,用maven命令 clean 、package 打包就行了。
运行jar包的命令
java -Dfile.encoding=UTF-8 -jar ./xxx.jar