Spring Boot,@ EnableWebMvc和常见用例

事实证明,Spring Boot与标准Spring MVC @EnableWebMvc不能很好地融合@EnableWebMvc 。 添加注释时发生的事情是禁用了Spring Boot自动配置。

不好的部分(浪费了我几个小时)是,在任何指南中,您都找不到明确指出的内容。 在本指南中,它说Spring Boot是自动添加它的,但是没有说如果您按照以前的经验并仅添加注释会发生什么。

实际上,由于这种自动禁用的自动配置而出现问题的人们正试图以各种方式解决该问题。 最常见的是-保留@EnableWebMvc,同时扩展Spring Boot的WebMvcAutoConfiguration 。 就像这里 , 这里 , 这里 有些 。 在我有了主意并以这种方式实施后,我找到了他们。 然后,在通过Spring Boot的代码并看到autoconfiguration类中的内部类具有一行Javadoc声明之后,意识到这样做是多余的

配置等同于{@code @EnableWebMvc}。

这就回答了我的问题,即Spring启动自动配置是否缺少某些EnableWebMvc“功能”。 他们扩展提供EnableWebMvc的类,而不是镜像功能(这很明显,我想),这是很好的。

要自定义bean时应该怎么做? 与往常一样,扩展WebMvcConfigurerAdapter (使用@Component注释新类)并进行自定义。

因此,特定问题的底线是:不要在Spring Boot中使用@EnableWebMvc,只需将spring-web作为maven / gradle依赖项包括在内,它将被自动配置。

这里的大图使我在主配置类中添加了一条注释,详细说明了为什么不应将@EnableWebMvc放在此处。 因此,自动配置魔术为我节省了很多工作,但我仍然添加了一行以解释为什么不存在某些内容。

那是由于常见的用例 -人们习惯了使用@EnableWebMvc 。 因此,最自然,最常见的做法是添加它,尤其是在您不知道Spring Boot自动配置如何详细工作的情况下。 而且他们会继续这样做,并浪费了几个小时才意识到自己应该删除它(或者在扩展一堆启动类以达到相同效果之前)。

在这种情况下,我的建议是:记录警告。 并要求明确禁用自动配置以摆脱警告。 我必须打开调试以查看自动配置的内容,然后探索一堆类以检查必要条件以弄清楚情况。

Spring Boot的主要用例之一是jar打包的Web应用程序。 我猜这就是大多数教程的目的,而这正是它最常用于的目的。 因此,对于这种常见用例应该有特殊的对待-附加的日志和日志信息可以帮助人们度过自动配置的迷宫。

我不想被看作是“指导” Spring团队,他们在拥有良好的文档和简单的行为方面做得非常出色。 但是在这种情况下,多个子项目“碰撞”,似乎可以改进。

翻译自: https://www.javacodegeeks.com/2017/04/spring-boot-enablewebmvc-common-use-cases.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php redirect with post,PHP – redirect并通过POST发送数据

你不能用PHP做这个。正如其他人所说,你可以使用cURL – 但是然后PHP代码成为客户端,而不是浏览器。如果您必须使用POST,那么唯一的方法就是使用PHP生成填充表单,并使用window.onload挂钩来调用javascript来提交表单。C。这里是解决…

php static方法的作用是什么,php static方法指的是什么

php static方法指的是用php中static关键字来定义静态方法和属性,static也可用于定义静态变量以及后期静态绑定,其使用语法如“public static $my_static foo;”。推荐:《PHP教程》Static(静态)关键字本页说明了用 static 关键字来定义静态方…

您好您拨打电话已停机_您好GroovyFX

