springboot配置@EnableWebMvc
时间: 2023-12-19 20:06:57 浏览: 92
在Spring Boot中,使用@EnableWebMvc注解来开启WebMvc配置,这个注解一般不建议使用,因为它会覆盖Spring Boot对WebMvc自动配置的一些设置,可能会导致一些问题。
@EnableWebMvc注解会导入WebMvcConfigurationSupport类,该类提供了WebMvc配置的基本实现。如果你需要自定义WebMvc配置,可以继承该类并重写一些方法来进行自定义配置。但是,这样做可能会覆盖Spring Boot自动配置的一些设置,导致一些问题。
如果你需要自定义WebMvc配置,建议使用WebMvcConfigurer接口,该接口提供了一些回调方法,可以在其中进行自定义配置。同时,这种方式不会影响Spring Boot的自动配置。例如:
```java
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}
}
```
这里我们实现了WebMvcConfigurer接口,并重写了addViewControllers方法来添加一个视图控制器。这样做不会影响Spring Boot的自动配置,但可以实现我们的自定义配置。
相关问题
使用了@SpringBootApplication、@EnableWebMvc接口访问404
如果你在使用@SpringBootApplication和@EnableWebMvc注解来启动Spring Boot应用程序时仍然遇到404错误,可能是因为这两个注解之间存在冲突。
@SpringBootApplication注解已经包含了@EnableWebMvc注解,并且已经为你的应用程序自动配置了Spring MVC。因此,在使用@SpringBootApplication注解时,你不需要再使用@EnableWebMvc注解来启用Spring MVC。
如果你想自定义Spring MVC配置,你可以创建一个继承自WebMvcConfigurer的类,并覆盖其中的方法。例如:
```
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("home");
}
}
```
这个类将会自动被Spring扫描到,并且应用于你的应用程序中。在这个例子中,我们覆盖了addViewControllers方法,以将根路径"/"映射到一个名为"home"的视图。
如果你想完全自定义Spring MVC配置,你可以使用@SpringBootApplication注解,并将其exclude属性设置为WebMvcAutoConfiguration.class。例如:
```
@SpringBootApplication(exclude = {WebMvcAutoConfiguration.class})
public class YourApplication {
...
}
```
这将禁用Spring Boot自动配置的Spring MVC,并允许你自己配置Spring MVC。但是请注意,这样做需要你自己配置所有必需的组件和功能,包括视图解析器、拦截器、格式化器等等。
在springboot中写自定义配置类时@EnableWebMvc加上好还是不加好
对于大多数情况,不需要加上@EnableWebMvc。因为@EnableWebMvc会开启完全的Spring MVC配置,包括视图解析器、消息转换器、HandlerMapping等。但是在Spring Boot中,它已经默认提供了Spring MVC的相关配置,并且自动集成了大量的默认配置。如果您需要覆盖默认配置,可以通过@Bean注解向容器中添加定制的配置类来实现,而不需要使用@EnableWebMvc。
但是,在某些特殊情况下,确实需要使用@EnableWebMvc。例如,您需要自定义特定的HandlerMapping、HandlerAdapter、Interceptor等,那么就需要使用@EnableWebMvc来启用Spring MVC的基本功能,否则这些自定义组件将无法生效。
因此,总的来说,根据具体情况而定,一般情况下不需要添加@EnableWebMvc,只需要在需要使用Spring MVC基本功能时才添加。
阅读全文