专栏首页Java后端技术栈cwnaitSpring@Enable模块装配

Spring@Enable模块装配

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

何为模块

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

比如:

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

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

@EnableEurekaServer
@EnableFeignClients
@EnableWebMvc

等以@Enable开头的注解。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(EurekaServerMarkerConfiguration.class)
public @interface EnableEurekaServer {
  //.....省略
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(FeignClientsRegistrar.class)
public @interface EnableFeignClients {
//....省略
}
@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:服务熔断模块

有何意义?

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

本文分享自微信公众号 - Java后端技术栈(t-j20120622)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 前端开发知识汇总--JS

    版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

    j_bleach
  • angular 中$q服务介绍

    版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

    j_bleach
  • 前后端演示SHA1,MD5加密登录(带数据库)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

    j_bleach
  • 微信小程序开发测试

    微信小程序 在2017-01-09正式上线,本着跟上时代潮流的精神,写一份教程来看看

    机器学习和大数据挖掘
  • angular4实战(4)ngrx

    版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

    j_bleach
  • 使用nodejs自动生成前端项目组件

    版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

    j_bleach
  • webpack 单独打包指定JS文件

    版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

    j_bleach
  • ES6知识库汇总三

    版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

    j_bleach
  • 基于react的录音及音频曲线绘制的组件开发

    版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

    j_bleach
  • electron 将pc端(vue)页面打包为桌面端应用

    版权声明:本文为博主原创文章,未经博主允许不得转载。 ...

    j_bleach

扫码关注云+社区

领取腾讯云代金券