springBoot之扩展mvc的自动配置功能

本文介绍如何在 Spring MVC 中添加自定义视图解析器,包括创建配置类、实现 WebMvcConfigurer 接口及使用 addViewControllers 方法来指定 URL 请求路径与视图的映射关系。

举例子,我们要添加自定义的视图解析器。

1:写一个类,类上面添加注解@Configuration 表明该类是一个配置类。

2:让该类实现(implements)WebMvcConfigurer.

3:实现addViewControllers方法

4:用registry.addViewController(urlPath:"/dologin").setView("succes");

urlPat里面填写要拦截的请求,setView里面填要跳转的页面。

注意的是spring5之后就把WebMvcConfigurerAdpater移除了,所以只能选择,实现WebMvcConfigurer与继承WebMvcConfigurationSupport,但是后者会覆盖掉。springBoot的默认配置,所以建议用前者。

如果你不想保留默认配置,可以在配置类上添加@EnableWebMvc,但是一般不建议。

 

 

在 Spring Boot 中,手动配置与自动配置是两种不同的组件装配方式,它们分别适用于不同场景,具有各自的优缺点和使用方式。 ### 自动配置 Spring Boot 的自动配置机制基于条件化装配(Conditionals),能够根据项目中引入的依赖自动决定是否注册某些 Bean 或启用特定功能。这种机制极大地简化了项目的初始配置工作,使得开发者可以快速构建应用[^1]。 自动配置的核心实现依赖于 `@Conditional` 系列注解,例如 `@ConditionalOnClass`、`@ConditionalOnMissingBean` 等,这些注解用于控制配置类或方法是否生效。通常,自动配置类会通过 `spring.factories` 文件(旧版本)或 `/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports` 文件(Spring Boot 2.7 及以上推荐方式)进行注册,以便 Spring Boot 在启动时加载并应用这些配置[^3]。 示例:一个简单的自动配置类如下: ```java @Configuration @ConditionalOnClass(SomeService.class) @ConditionalOnMissingBean public class SomeAutoConfiguration { @Bean public SomeService someService() { return new SomeServiceImpl(); } } ``` 该配置仅在类路径中存在 `SomeService` 类且尚未定义其实例的情况下创建一个默认的 `SomeService` Bean。 ### 手动配置 手动配置指的是开发者显式地编写配置类或 XML 配置文件来定义 Bean 和装配逻辑。这种方式提供了更高的灵活性和控制力,适合需要对 Bean 生命周期、依赖关系、注入策略等进行精细控制的场景。手动配置通常使用 `@Configurable` 注解声明配置类,并通过 `@Bean` 显式定义 Bean 实例[^2]。 示例:手动配置一个数据源 Bean: ```java @Configuration public class DataSourceConfig { @Bean public DataSource dataSource() { return DataSourceBuilder.create() .url("jdbc:mysql://localhost:3306/mydb") .username("root") .password("password") .build(); } } ``` 此配置强制创建了一个数据源 Bean,无论环境是否存在其他数据源定义。 ### 区别总结 | 特性 | 自动配置 | 手动配置 | |------|----------|----------| | **配置方式** | 基于条件自动装配 | 显式定义 Bean | | **适用场景** | 快速开发、通用场景 | 精细控制、复杂业务逻辑 | | **可维护性** | 高,减少冗余配置 | 较低,需维护大量配置代码 | | **扩展性** | 支持通过 Starter 模块扩展 | 需要手动集成第三方模块 | | **调试难度** | 相对较高,自动逻辑隐藏细节 | 更容易追踪和调试 | ### 使用建议 - 对于大多数通用组件(如数据库连接池、日志框架、Web MVC 等),优先使用自动配置,以提升开发效率。 - 对于业务核心组件、需要定制行为的 Bean,或者需要与外部系统深度集成的场景,建议采用手动配置以确保可控性和可维护性。 - 若需自定义自动配置逻辑,可以通过创建新的配置类并将其注册到 `spring.factories` 或 `.imports` 文件中,从而扩展 Spring Boot 的自动配置体系[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值