springboot微服务--04 spring-boot-starter-logging和spirng-boot-starter-web

匿名 (未验证) 提交于 2019-12-03 00:26:01


springboot微框架从两个层面影响微服务开发者:

  • 基于spring框架的“约定优先于配置”理念
  • 提供了丰富的spring-boot-starter自动配置依赖模块

我们可以对干预springboot的配置方式进行分类:命令行参数、系统环境变量、位于文件系统中的配置、位于classpath中的配置文件、固化到代码中的配置项

java的日志有多种多样,从java.util默认提供的日志支持,到log4j、log4j2、commons logging等,应用日志系统的配置会比较特殊,从而spring-boot-starter-logging的配置也会比较特殊。

1、需要在maven中添加如下配置中之一即可:

#默认的logging <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-logging</artifactId> </dependency>  #log4j <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-logg4j</artifactId> </dependency>  #log4j2 <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>

SpringBoot应用将自动使用logback作为应用日志框架,SpringBoot启动的时候,由org.springframework.boot.logging.Logging-Application-Listener
根据情况初始化并使用。如果要对SpringBoot提供的日志设定做调整,则可以通过以下两种方式:

  • 01 logback约定,在classpath中使用定制的logbak.xml配置文件;
  • 02 通过application.properties中的logging.config配置中制定自己的配置文件;
#添加springMVC依赖 <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-web</artifactId> </dependency>

通过在pom.xml中添加以上依赖,就得到了一个直接可执行的web应用,在当前项目下运行mvn spring-boot:run 就可以直接启动一个使用了嵌入式TOMCAT服务请求的web应用,然后在添加一个controller之后就可以实现一个简单的web服务器。简单的背后有很多约定:

对比项 springboot 传统打包为war的java web
静态文件位置 src/main/resources/static src/main/webapp
模板文件位置 src/main/resources/templates src/main/webapp

spring-boot-starter-web默认会配置一些SpringMVC的必要组件,如下列出一些:
- 必要的ViewResolver,比如ContentNegotiatingViewResolver和BeanNameViewResolver
- 将必要的Converter、GenericConverter和Formatter等bean注册到IOC容器
- 添加一系列HttpMessageConverter以便支持对web请求和相应的类型转换
- 自动配置和注册MessageCodesResolver

注意:任何时候,如果SpringMVC组件不能满足需求,可以在IOC容器中注册同类型的bean来替换,或者直接提供一个基于WebMvcConfigurerAdapter类型的bean定义来定制,甚至可用标注了@EnableWebMvc和@Configuration的配置类来接管SpringMVC的相关配置。

spring-boot-starter-web默认使用嵌入式tomcat作为web容器对外提供HTTP服务,默认使用8080端口对外监听和提供服务,对此都可以实现定制,定制有以下两方面:

01 更换容器和更换端口
更换容器:在pom.xml中编辑

# 01 去除springboot中默认的嵌入式tomcat依赖 <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-web</artifactId>         <exclusions>             <exclusion>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-starter-tomcat</artifactId>         </exclusion>     </exclusions> </dependency>  # 02 添加jetty依赖 <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-jetty</artifactId> </dependency> 

更换端口:编辑application.properties文件,添加如下行:

# server.servlet.context-path=/helloboot # logging.file=D:/mylog/log.log # logging.level.org.springframework.web= DEBUG # book.author=wxh # book.name=20 # debug=true # spring.profiles.active=dev server.port=8888

02 对容器内部进行定制

  • 通过向 IOC 容器注册一个EmbeddedServletContainerCustomizer类型的组件来对嵌入式web容器进行定制:
  • 再深入的定制则需要针对特定的嵌入式web容器,使用实现对应的Factory并注册到 IOC 容器:
    • TomcatEnbeddedServletContainerFactory
    • JettyEnbeddedServletContainerFactory
    • UndertowEnbeddedServletContainerFactory

但是通常不要这么做,事实上spring-boot-starter-web提供的配置列表已经是最简单的方式了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!