一、快速创建SpringBoot项目(IDEA)
1、file--New--Project--Spring Initialzier选中JDK版本,选中一直下一步就可以。
项目结构图如下:
二、SpringBoot常用配置设置
1、使用application.yml配置文件,为了区别正式/测试环境,我分别添加了另外两个yml文件,如下图:
通过spring:profiles:active: dev来设置具体使用哪个yml
2、一些常用的配置介绍
下图是我的application-dev.yml文件
debug: false #前缀相同的配置项,idea会自动进行归纳 值前面一定有个空格!! server: port: 7000 #/设置端口 servlet: context-path: /myspringboot #/上下文:比如同时开启多个项目共用同一个端口会有问题,这样可以避免,访问:http://127.0.0.1:7000/myspringboot/ spring: mvc: date-format: yyyy-MM-dd #/输入 Spring MVC中对输入参数的格式化 jackson: time-zone: GMT+8 #/输出 设置JSON 日期序列化输出格式,北京时间相对伦敦有8个小时时差所以使用G date-format: yyyy-MM-dd HH:mm:ss #/设置时间格式 datasource: #/数据库连接配置 driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://10.0.91.23:3306/dbperson?autoReconnect=true&useSSL=false&characterEncoding=utf-8 username: root password: 123 thymeleaf: cache: false #/开启thymeleaf缓存,Thymeleaf热部署。注意这里有大坑,还要设置file->setting->build->complier-> Build Project Auto... 勾选
3、日志配置(SLF4J + LogBack)
SJF4J是门面是标准 LogBack是框架
直接将logback-spring.xml 拷贝到 resources文件夹下面,会自动生成日志文件,logback-spring.xml 如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义日志保存的路径-->
<!--1.更改默认的logback.xml为logback-spring.xml
SpringBoot当看到logback-spring.xml文件存在的时候,才会启动日志的环境切换
logback.xml文件没法做到
2. 在需要切换的环境上增加springProfile标签
-->
<springProfile name="dev">
<property name="LOG_HOME" value="d:/logs/dev/" />
</springProfile>
<springProfile name="prd">
<property name="LOG_HOME" value="d:/logs/prd/" />
</springProfile>
<!--定义一个控制台输出器,名为console-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!--按pattern指定的格式输出日志,编码为UTF-8-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{30} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--定义一个日滚动(每天生成一份)的日志文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--按pattern指定的格式输出日志,编码为UTF-8-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{30} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- 定义保存的文件名 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--%d{yyyy-MM-dd}代表每天生成一个新的日志-->
<fileNamePattern>${LOG_HOME}/mysprintboot_%d{yyyy-MM-dd}.log</fileNamePattern>
<!--日志最多保存90天,也就是90份-->
<maxHistory>90</maxHistory>
</rollingPolicy>
<!-- 在日滚动文件中,强制只保存错误级别以上信息 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 定义日志全局最低输出级别是INFO,同时向控制台和日滚动文件输出 -->
<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
</configuration>
springProfile节点:分别设置每个配置文件对应的日志路径;
fileNamePattern节点:设置日志文件名;
root节点:设置日志记录级别 (Debug->info->warn->error 四个级别)
生成日志结果如下:
4、读取自定义配置文件属性值
我在resources文件夹下面新增我的配置文件config.properties
现在我需要在页面上读取并显示出来,做法如下:
在入口文件添加:
//在入口类启动时加载config.properties
@PropertySource("classpath:config.properties")
在controller 方法里面注入配置信息,有两种方式,如下:
@Controller public class MyController { @Value("${app.name}") //1、通过@Value注解,直接获取配置属性值 private String name; @GetMapping(value="/config1") public String getConfigName() { return name; } @Resource //相同功能可使用@Autowire //2、将我的配置属性封装成一个AppConfig的类中,注入 private AppConfig appConfig; @GetMapping(value="/config2") public String getConfigInfo() { return appConfig.getInfo(); } }
AppConfig.java 代码如下:
@Component //这是一个组件类,写上这个注解,SPringBoot会在启动时加载它
@ConfigurationProperties(prefix="app") //将所有app前缀的属性自动赋值给对应Bean 属性
@Component //这是一个组件类,写上这个注解,SPringBoot会在启动时加载它 @ConfigurationProperties(prefix="app") //将所有app前缀的属性自动赋值给对应Bean 属性 public class AppConfig { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getInfo() { return "姓名:"+name; } }
结果如下图所示: