Spring Boot 快速入门
通过Idea构建项目
![屏幕快照 2018-10-28 下午9.18.03](Spring-Boot-快速入门/屏幕快照 2018-10-28 下午9.18.03.png)
next
![屏幕快照 2018-10-28 下午9.20.10](Spring-Boot-快速入门/屏幕快照 2018-10-28 下午9.20.10.png)
起个名字next
![屏幕快照 2018-10-28 下午9.20.58](Spring-Boot-快速入门/屏幕快照 2018-10-28 下午9.20.58.png)
选择版本和web 。next
finish
项目目录结构
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── girl
│ │ │ ├── GirlApplication.java
│ │ │ └── MyController.java
│ │ └── resources
│ │ ├── application.properties
│ │ ├── static
│ │ └── templates
Spring Boot的启动方式
1.在项目中直接run
2.命令行通过maven运行
需要先安装maven并配置好
使用命令 mvn spring-boot:run
例如:
Anbingxu-MBP:girl bxan$ mvn spring-boot:run
3.先打包再运行
打包方式就不具体介绍了,请使用搜索引擎。
然后通过 java -jar 【打完包后的名称】
4.通过maven打包并运行
(1)进入项目目录通过maven使用使用命令 mvn install打包
Anbingxu-MBP:girl bxan$ mvn install
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------------< com.example:girl >--------------------------
[INFO] Building girl 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
注意:如果下载相关依赖速度缓慢请使用国内的镜像
(2)然后进入target目录 java -jar girl-0.0.1-SNAPSHOT.jar
Anbingxu-MBP:girl bxan$ cd target/
Anbingxu-MBP:target bxan$ java -jar girl-0.0.1-SNAPSHOT.jar
获取配置文件内容
普通properties
比如application.properties
server.port=10086
server.servlet.context-path=/girl
yaml
在resources中新建application.yaml
server:
port: 10086
servlet:
context-path: /girl
配置文件
比如在yaml配置文件中加入属性cupSize: 36D
我们可以使用**@value(“${cupSize}”) private String cupSize;** Spring Boot会为你自动注入该属性的值。
在配置文件中引用其他属性的方法
cupSize: 36D
age: 18
content: "cupSize:${cupSize} and age=${age}"
将配置文件的内容映射为Java Bean
girl:
cupSize: B
age: 18
package com.example.girl;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "girl")
public class GirlProperties {
private String cupSize;
private Integer age;
public String getCupSize() {
return cupSize;
}
public void setCupSize(String cupSize) {
this.cupSize = cupSize;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "GirlProperties{" +
"cupSize='" + cupSize + '\'' +
", age=" + age +
'}';
}
}
通过@Autowired注解自动装配完成使用。
@Autowired
private GirlProperties girlProperties;
生产环境和开发环境配置
1.新建两个配置文件
application-dev.yaml
application-prod.yaml
2.在主配置文件application.yaml写入
spring:
profiles:
active: prod
active: [配置文件的名称 (值使用“-” 后面的内容)]
3.修改active即可切换环境
4.运行即可
(注意:若使用maven打包并运行 可以通过jar -jar xxxxx –spring.profiles.active=prod 来指定环境)
有关配置文件的几个注解
@value
可以实现配置文件内容的注入
@Compontent
可以通过使用该注解 让spring帮我门把Java Bean扫入IOC容器中
@ConfigurationProperties
通过该注解可以将配置文件映射为java bean
控制器Controller相关注解
@Contorller
处理http请求
@RestContorller
@RestController = @Controller + @ResponseBody
@RequestMapping
完成url映射
@GetMapping
一下两行代码效果一样
@RequestMapping(value = "/hello",method = RequestMethod.GET)
@GetMapping(value = "/hello")
@PostMapping
同上
路由参数相关的注解
@PathVariable
通过该注解可以获取url中的一个仅一个参数 通常作用与REST风格相关
@PostMapping(value = "/hello/{id}")
public String say(@PathVariable("id")Integer id)
@RequestParam
通常url中带有多个参数时使用
localhost:10088/girl/hello?id=1&name=an
@PostMapping(value = "/hello")
public String say(@RequestParam("id") Integer id,@RequestParam("name") String name)
请求参数是否required以及default
@RequestParam(value = "id",required = false,defaultValue = "0")
@PathVariable(value = "id",required = false) //Path!Variable没有default
spring data jpa
spring:
profiles:
active: dev
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: mysql123
url: jdbc:mysql://localhost:3306/dbgirl?autoReconnect=true&useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=false
jpa:
hibernate:
ddl-auto: create
show-sql: true
ddl-auto: create可选属性 update、create 、create-drop、none、valid
create每次运行若数据库中的表已存在会删除并重建。
update则为更新 会保留之前存在的数据
create-drop 程序终止 则删除
none: 什么都不做
valid
Spring Boot Jpa
增删查该实战
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
MyGirl
package com.example.girl;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
@JsonIgnoreProperties({"hibernateLazyInitializer","handler"})
public class MyGirl {
@Id
@GeneratedValue
private Integer id;
private String name;
private Integer age;
private String cupSize;
public MyGirl() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getCupSize() {
return cupSize;
}
public void setCupSize(String cupSize) {
this.cupSize = cupSize;
}
@Override
public String toString() {
return "MyGirl{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", cupSize='" + cupSize + '\'' +
'}';
}
}
GirlRepository
package com.example.girl;
import org.springframework.data.jpa.repository.JpaRepository;
public interface GirlRepository extends JpaRepository<MyGirl,Integer> {
}
GirlController
package com.example.girl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
public class GirlController {
@Autowired
GirlRepository girlRepository;
//查询所有女生
@GetMapping("/girls")
public List<MyGirl> girlList() {
return girlRepository.findAll();
}
//添加一个女生
@PostMapping("/girls")
public MyGirl addGirl(@RequestParam("name") String name,
@RequestParam("age") Integer age,
@RequestParam String cupSize) {
MyGirl myGirl = new MyGirl();
myGirl.setAge(age);
myGirl.setCupSize(cupSize);
myGirl.setName(name);
MyGirl save = girlRepository.save(myGirl);
return save;
}
//查询一个女生
@GetMapping("/girls/{id}")
public MyGirl getOneGirl(@PathVariable("id") Integer id) {
return girlRepository.getOne(id);
}
// 删除一个女生
@DeleteMapping("/girls/{id}")
public void deleteOneGirl(@PathVariable("id")Integer id){
girlRepository.deleteById(id);
}
//更新一个女生
@PutMapping("/girls/{id}")
public MyGirl update(@PathVariable("id")Integer id,@RequestParam("name") String name,
@RequestParam("age") Integer age,
@RequestParam String cupSize) {
MyGirl myGirl = new MyGirl();
myGirl.setName(name);
myGirl.setCupSize(cupSize);
myGirl.setAge(age);
myGirl.setId(id);
MyGirl save = girlRepository.save(myGirl);
return save;
}
}