文档章节

spring @Enable 模块驱动

OrangeJoke
 OrangeJoke
发布于 06/01 21:54
字数 339
阅读 25
收藏 5

@Enable...

基于spring 3.1

@Enable...系列可以实现按需加载整个模块,从而达到简化配置的目的。我们以@EnableCaching为例子

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import({CachingConfigurationSelector.class})
public @interface EnableCaching {
    boolean proxyTargetClass() default false;

    AdviceMode mode() default AdviceMode.PROXY;

    int order() default 2147483647;
}

所以魔法就在 @Import这里,@Import可以导入Configuration class, ImportSelector,ImportBeanDefinationRegister的实现类,至少申明一个@Bean方法的类,并将它们注册为bean。

Configuration Import方式

在上一篇中<context:component-scan/>会将需要spring 注册的bean定义为BeanDefination。然后交由不同的bean. parser.

spring3. 之后由ConfigurationClassPostProcessor 来处理@Configuration @Bean and @Component. 其中 ConfigurationClassParser.processConfigurationClass(ConfigurationClass) 处理了@Import 相关注解

// 加载注解对应的处理器
<context:annotation-config/>
<context:component-scan base-package="com.xxx"/>

ImportSelector 和 ImportBeanDefinitionRegistrar 方式

这两种方式可以做更多的自定义操作。

总结

所以在spring framework时代,@Component ,@Configuration 需要被装载时,应用需要借助@Import 或者@ComponentScan 的能力, 也是我们通常需要通过@ComponentScan 扫描对应默认的包路径。

这样存在的问题:

  1. 会扫描所有的jar包
  2. 在装配一些复杂Bean的时候,无能为力。

所以催生出了spring boot的自动装配。

© 著作权归作者所有

OrangeJoke
粉丝 40
博文 57
码字总数 39185
作品 0
江北
高级程序员
私信 提问
Spring Data(一)概念和仓库的定义

Spring Data(一)概念和仓库的定义 Spring Data的主要任务是为数据访问提供一个相似的、一致的、基于Spring的编程模型,同时又保留着下面各个数据存储的特征。它使得使用数据访问技术非常的...

小忽悠
2018/06/21
0
0
【第2章 Spring快速入门】2.1 Java应用之HelloWorld

上一节:【第1章 Spring概述与结构】1.2 Spring模块与结构 注意:本系列教程不会通过工程单独依赖某个Jar包,而是通过开源中国的Maven库,来进行Jar包的依赖管理,所以后续的讲解都是以Maven...

陶邦仁
2015/05/24
1K
3
项目中SpringMVC、Spring和Struts的区别讲解

导读:近期做到的项目中,用到的框架师SSM(SpringMVC+Spring+Mybatis),那么在这之前用过SSH,这里主要是区分一下SpringMVC和Struts,但是由于SpringMVC和Spring真的也挺容易迷糊的,所以,...

yiguang_820的博客
2017/12/11
0
0
【Nacos源码之配置管理 二】Nacos中的事件发布与订阅--观察者模式

EventDispatcher EventDispatcher在Nacos中是一个事件发布与订阅的类,也就是我们经常使用的Java设计模式——事件驱动模式(观察者模式) 一般发布与订阅主要有三个角色 事件: 表示某些类型的...

进击的老码农
09/02
0
0
【Spring Cloud】分布式必学springcloud(十一)——消息驱动 SpringCloud Stream

一、前言 在前面的博客中,基本上已经把springcloud系列的大部分都介绍过了。如果有太明白的小白,还是建议从小编的第一篇博客进行学习。 在这篇博客中,小白向大家介绍一个消息事件驱动框架...

kisscatforever
2018/04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

你知道多少this,new,bind,call,apply?那我告诉你

那么什么是this,new,bind,call,apply呢?这些你都用过吗?掌握这些内容都是基础中的基础了。如果你不了解,那还不赶快去复习复习,上网查阅资料啥的! 通过call,apply,bind可以改变thi...

达达前端小酒馆
今天
4
0
设计模式之命令模式

命令模式的类图 其中的角色有: Client 客户端。只依赖于调用者Invoker、接收者Receiver、以及Command(网上找的图片这里没有画出来),不用关注接收者如何执行命令,只需要告诉调用者需要执行...

陈年之后是青葱
今天
7
0
2. 彤哥说netty系列之IO的五种模型

你好,我是彤哥,本篇是netty系列的第二篇。 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识。 简介 本文将介绍linux中的五种IO模型,同时也会介绍阻塞/非阻塞与同步/异步的区别。 何...

彤哥读源码
今天
5
0
OSChina 周四乱弹 —— 喵的波粒二象性

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @ 小小编辑推荐:《水墨兰亭》- 李志辉 《水墨兰亭》- 李志辉 手机党少年们想听歌,请使劲儿戳(这里) @巴拉迪维 :卧室里采光要足够好,这样...

小小编辑
今天
34
1
前后端分离接口规范

最近在开发,遇到前后端关于Boolean类型的参数传参和接收的问题: 场景:后台会根据用户是否出车/是否出司机(Boolean类型)来决定后端的业务逻辑(比如费用的计算),前端使用JSON字符串类型...

code-ortaerc
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部