Spring工程的通用配置模式(二)

​Spring的很多子项目都涉及到配置。在这些项目中,存在一个较为通用的配置模式,了解该模式有助于我们更好地理解框架。本文将对这一模式进行介绍。

我们会以Spring Web MVC框架介绍,之后再结合其他相似的项目进行总结。

1 @Enbale

@Enable*注解通常指启用某个框架的意思,比如@EnbaleWebMvc指启用Spring Web MVC框架。该注解一般会配合@Configuration注解一起使用,放在配置类上,由ApplicationContext启动时加载。

@Configuration
@EnableWebMvc
public class AppConfig {}

2 @Import

@Import通常用于引入一个新类,这个类会是一个@Configuration对象。这样我们可以在应用的@Configuration配置类上,通过@Import的方式,引入第三方配置。

@Enbale*注解往往会在自身的定义上增加@Import注解,并通过@Import注解引入一个代理配置类,这样的设计可支持框架提供一套默认的配置。

如下是@EnbaleWebMvc的源代码,其通过@Import(DelegatingWebMvcConfiguration.class)引入了Spring Web MVC的核心配置类。

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(DelegatingWebMvcConfiguration.class)
public @interface EnableWebMvc {
}

3 模式总结

下面以Spring Web MVC、Spring WebSocket和Spring STOMP为例,总结下该配置模式。

3.1 Spring Web MVC

  • @EnableWebMvc注解启用功能;

  • @EnableWebMvc注解上通过@Import(DelegatingWebMvcConfiguration.class)完成配置功能的加载;

  • DelegatingWebMvcConfiguration内部包含WebMvcConfigurerComposite,并继承自WebMvcConfigurationSupport

  • WebMvcConfigurationSupport提供了Spring Web MVC的默认配置

  • WebMvcConfigurerComposite注入了IoC中所有WebMvcConfigurer的具体实现类,其自身也是WebMvcConfigurer的实现类。WebMvcConfigurerComposite调用注入的所有WebMvcConfigurer的实现,完成框架的个性化配置

3.2 Spring WebSocket

  • @EnableWebSocket注解启用功能;

  • @EnableWebSocket注解上通过@Import(DelegatingWebSocketConfiguration.class)完成配置功能的加载;

  • DelegatingWebSocketConfiguration注入了IoC中所有WebSocketConfigurer的具体实现类,并继承自WebSocketConfigurationSupport

  • WebSocketConfigurationSupport提供了Spring WebSocket的默认配置

  • DelegatingWebSocketConfiguration中注入的WebSocketConfigurer完成应用的个性化配置

3.3 Spring STOMP

  • @EnableWebSocketMessageBroker注解启用功能;

  • @EnableWebSocket注解上通过@Import(DelegatingWebSocketMessageBrokerConfiguration.class)完成配置功能的加载;

  • DelegatingWebSocketMessageBrokerConfiguration注入了IoC中所有WebSocketMessageBrokerConfigurer的具体实现类,并继承自WebSocketMessageBrokerConfigurationSupport

  • WebSocketMessageBrokerConfigurationSupport提供了Spring STOMP的默认配置

  • DelegatingWebSocketMessageBrokerConfiguration中注入的WebSocketMessageBrokerConfigurer完成应用的个性化配置

5 总结

有时候横向比较不同事物间存在的异同点也是一件非常有意思的事情,甚至有可能在看似毫不相关的东西上经过仔细分析都能发现相似点。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

镜悬xhs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值