一.关于RESTfull API风格
import java.util.Date;
/**
* 实体类
*/
public class User {
private int id;
private String name;
private Date date;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
}
import java.util.Date;
import java.util.HashMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.roncoo.education.bean.User;
/**
* 控制层
*
*/
@RestController
@RequestMapping(value = "/index")
public class IndexController {
@RequestMapping
public String index() {
return "hello world";
}
// @RequestParam 简单类型的绑定,可以出来get和post
@RequestMapping(value = "/get")
public HashMap<String, Object> get(@RequestParam String name) {
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("title", "hello world");
map.put("name", name);
return map;
}
// @PathVariable 获得请求url中的动态参数
@RequestMapping(value = "/get/{id}/{name}")
public User getUser(@PathVariable int id, @PathVariable String name) {
User user = new User();
user.setId(id);
user.setName(name);
user.setDate(new Date());
return user;
}
}
运行项目
直接运行main方法或者使用maven命令: spring-boot:run
测试: http://localhost:8080/index
带参数:http://localhost:8080/index/get?name=zhangsan
带参数有中文:http://localhost:8080/index/get?name=张三
url测试:http://localhost:8080/index/get/1/zhangsan
url测试:http://localhost:8080/index/get/1/张三
二.配置文件详解:Properties和YAML
application.properties:
#32位随机字符串
roncoo.secret=${random.value}
#int类型的随机数字
roncoo.number=${random.int}
roncoo.name=www.roncoo.com
#属性占位符属性
roncoo.desc=the domain is ${roncoo.name}
#端口
server.port=8080
application.yaml:
#自定义配置
roncoo:
secret: ${random.value}
number: ${random.int}
name: www.roncoo.com
desc: the domain is ${roncoo.name}
#端口
server:
port: 9090
三、配置文件-多环境配置
多环境配置的好处:
1.不同环境配置可以配置不同的参数
2.便于部署,提高效率,减少出错
Properties多环境配置:
1. 配置激活选项
spring.profiles.active=dev
2.添加其他配置文件
YAML多环境配置:
1.配置激活选项
spring:
profiles:
active: dev
2.在配置文件添加三个英文状态下的短横线即可区分
---
spring:
profiles: dev
两种配置方式的比较:
1. Properties配置多环境,需要添加多个配置文件,YAML只需要一个配件文件
2.书写格式的差异,yaml相对比较简洁,优雅
3. YAML的缺点:不能通过@PropertySource注解加载。如果需要使用@PropertySource注解的方式加载值,那就要使用properties文件。
如何使用:
java -jar myapp.jar --spring.profiles.active=dev
四.日志配置
支持日志框架:Java Util Logging, Log4J2 and Logback,默认是使用logback
配置方式:默认配置文件配置和引用外部配置文件配置
1、 默认配置文件配置(不建议使用:不够灵活,对log4j2等不够友好)
# 日志文件名,比如:roncoo.log,或者是 /var/log/roncoo.log
logging.file=roncoo.log
# 日志级别配置,比如: logging.level.org.springframework=DEBUG
logging.level.*=info
logging.level.org.springframework=DEBUG
2、 引用外部配置文件
2.1 logback配置方式:
spring boot默认会加载classpath:logback-spring.xml或者classpath:logback-spring.groovy
使用自定义配置文件,配置方式为:
logging.config=classpath:logback-roncoo.xml
注意:不要使用logback这个来命名,否则spring boot将不能完全实例化
1.使用基于spring boot的配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="org.springframework.web" level="DEBUG"/>
</configuration>
2.自定义配置
2.2 log4j配置
2.2.1去除logback的依赖包,添加log4j2的依赖包
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
<!-- 使用log4j2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
2.2.2 在classpath添加log4j2.xml或者log4j2-spring.xml(spring boot 默认加载)
2.3 自定义配置文件
见附件
3.比较
性能比较:Log4J2 和 Logback 都优于 log4j(不推荐使用)
配置方式:Logback最简洁,spring boot默认,推荐使用。