SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程§
配置项目结构和java版本
选择依赖(这里只选择了web开发)
搭建成功
运行程序
访问网页
所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的(依赖版本管理)
starter时SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的(依赖管理)
在实际开发时,在使用任意坐标时,仅仅写GAV终端中G和A,V由SpringBoot提供,除非SpringBoot未提供对于版本的V,如果发生坐标错误,再自己手动指定version(注意出现版本冲突)
在下面这个包里面内嵌了Tomcat容器
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
在SpringBoot中内置了3款服务器:
REST(Representational State Transfer)表现形式转换,一种访问资源的格式
上述行为是约定方式,约定不是规范是可以打破的,所以称为REST风格而不是REST规范,描述模块的名称通常使用的是复数,也就是加s的格式描述,表示此类资源,而非当个资源,例如上面的users
@RequestMapping(value="/users/{chailong},method=RequestMethod.GET)
@ResponseBody
public String getById(@PathVariale Integer chailong)
{
//查询操作
}
基于上面的简单案例我们对Rest的使用可以进一步简化
@RestController
@RequestMapping("/books") //加在类上,就代表类下的所有方法都加了这个注解
public class BookController{
@PostMapping //这个等于@RequstMapping(method=RequestMethod.Post)
public String sava(@RequestBody Book book)
{
......
}
@DeleteMapping("/{id}") //这个等于@RequstMapping(value="/{id}" method=RequestMethod.Delete)
public String sava(@RequestBody Book book)
{
......
}
springBoot中导入对于的Starter后会提供相应的配置,在springBoot的核心配置文件application.properties修改配置(以
修改服务器端口
#修改服务器端口
server.port=80
修改Banner
原始的banner为
#修改banner
##关闭banner
spring.main.banner-mode=off
##修改banner图片
spring.banner.image.location=banner.jpg
修改日志
#日志配置
##修改日志级别为Debug
logging.level.root=debug
- application.properties(传统格式/默认格式)
- application.yml (主流格式)
- application.yaml
注意:上面三个配置文件都可以对项目生效,但三个配置文件如果同时存在时会存在加载优先级,其中优先级最高的是properties文件,其次是yml配置文件,最后是yaml配置文件
- 容易阅读
- 容易与脚本语言交互
- 以数据为核心,重数据轻格式
.yml(主流)
.yaml
- 大小写敏感
- 属性层级关系使用多行描述,每行结尾使用冒号结束
- 使用缩进表示层级关系(类似于Python),同层级左侧对齐,只运行使用空格(不要使用Tap键)
- 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
- #表示注释
country: china
province: beijing
city: beijinig
area: haidian
port: 8080
party: true
birthday: 1949-10-01
#对象属性
user:
name: itcast
age: 16
#写多个数据
likes:
- game
- music
- sleep
- 123
likes2: [game,music,sleep]
#对象数组
users:
- name: zhangs
- age: 18
-
name: lisi
age: 20
user3: [{name:zhangsan,age:18},{name:lisi,age:17}]
使用@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名…}
yaml数据
country: beijing
user:
name: chailong
age: 16
likes: [sleep,reading,eating]
控制器代码
//rest模式
@RestController
@RequestMapping("/books")
public class BookController {
//读取yaml中的单一属性数据
@Value("${country}")
private String country1;
@Value("${user.name}")
private String name;
@Value("${likes[1]}")
private String hobby;
@GetMapping
public String getById(){
System.out.println(country1);
System.out.println(name);
System.out.println(hobby);
return "chailong";
}
}
运行结果:
使用${属性名}直接引用文件中的其他变量
age1: 14
#使用${属性名}引用数据
info:
name: jack
age: ${age1}#引用
封装全部数据到Environment对象封装全部配置信息,使用@Autowired自动装配数据到Environment对象中
import org.springframework.core.env.Environment;
@RestController
@RequestMapping("/books")
public class BookController {
//使用自动装配将所有的数据装配到env中
@Autowired
private Environment env;
@GetMapping
public String getById(){
System.out.println(env.getProperty("info.age"));//读取数据
return "chailong";
}
}
- 创建一个类用于封装要封装的数据
- 由Spring帮助我们去加载数据到对象中(要告诉Spring加载这组信息)
- 从Spring中直接获取数据
datasource:
driver: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/spring_db
username: root
password: root666
@Component //定义为spring的bean
@ConfigurationProperties("datasource")
public class Mydatasource {
private String driver;
private String url;
private String username;
private String password;
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
@Autowired
private Mydatasource data;