package com.test.demo.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.ResponseBody;/*** Created by Ryan on 2017/11/14/0014.*/@Controllerpublic class HelloController {@ResponseBody@GetMapping("/hello")public String hello(){return "{\"hello\":\"world\"}";}}
然后,再次运行main方法,启动完毕后,访问 :8080/hello, 第一个API开发完毕 。
JSON在Java里没有这个数据结构,其实就是一个,遵从JSON规则的,我们的方法在返回这段的时候,加上里的,浏览器就会当做JSON读取 。在去读Ajax的结果就变成了一个JSON对象了 。其他的,比如,读取出来的还是一个字符串,需要手动反序列化成我们想要的类 。
说到序列化,我们不可能每个返回结构都这样拼接字符串吧 。所以,标注的请求还会使用一个的适配器,这些都是内置的 。暂时也不需要研究实现原理 。是什么鬼?
是Java中使用最广泛的一个json解析lib,他可以将一个Java 类转变成一个json字符串,也同样可以把一个json字符串反序列化成一个java对象 。是如何做到的?这就需要去研究源码了 。
启动和调试
最简单的是启动就是运行main方法,还可以命令行启动
gradlew bootRun
debug,最简单的就是以debug启动main方法 。当然也可以远程 。
gradlew bootRun --debug-jvm
文章插图
然后,在IDEA中,点击Edit
文章插图
选择
文章插图
文章插图
然后,点击debug
文章插图
如果想支持热加载,则需要添加
compile("org.springframework.boot:spring-boot-devtools")
在IDEA里修改Java class后需要,重新build当前class才能生效 。快捷键 ctrl+shif+F9
配置文件
boot默认配置了很多东西,但有时候我们想要修改默认值,比如不想用8080作为端口,因为端口被占用了 。
在下,新建., 然后在里面输入
server.port=8081
然后,重启项目,发现端口已经生效 。
再配置一些的自定义,比如日志 。项目肯定要记录日志的,.out.远远达不到日志的要求 。默认采用作为日志处理工具 。
spring.output.ansi.enabled=ALWAYSlogging.file=logs/demo.loglogging.level.root=INFO
接着,开发和生产环境的配置必然不同的,比如数据库的地址不同,那么可以分配置文件来区分环境 。
在下新建-dev., -prod.. 默认通过后缀不同来识别不同的环境,不加后缀的是base配置 。那么如何生效呢?
只要在base的配置文件中
spring.profiles.active=dev
比如,我们在dev环境中设置为debug
logging.level.root=debug
这样,会优先读取base文件,然后读取dev,当dev有相同的配置项时,dev会覆盖base 。
这样,本地开发和生产环境隔离,部署也方便 。事实上,接收参数的优先级为下的配置文件 属性 --> 高级系统设置 --> 高级 --> 环境变量 --> 在系统环境变量中找到path --> 新建 --> 填入 --> 确认 。
然后,重新打开cmd 。输入 -- --
C:\Users\Ryanλ mysqld --initialize --consolemysqld: Could not create or access the registry key needed for the MySQL applicationto log to the Windows EventLog. Run the application with sufficientprivileges once to create the key, add the key manually, or turn offlogging for that application.2017-11-26T05:22:48.434089Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).2017-11-26T05:22:48.437096Z 0 [ERROR] Cannot open Windows EventLog; check privileges, or start server with --log_syslog=02017-11-26T05:22:49.148986Z 0 [Warning] InnoDB: New log files created, LSN=457902017-11-26T05:22:49.276866Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.2017-11-26T05:22:49.370828Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: d7e6ac05-d269-11e7-a91e-9883891ed8e3.2017-11-26T05:22:49.383970Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.2017-11-26T05:22:49.398975Z 1 [Note] A temporary password is generated for root@localhost: /r.Vtktfl9FN
- java版孢子_我的世界Java版21w05a
- java版孢子_Minecraft Java 版 21w05a 发布
- CourseSchedule III 课程规划 I IIJava 实现
- Java实现之马踏棋盘算法
- 这1000道JAVA面试题,刷完50%妥妥的也能上岸
- Java实现 【数据结构课程设计报告】路径规划系统
- Java swing中树状组件JTree的使用,左边点击不同菜单
- Review web ③:Write web pages in HTML
- java毕业设计——基于JSP+JavaBean+sqlserver的在线购物系
- 您是哪种Java开发人员? 参加我们的Java测验找出答案!