您好您拨打电话已停机GroovyFX汇集了我最喜欢的两件事: Groovy和JavaFX 。 GroovyFX项目主页面将GroovyFX描述为“ [为JavaFX 2.0提供Groovy绑定”。 该页面上进一步描述了GroovyFX: GroovyFX是一种API,它使在Groovy中使用JavaFX变得更加简…

js中写java集合代码,JS实现JAVA的List功能

本次的文章给大家分享了关于JS实现JAVA的List功能的代码,有兴趣的朋友可以看一下function List(){var list new Array();/* 添加元素 */this.add function(obj){list[list.length] obj;}/* 根据下标获得元素 */this.get function(index){return list[index];}/*…

NOIP模拟测试6「那一天我们许下约定(背包dp)·那一天她离我而去」

那一天我们许下约定 内部题&#xff0c;题干不粘了。 $30分算法$ 首先看数据范围&#xff0c;可以写出来一个普通dp #include<bits/stdc.h> #define ll int #define A 2100 #define mod 998244353 using namespace std; ll f[1501][AAA],n,d,m; int main() {scanf("…

使用TestContainers提高测试性能

在我以前的测试文章中&#xff0c;我描述了如何使用TestContainers为数据库测试提供现实的测试环境。 此评论显示了缺点&#xff1a; …如上所述&#xff0c;似乎总是有一些缺点。 在这种情况下&#xff0c;启动Docker映像及其包含的所有内容的开销将增加您的总体构建时间。 提…

mysql 横向排列,mysql横向转纵向、纵向转横向排列的方法

初始化数据DROP TABLE IF EXISTS test_01;CREATE TABLE test_01 (id int(0) NOT NULL,user varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT 用户,km varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT …

VS2010常用快捷键自定义

VS的快捷键确实很多&#xff0c;不过对我来说实用的几个&#xff0c;要用的时候实在是按得别扭。所以重新设置了某些快捷键。 设置方法如下&#xff1a; 1.进入工具-选项 对话框 2.选择【环境】-【键盘】 3.在 【显示命令包含】 下面的对话框中输入你想重新定义快捷键的中文名&…

matlab光学毕业论文,光学信息处理实验的Matlab仿真.doc

摘要&#xff1a;光学实验系统往往比较精密和复杂&#xff0c;理论课堂教学中加入相关实验的演示往往比较费时&#xff0c;而且也不一定能得到正确的实验结果。随着计算机技术的发展&#xff0c;强大的运算性能和图形处理能力可以很好的解决这个问题&#xff0c;满足课堂教学中…

JavaScript方法——call和apply

1、相同点: a&#xff09; 产生的效果或作用完全相同&#xff1b; b&#xff09; 至少有一个参数&#xff1b; c&#xff09; 第一个参数必须有且是一个对象&#xff08;Object&#xff09;&#xff0c;因为就是这个家伙偷懒。 2、不同点: 传递参数的方式。 前提: 1、有两个对象…

阿帕奇跨域_阿帕奇骆驼备忘单

阿帕奇跨域轮询一个空目录&#xff08;并发送一个空消息&#xff0c;正文为空&#xff09;&#xff1a; from(file://temp?sendEmptyMessageWhenIdletrue)停止路线&#xff1a; .process(new Processor() {public void process(Exchange exchange) throws Exception {getConte…

天空之城 matlab,[转载]matlab演奏《天空之城》代码

%matlab演奏《天空之城》代码l_dao262; %将“l_dao”宏定义为低音“1”的频率262Hzl_re286; %将“l_re”宏定义为低音“2”的频率286Hzl_mi311; %将“l_mi”宏定义为低音“3”的频率311Hzl_fa349; %将“l_fa”宏定义为低音“4”的频率349Hzl_sao392; %将“l_sao”宏定义为低音“…

7.0上的新KIE持久性API

这篇文章介绍了即将到来的Drools和jBPM持久性api。 创建持久性api&#xff08;不绑定到JPA&#xff09;的动机是因为Drools和jBPM中的持久性直到7.0.0发行版才允许将替代性持久性机制与JPA完全集成。 尽管JPA是一个出色的api&#xff0c;但它与传统RDBMS模型紧密地结合在一起&a…

从客户的角度看网站涉及的第一要素

最近给某企业做了一个内部网站&#xff0c;界面风格、内容都是按照客户的要求进行了开发&#xff0c;测试阶段客户比较满意。投入试运行后&#xff0c;客户的领导级人物看了一眼首页中图片的大小&#xff08;600K&#xff09;&#xff0c;马上对我们的软件开发水平进行贬低。因…

linux ssl PHP,Linux环境安装Apache与PHP,支持SSL

1、Apache在如下页面下载apache的for Linux 的源码包http://www.apache.org/dist/httpd/;存至/home/xx目录&#xff0c;xx是自建文件夹&#xff0c;我建了一个wj的文件夹。命令列表&#xff1a;cd /home/wjtar -zxvf httpd-2.0.54.tar.gzmv httpd-2.0.54 apachecd apache./conf…

JBUILDER 2006怎么配置 STRUTS?[

建web工程时引入struts框架&#xff0c;选版本就可以了。jbuilder2006中有一个struts的可视化操作界面天极网有详细的图文资料,搜以下就可以找到关注首先新建项目然后选择Web选项,双击Web Module(WAR)创建一个Module&#xff0c;我感觉这个Web Module就相当于虚拟目录。然后可以…

dos命令查看oracle_home,Oracle - OraDb10g_home1配置方法+DOS命令

实验一(时间&#xff1a;2012.3.6)1实验项目名称&#xff1a;ORACLE 10G的安装、运行与配置2实验内容&#xff1a;a.检查ORACLE 10G安装的软硬件环境&#xff0c;安装服务器端软件和客户端软件&#xff1b;b.查看安装后的结果&#xff1b;c.启动与关闭监听服务、实例服务等&…

jhsdb:JDK 9的新工具

我喜欢在分析性能和其他基于Java的应用程序的其他问题的早期步骤中使用JDK随附的命令行工具&#xff0c;并在诸如jcmd &#xff0c; jps &#xff0c; jstat &#xff0c; jinfo &#xff0c; jhat和jmap &#xff0c; jrunscript &#xff0c; jstack之类的 工具上进行 博客撰…

purfer序列

prufer序列求法 对于一个无根无向图我们可以应用prufer序列操作使它缩成一个序列。 具体操作 一&#xff0c;每次选出来树中编号最小的点且度数为一&#xff08;即叶子节点&#xff09; 二&#xff0c;将与被删去的点相连的节点加入prufer序列中 重复一&#xff0c;二&#xff…

oracle11g高可用,oracle11g 搭建DG环境总结

本帖最后由 zhofly 于 2016-6-24 23:19 编辑测试环境为&#xff1a;两台服务器配置一样&#xff1a;Oracle Linux Server release 6.5 X86_64, DB 11.2.0.4.0前提环境&#xff1a;一台已经安装好数据库软件并创建数据库实例的服务器另一台也就是备库&#xff0c;只安装了数据…