Spring Boot 项目创建
File->New->New Project->Spring Initializr
- 勾选
Web
- Spring Boot 版本选择稳定版,本文选择
2.1.1
- 最后一步,填写工程名字点击 finish
本地访问地址:http://localhost:8080/
新建一个 Project, 系统都会帮我们创建一个名为 artifactId+Application
的入口类,这个类中有一个 main 方法,这个 main 方法就是一个标准的 Java 应用程序的入口方法。
Spring Boot设置
maven 源设置
<repositories>
<repository>
<id>cxx-mirror</id>
<name>cxx-mirror</name>
<url>http://xxx.com/maven/</url>
</repository>
</repositories>
Intellij Idea Spring Boot 热部署
Banner 设置
- 在
src->main->resources
新建一个banner.txt
文件。 - 通过
http://patorjk.com/software/taag
网站生成需要的字符,将字符拷贝到步骤1所创建的 txt 文档中 https://www.bootschool.net/ascii
这里也可以生成banner.txt
内容- 图片 Banner 定制,图片的 banner 支持
gif
、png
、jpef
格式的图片。使用时,选用合适的图片,然后将图片名字改成 banner,和文字的banner.txt
文件一样,放到resource
目录下即可。如果在 resource 目录下既有 banner.txt 文件,又有 banner 的图片文件,SpringBoot 会先显示图片 banner ,然后再显示文本的 banner
SpringBoot配置文件
Spring Boot使用一个全局的配置文件 application.properties
或者 application.yml
,配置文件放在 src/main/resources
目录下。properties
是我们常见的一种配置文件,Spring Boot不仅支持properties
这种类型的配置文件,也支持yaml
语言的配置文件。
目前项目中,常用 application.yml
这样的配置文件。
中文不做特殊处理会乱码:
例如:修改Tomcat默认端口和默认访问路径
Tomcat默认端口是8080,我将之改为8081,默认访问路径是http://localhost:8080
,我将之改为http://localhost:8081/helloboot
可以在 application.yml
中添加:
server:
port: 8081
同样,在 application.properties
文件中添加如下代码:
server.servlet.context-path=/helloboot
server.port=8081
日志配置
默认情况下Spring Boot使用Logback作为日志框架,也就是我们前面几篇博客中用到的打印日志方式,当然如果有需要我们可以手动配置日志级别以及日志输出位置,相比于我们在Spring容器中写的日志输出代码,这里的配置简直就是小儿科了,只需要在application.properties中添加如下代码:
server:
servlet:
context-path: /helloboot
book:
author: 罗贯中
name: 三国演义
pinyin: sanguoyanyi
spring:
profiles:
active: prod
jackson:
time-zone: Asia/Hong_Kong
date-format: yyyy-MM-dd HH:mm:ss
serialization:
write_dates_as_timestamps: false
# 日志配置参考 https://www.jianshu.com/p/1fa12b92d5c4
logging:
level:
root: WARN
org:
springframework:
security: DEBUG
web: ERROR
hibernate: DEBUG
apache:
commons:
dbcp2: DEBUG
com:
example:
demo: DEBUG
# logging.file属性用来定义文件名,不仅仅可以配置文件名,也可以路径+文件名。
# 相对路径,相对项目根路径
# 绝对路径
file: D:/00-Temp/Java/logs/demo/michale-demo.log
pattern:
# 设置logging.patter.console属性我们能改变输出到console的日志样式
console: '%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n'
# 改变文件中的日志样式我们需要设置logging.pattern.file属性
file: '%d{yyyy-MMM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n'
# 我们可以通过命令行使能DEBUG ,TRACE级别的日志输出,效果是跟配置文件一样的
debug: true
trace: fasle
日志设置参考:
类型安全的配置
1.将 properties 属性和一个 Bean 关联在一起,这样使用起来会更加方便
resources->book.yml
:
book:
author: 曹雪芹
name: 红楼梦
price: 28
2.创建 Book Bean,并注入 properties 文件中的值
https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/html/configuration-metadata.html#configuration-metadata-annotation-processor
注意,BookBean 注解这么写:
//prefix是指前缀,location指定要注入文件的位置
@Component
@ConfigurationProperties(prefix = "book")
@PropertySource("classpath:book.yml")
Profile配置问题
在Spring Boot 中系统提供了更为简洁的方式。全局Profile配置我们使用application-{profile}.properties来定义,然后在application.properties中通过spring.profiles.active来指定使用哪个Profile
1.在src/main/resources
文件夹下定义不同环境下的Profile配置文件,文件名分别为:
application-prod.properties
application-dev.properties
这两个前者表示生产环境下的配置,后者表示开发环境下的配置,如下:
server.port=8081 # application-prod.properties:
server.port=8080 # application-dev.properties:
然后在application.properties
中进行简单配置,如下:
spring.profiles.active=dev
SpringBoot启动过程
artifactId+Application
的入口类,这个类中有一个main
方法,这个main
方法就是一个标准的Java
应用程序的入口方法。@SpringBootApplication
其实是一个组合注解。
唯一要注意的是如果我们使用了@SpringBootApplication注解的话,系统会去入口类的同级包以及下级包中去扫描实体类,因此我们建议入口类的位置在groupId+arctifactID组合的包名下。
如果我们只想要@SpringBootApplication
去扫描特定的类而不是全部类,那么就可以关闭自动配置,如下:
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
SpringBoot 目录结构
目录结构理解
- controller:前端控制器,负责页面访问控制,主要是对外提供的API接口,用户使用服务时的入口处,可以结合swagger生成对应的API文档
- service:数据服务层,逻辑层,主要是业务类代码,归档了前端控制器中相关服务的操作方法接口类,该文件夹下包含子impl文件夹,归档对应的实现接口
- domain:实体类,归档对应的实体(Entity),一个实体尝尝就对应着数据库中一张表
- dao:数据访问层,实体类对应的数据库操作接口类,提供增删改查 MongoDB 接口
- config:配置信息类
- utils:工具类
- constant:常量接口类
目录结构参考
- Spring Boot工程结构(推荐)
- 【系统学习SpringBoot】目录结构(建议)
- Spring Boot基础(三):Spring Boot项目推荐工程结构
- 使用SpringBoot的推荐项目目录结构
FAQ
学习资源
Spring Boot 工程基础使用: