【springBoot 2.x】开发实战day1,目录结构、常用配置以及日志的选择和配置

目录结构

  1. 目录结构中,main/resources下的三个必备文件
    ① static 静态资源文件存放路径(图片、CSS、JS等)
    ② templates 存放模版文件
    ③ application.properties 配置文件

  2. @SpringBootApplication 启动程序时会自动加载该包及其子包下的类

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
	//省略...
}

可以看到@SpringBootApplication是一个复合注解,包括@ComponentScan,@SpringBootConfiguration,@EnableAutoConfiguration
@ComponentScan
扫描当前包及其子包下被 @Component@Controller@Service@Repository注解标记的类并纳入到spring容器中进行管理

@SpringBootConfiguration
继承自@Configuration,二者功能也一致,标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并且实例名就是方法名
@EnableAutoConfiguration
主要作用也是将Bean加入到spring容器中,先不说与@ComponentScan的区别。


常用相关配置(会持续更新)

配置说明
server.port应用服务器端口
server.servlet.context-path应用上下文 localhost:8888/mySpringBoot
spring.http.encoding.charset默认字符集编码
spring.thymeleaf.cache开启thymeleaf缓存
spring.mvc.dateFormatMVC中对输入日期参数格式化
spring.jackson.date-format日期格式:默认使用格林纳尼治时间
spring.jackson.time-zone设置JSON日期序列化输出格式,北京时间相对伦敦有8个小时时差所以使用GMT+8
spring.servlet.multipart.max-file-size单个文件最大尺寸
spring.servlet.multipart.max-request-size一个请求最大尺寸
spring.servlet.multipart.location临时文件目录
spring.mvc.static-path-pattern配置静态资源访问前缀
logging.file日志输出的地址
logging.level日志级别 debug --> info --> warn --> error 默认为info,如果设置了debug=true时,会将日志自动降级到debug级别
logging.level.rootROOT 表示全局设置
logging.level.org.springframework设置指定包的输出级别 eg 指定org.springframework包级别为error
debug=falsedebug 开启/关闭调试模式

解释和注意事项(当前后期我们会使用yml语言来进行配置)

#server
# 端口
server.port=8888
# 应用上下文  localhost:8888/mySpringBoot
# 一般情况下,小项目通常是在tomcat下部署多个webapp,通过上下文来区分
# 在集群或者大中型项目中,通常我们一个tomcat对应一个webapp,然后通过不同接口来进行区分
server.servlet.context-path=/mySpringBoot


# spring
# 默认字符集编码 UTF-8 只包含了20000+中文字符,生僻字显示不了。
spring.http.encoding.charset=utf-8
# 开始thymeleaf缓存(修改页面刷新后没有变化...)
# 注意的是:除了设置cache = false外。还要设置IDEA file --> setting --> build -->complier --> Build Project auto.. 勾选才可以实现热部署
spring.thymeleaf.cache=false
#
# MVC中对输入日期参数格式化
spring.mvc.dateFormat=yyyy-MM-dd 

# 日期格式(yyyy-MM-dd,默认使用格林纳尼治时间,我们需要将它指定,否则输出日期格式不对,所以指定json序列化格式)
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss SSS
# 设置JSON日期序列化输出格式,北京时间相对伦敦有8个小时时差所以使用GMT+8
spring.jackson.time-zone=GMT+8

# LOG 日志配置 (由于springBoot自带日志配置粒度不能满足生产环境,我们可以将logback日志配置文件直接放在resource下)
# 日志输出的地址,springboot默认没有进行文件输出,只在控制台中进行了打印
#logging.file=E:/logs/mySpringBoot.log
# 日志级别   debug --> info --> warn --> error 默认为info,如果设置了debug=true时,会将日志自动降级到debug级别
# ROOT 表示全局设置
#logging.level.root=info
# 设置指定包的输出级别 eg 指定org.springframework包级别为error
#logging.level.org.springframework = error

# debug 开启/关闭调试模式。
debug=false

实际开发中,日志不会以这种配置形式出现,我们会将Log日志配置,单拿出来放在一个单独的配置文件,放在/resource下即可, springboot会自动识别。


<!--定义日志保存的路径-->
<property name="LOG_HOME" value="E:/logs/prd/" />

<!--定义一个控制台输出器,名为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>INFO</level>
      <onMatch>ACCEPT</onMatch>
      <onMismatch>DENY</onMismatch>
   </filter>
</appender>

<!-- 定义日志全局最低输出级别是INFO,同时向控制台和日滚动文件输出 -->
<root level="INFO">
   <appender-ref ref="console" />
   <appender-ref ref="file" />
</root>

ok。 这个日志配置文件还是很不错的,我们也可以对这个日志配置稍作修改,添加判断来确定dev、pro两个环境根据主配置来自动识别,添加配置文件,这样我们就不用在生产与开发环境进行手动切换,我会将这个日志放在Day2中,Day2也会记录yaml语言的基本用法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值