26.7 Logback Extensions
Spring Boot包含许多Logback扩展,可以帮助进行高级配置。您可以在 logback-spring.xml 配置文件中使用这些扩展名。
由于标准 logback.xml 配置文件加载过早,因此无法在其中使用扩展。您需要使用 logback-spring.xml 或定
义 logging.config 属性。
扩展不能与Logback的 配置扫描一起使用。如果尝试这样做,则更改配置文件会导致类似于以下记录之一的错误:
26.7.1特定于配置文件的配置
<springProfile> 标记允许您根据活动的Spring配置文件选择性地包含或排除配置部分。<configuration> 元素中的任何位置都支持配置文
件节。使用 name 属性指定哪个配置文件接受配置。<springProfile> 标记可以包含简单的配置文件名称(例如 staging )或配置文件表达
式。概要表达式允许表达更复杂的概要逻辑,例如 production & (eu-central | eu-west) 。有关详细信息,请查阅 参考指南。以下清单显
示了三个示例配置文件:
<springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>
<springProfile name="dev | staging">
<!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>
<springProfile name="!production">
<!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>
26.7.2环境属性
<springProperty> 标记允许您公开Spring Environment 中的属性,以便在Logback中使用。如果要在Logback配置中访
问 application.properties 文件中的值,这样做非常有用。标签的工作方式与Logback的标准 <property> 标签类似。但是,不是指定直
接 value ,而是指定属性的 source (来自 Environment )。如果您需要将属性存储在 local 范围以外的其他位置,则可以使用 scope 属性。
如果需要回退值(如果未在 Environment 中设置该属性),则可以使用 defaultValue 属性。以下示例显示如何公开在Logback中使用的属
性:
<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
<remoteHost>${fluentHost}</remoteHost>
...
</appender>
必须在烤肉串案例中指定 source (例如 my.property-name )。但是,可以使用宽松规则将属性添加到 Environment 。
27. JSON
Spring Boot提供了与三个JSON映射库的集成:
GSON
Jackson
JSON-B
Jackson是首选的默认库。
27.1 Jackson
提供了Jackson的自动配置,Jackson是 spring-boot-starter-json 的一部分。当Jackson在类路径上时,会自动配置 ObjectMapper
bean。提供了几个配置属性来自 定义 ObjectMapper 的配置。
27.2 Gson
提供Gson的自动配置。当Gson在类路径上时,会自动配置 Gson bean。提供了几个 spring.gson.* 配置属性来自定义配置。为了获得更多控
制,可以使用一个或多个 GsonBuilderCustomizer beans。
27.3 JSON-B
提供了JSON-B的自动配置。当JSON-B API和实现在类路径上时,将自动配置 Jsonb bean。首选的JSON-B实现是Apache Johnzon,它提供
了依赖关系管理。
28.开发Web应用程序
Spring Boot非常适合Web应用程序开发。您可以使用嵌入式Tomcat,Jetty,Undertow或Netty创建自包含的HTTP服务器。大多数Web应用
程序使用 spring-boot-starter-web 模块快速启动和运行。您还可以使用 spring-boot-starter-webflux 模块选择构建响应式Web应用程
序。
如果您还没有开发Spring Boot Web应用程序,可以按照“Hello World!”进行操作。“ 入门”部分中的示例 。
28.1“Spring Web MVC框架”
在Spring Web框架(通常简称为“Spring MVC”)是一种富含“模型视图控制器” Web框架。Spring MVC允许您创建特殊的 @Controller
或 @RestController beans来处理传入的HTTP请求。控制器中的方法使用 @RequestMapping 注释映射到HTTP。
以下代码显示了为JSON数据提供服务的典型 @RestController :
@RestController
@RequestMapping(value="/users")
public class MyRestController {
@RequestMapping(value="/{user}", method=RequestMethod.GET)
public User getUser(@PathVariable Long user) {
// ...
}
@RequestMapping(value="/{user}/customers", method=RequestMethod.GET)
List<Customer> getUserCustomers(@PathVariable Long user) {
// ...
}
@RequestMapping(value="/{user}", method=RequestMethod.DELETE)
public User deleteUser(@PathVariable Long user) {
// ...
}
}
Spring MVC是核心Spring框架的一部分,详细信息可在参考文档中找到。还有一些指南涵盖Spring MVC,可在spring.io/guides上找到。