微服务架构之Spring Boot(三十二)

2022-04-07 20:00:20 浏览数 (1)

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上找到。

0 人点赞