前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring@Enable模块装配

Spring@Enable模块装配

作者头像
田维常
发布2019-07-16 11:04:07
5850
发布2019-07-16 11:04:07
举报

首先要说一下版本相关,Spring Framework3.1开始引入了@Enable注解。

何为模块

是指具有相同领域的功能组件集合,组合锁形成的一个独立的单元。

比如:

  • Web MVC 模块、
  • AspectJ代理模块、
  • Caching(缓存)模块、
  • JMX(Java 管 理扩展)模块、
  • Async(异步处理)模块等。

做过微服务的小伙伴都应该见过

代码语言:javascript
复制
@EnableEurekaServer
@EnableFeignClients
@EnableWebMvc

等以@Enable开头的注解。

代码语言:javascript
复制
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(EurekaServerMarkerConfiguration.class)
public @interface EnableEurekaServer {
  //.....省略
}
代码语言:javascript
复制
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(FeignClientsRegistrar.class)
public @interface EnableFeignClients {
//....省略
}
代码语言:javascript
复制
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
@Documented
@Import({DelegatingWebMvcConfiguration.class})
public @interface EnableWebMvc {
}

细心的人会看到上面几个注解上都有@Import注解,具体原因后面再说。

框架设计者有意识低形成一种设计模式,但是和传统的面向对象的Gof 23种设计模式不同,以下便是以@Enable作为前缀的相关注解:

Spring framework中

  1. @EnableWebMvc:Web MVC模块
  2. @EnableTransactionManagement:事务管理模块
  3. @EnableCaching:JMX模块
  4. @EnableAsync:异步处理模块
  5. @EnableWebFlux:Web Flux处理模块
  6. @EnableAspectJAutoProxy:AspectJ代理模式

Spring Boot中

  1. @EnableAutoConfiguration:自动装配模块
  2. @EnableManegementContext:Actuator模块管理
  3. @EnableConfigurationProperties:配置属性绑定模块
  4. @EnableOAuth2Sso:OAuth 2 单点登录模块

Spring Cloud 中

  1. @EnableEurekaServer:Eureka服务器模块
  2. @EnableConfigServer:配置服务器模块
  3. @EnableFeignClients:Feign客户端模块
  4. @EnableZuulProxy:服务网关zuul模块
  5. @EnableCircuitBreaker:服务熔断模块

有何意义?

简化装配步骤,实现了需要的时候再进行装配,同事也规避了组件集合配置的细节问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java后端技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档