哈喽,大家好,我是有勇气的牛排(全网同名)🐮
有问题的小伙伴欢迎在文末评论,点赞、收藏是对我最大的支持!!!。
前言
SpringBoot是基于Spring开发的开源项目,属于快速开发框架封装了常用的依赖,能够快速整合第三方框架,简化了xml配置,并且去全部采用注解的方式,内置Tomcat、Jetty、Undertow等,默认集成SpringMVC框架。
1 创建Maven项目
maven配置
<!-- SpringBoot依赖配置 -->
<!-- parent指定版本 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2 HelloWorld
package com.couragesteak.service;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@EnableAutoConfiguration
public class HelloWorldService {
// http://127.0.0.1:8080/hello
@RequestMapping("/hello")
public String index() {
return "你好,有勇气的牛排";
}
public static void main(String[] args) {
SpringApplication.run(HelloWorldService.class, args);
}
}
2.1 RequestController与 Controller
@RequestController
由 SpringMVC提供,相当于在每个方法添加@ResponseBody
注解。
如果在类上加 @RequestController
,该类中所有 SpringMVC接口映射均返回json格式。
2.2 主类定义 App.java
package com.couragesteak;
/*
* @Author : 有勇气的牛排
* @FileName: APP.java
* desc : 启动
* */
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
/*
* @ComponentScan 扫包范围:
* 当前启动类同级包,或者子包
* */
}
3 项目目录架构
com.couragesteak.controller
:视图层,web和接口(业务逻辑)
com.couragesteak.service
:业务逻辑层
com.couragesteak.dao
:数据访问层
3.1 静态资源
springboot默认静态资源目录位于 classpath(resource)下
,目录名需要符合如下规则
/static
/public
/resource
/META-INF/resources
4.2 配置文件
4.2.1 yml类型(推荐)与 properties
位置:/resource/application.yml
cs:
name: cs
star: 999
位置:/resource/application.properties
#cs.name=couragesteak
#cs.star=9
ReadConfigService.java
/*
* @Author : 有勇气的牛排
* @FileName: ReadConfigService.java
* desc : 读取配置
* */
package com.couragesteak.service;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ReadConfigService {
@Value("${cs.name}")
private String name;
@Value("${cs.star}")
private String star;
//
@RequestMapping("/getProperties")
public String getProperties() {
return name + ":" + star;
}
}
4.2.2 yaml中文件占位符
在SpringBoot的配置文件中,我们可以使用SpringBoot提供的的一些随机数,来制定找不到属性时的默认值
r a n d o m . v a l u e 、 {random.value}、 random.value、{random.int}、${random.long}
r a n d o m . i n t ( 10 ) 、 {random.int(10)}、 random.int(10)、{random.int[1024,65536]}
-${app.name:默认值}
4.2.3 多环境配置
application.yml
spring:
profiles:
active: dev
# active: test
# active: prd
application-dev.yml:开发环境
cs:
name: "有勇气的牛排"
star: 9
age: ${radom.int(10)}
spring:
http:
encoding:
force: true
### 模版引擎编码为UTF-8
charset: UTF-8
# 模板
freemarker:
allow-request-override: false
cache: false
check-template-location: true
charset: UTF-8
content-type: text/html; charset=utf-8
expose-request-attributes: false
expose-session-attributes: false
expose-spring-macro-helpers: false
## 模版文件结尾.ftl
suffix: .ftl
## 模版文件目录
template-loader-path: classpath:/templates
# 模板
thymeleaf:
#prefix:指定模板所在的目录
prefix: classpath:/templates/
#check-tempate-location: 检查模板路径是否存在
check-template-location: true
#cache: 是否缓存,开发模式下设置为false,避免改了模板还要重启服务器,线上设置为true,可以提高性能。
cache: false
suffix: .html
encoding: UTF-8
mode: HTML5
datasource:
url: jdbc:mysql://localhost:3306/spring_boot
username: root
password: root123456
driver-class-name: com.mysql.jdbc.Driver
application-test.yml:测试环境
...
application-prd.yml:生产环境
...
4.2.4 核心配置
spring:
profiles:
active: dev
# active: test
# active: prd
server:
# 端口号
port: 8081
servlet:
# 设置spring-boot项目访问路径
context-path: /
Springboot 默认的情况下整合tomcat容器,8080端口。
参考:
- 余胜军