- Spring Boot 2.0 Cookbook(Second Edition)
- Alex Antonov
- 292字
- 2021-06-24 19:24:42
How it works...
As you can see, Spring gives us multiple ways of achieving the same thing and it all depends on our preference or particular details of the implementation.
We covered three different ways of adding HttpMessageConverter to our application. So what is the difference, one might ask?
Declaring HttpMessageConverter as @Bean is the quickest and simplest way of adding a custom converter to the application. It is similar to how we added servlet filters in an earlier example. If Spring detects a bean of the HttpMessageConverter type, it will add it to the list automatically. If we did not have a WebConfiguration class that implements WebMvcConfigurer, it would have been the preferred approach.
When the application needs to define a more precise control over the settings, like interceptors, mappings, etc, it is best to use WebMvcConfigurer implementation to configure those, as it would be more consistent to override the configureMessageConverters method and add our converter to the list. As there can be multiple instances of WebMvcConfigurers, which could be either added by us or via the auto-configuration settings from various Spring Boot starters, there is no guarantee that our method can get called in any particular order.
If we need to do something even more drastic such as removing all the other converters from the list or clearing it of duplicate converters, this is where overriding extendMessageConverters comes into play. This method gets invoked after all the WebMvcConfigurers get called for configureMessageConverters and the list of converters is fully populated. Of course, it is entirely possible that some other instance of WebMvcConfigurer could override extendMessageConverters as well; but the chances of this are very low so you have a high degree of having the desired impact.
- 數(shù)據(jù)分析實戰(zhàn):基于EXCEL和SPSS系列工具的實踐
- Microsoft SQL Server企業(yè)級平臺管理實踐
- PySpark大數(shù)據(jù)分析與應(yīng)用
- 數(shù)據(jù)化網(wǎng)站運營深度剖析
- 達(dá)夢數(shù)據(jù)庫性能優(yōu)化
- 大數(shù)據(jù)架構(gòu)和算法實現(xiàn)之路:電商系統(tǒng)的技術(shù)實戰(zhàn)
- 一個64位操作系統(tǒng)的設(shè)計與實現(xiàn)
- 企業(yè)級數(shù)據(jù)與AI項目成功之道
- Unreal Engine Virtual Reality Quick Start Guide
- Deep Learning with R for Beginners
- 從Lucene到Elasticsearch:全文檢索實戰(zhàn)
- Oracle 內(nèi)核技術(shù)揭密
- Delphi High Performance
- 推薦系統(tǒng)全鏈路設(shè)計:原理解讀與業(yè)務(wù)實踐
- MySQL核心技術(shù)手冊