SpringBoot初步学习记录
什么是springBoot?
Spring Boot 是所有基于 Spring 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适)。
快速创建spring项目
1.使用IDEA工具创建一个spring Initializr项目
创建好项目之后的pom.xml文件
下面这张是创建好的程序的入口类,也就是程序的启动大门
下面是application.properties文件的一些配置
yml是springboot提供的一种新的文件,编写起来很方便,但是有固定格式,前面一定要加一个空格,使用idea进行编写前缀相同的会自动归类
在有的时候呢我们可以使用自定义配置模块,比如以下我位置了一些属性,并且赋了值
那么这些个属性值应该怎么使用呢?
我们在这里使用@Value的注解进行使用,括号里填写的的我们自定义配置文件里的属性名(单个属性)
那么还有一种多个属性的方式就是要创建一个实体类并且我跟给它GET and SET方法,注意看这里有一个@ConfigurationProperties注解,这个注解的意思就是所有以app为前缀的属性自动赋值给对应的Bean属性,这个类怎么使用呢?
就是上一张图,使用动态注入的方式进行使用。使用@Resource注解当然也可以使用@Autowire
这里提一下:@Resource与@Autowire的区别
1.@Autowire是Spring开发的,而@Resource是jdk开发的
@Autowire是按照type来注解的,而@Resource是按照名称来的,如果名称找不到,那么就按照type,,如下有例子,我自己测试过, 在一个实现类AnnouncementImpl 加上@Service 在图1-1,那么名称就是myovieLister 类型就是 AnnouncementImpl ,我在 controller层使用的时候可以用 @Autowire或者@Resource都是没问题的
数据源切换:
在有些时候呢,我们要配置至少两种环境(开发环境以及正式环境)怎么完成切换呢?
我们可以创建三个yml文件,第一个为控制切换源,的文件
第二个是我们的测试环境(数据库为测试)
第三个是我们的生产环境(数据库为生产)
这里呢,我们制定的是prd也就是生产环境
还有一点就是我们的日志文件,考虑到一般测试环境有可能为windows系统,但是正式部署的时候大多数是在Linux系统,所以我们日志的路径有的时候可能导致异常,那么在logback.xml我们也进行了配置
.
这个是Spring里提供的日志配置的一些相关信息
再有的时候呢,日志的信息量比较大的时候,我们的日志文件甚至能够达到几个G的大小,所以查找起来异常信息点比较复杂,这时呢我们可以使用logback日志工具进行日志存储
<?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/"></property>
</springProfile>
<springProfile name="prd">
<property name="LOG_HOME" value="d:/logs/prd/"></property>
</springProfile>
<!--<property name="LOG_HOME" value="d:/logs" />-->
<!--定义一个控制台输出器,名为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>
<!-- 在日滚动文件中,强制只保存错误INFO级别以上信息 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 定义日志全局最低输出级别是INFO,同时向控制台和日滚动文件输出 -->
<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
</configuration>