context:annotation-config / 和context:component-
为什么80%的码农都做不了架构师?>>>
1. <context:annotation-config />
它的作用是隐式地向 Spring 容器注册
- AutowiredAnnotationBeanPostProcessor、
- CommonAnnotationBeanPostProcessor、
- PersistenceAnnotationBeanPostProcessor、
- RequiredAnnotationBeanPostProcessor 这4个BeanPostProcessor。
其作用是如果你想在程序中使用注解,就必须先注册该注解对应的类,如下图所示:
依赖的类 | 注解 |
CommonAnnotationBeanPostProcessor | @Resource 、@PostConstruct、@PreDestroy |
PersistenceAnnotationBeanPostProcessor的Bean | @PersistenceContext |
AutowiredAnnotationBeanPostProcessor Bean | @Autowired |
RequiredAnnotationBeanPostProcessor | @Required |
当然也可以自己进行注册:
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor "/> <bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
2. <context:component-scan base-package="com.*" >
<context:component-scan/> 配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,同时还启用了注释驱动自动注入的功能(即还隐式地在内部注册了 AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor),因此当使用 <context:component-scan/> 后,就可以将 <context:annotation-config/> 移除了。
在这里有一个比较有意思的问题,就是扫描是否需要在二个配置文件都配置一遍,我做了这么几种测试:
(1)只在applicationContext.xml中配置如下
<context:component-scan base-package="com.login" />
启动正常,但是任何请求都不会被拦截,简而言之就是@Controller失效
(2)只在spring-servlet.xml中配置上述配置
启动正常,请求也正常,但是事物失效,也就是不能进行回滚
(3)在applicationContext.xml和spring-servlet.xml中都配置上述信息
启动正常,请求正常,也是事物失效,不能进行回滚
(4)在applicationContext.xml中配置如下
<context:component-scan base-package="com.login" />
在spring-servlet.xml中配置如下
<context:component-scan base-package="com.sohu.login.web" />
此时启动正常,请求正常,事物也正常了。
结论:在spring-servlet.xml中只需要扫描所有带@Controller注解的类,在applicationContext中可以扫描所有其他带有注解的类(也可以过滤掉带@Controller注解的类)。
3. <mvc:annotation-driven />
它会自动注册DefaultAnnotationHandlerMapping 与AnnotationMethodHandlerAdapter
转载于:https://my.oschina.net/liting/blog/524988
context:annotation-config / 和context:component-相关推荐
- springbbot运行无法编译成功,找不到jar包报错:Error:(3, 46) java: 程序包org.springframework.context.annotation不存在
文章目录 问题描述: 解决方案: 问题描述: 提示:idea springbbot运行无法编译成功,找不到jar包报错 E:\ideaProject\demokkkk\src\main\java\co ...
- Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException 异常
Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException 异常 参考文章: (1)Cau ...
- 已解决org.springframework.context.annotation.ConflictingBeanDefinitionException异常的正确解决方法,亲测有效!!!
已解决org.springframework.context.annotation.ConflictingBeanDefinitionException异常的正确解决方法,亲测有效!!! 文章目录 报 ...
- org.springframework.context.annotation.ConflictingBeanDefinitionException异常处理
问题描述: 项目启动时,报了这个错: org.springframework.context.annotation.ConflictingBeanDefinitionException:标记为Bean ...
- org.springframework.context.annotation.AnnotationConfigApplicationContext has not been refreshed yet
代码如下(为了演示这个报错): AnnotationConfigApplicationContext annotationConfigApplicationContext = new Annotati ...
- 【问题解决】Error:(3, 46) java: 程序包org.springframework.context.annotation不存在
Error:(3, 46) java: 程序包org.springframework.context.annotation不存在 我本地的解决办法是 File->Settings->Bui ...
- org.springframework.context.annotation.AnnotationConfigApplicationContext has been closed already
** org.springframework.context.annotation.AnnotationConfigApplicationContext has been closed already ...
- 从 Context 家谱来聊一聊 Context 家族使用的设计模式?
Context Context 被翻译成上下文,是应用程序环境的全局信息接口,它是一个抽象类,其实现由 Android 系统提供的 ContextImpl 类.我们通过 Context 可以非常方便的 ...
- 元素 context:component-scan 的前缀 context 未绑定。
是因为没有导入context的命名空间 转载于:https://www.cnblogs.com/wth21-1314/p/10388969.html
- Android深入理解Context(三)Context完全解析
1· Context类型 我们知道,Android应用都是使用Java语言来编写的,那么大家可以思考一下,一个Android程序和一个Java程序,他们最大的区别在哪里?划分界限又是什么呢?其实简单点 ...
最新文章
- Lighttpd1.4.20源代码分析 笔记 状态机之错误处理和连接关闭
- xmpp关于后台挂起的消息接收,后台消息推送,本地发送通知
- MySQL的表空间管理
- 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
- 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP
- AI in RTC 创新挑战赛 | 超分辨率挑战开始了!
- mysql的socket文件_修改socket文件, MySQL启动报错
- java paint的使用_java GUI编程之paint绘制操作示例
- 资料 |《深度学习500问》,川大优秀毕业生的诚意之作
- SQL_Server快捷键
- 【Java篇】 Java小游戏中加入背景音乐
- 疯狂Java讲义(一)
- z2屏幕坏如何从计算机导出数据,闪回收-手机屏幕坏了如何导出数据?手机屏幕坏了怎么用电脑控制?...
- rs232接口_为什么越来越多人用RS232接口,却还分不清DB9、DB25的引脚定义?
- android mb kb单位转换,存储单位的换算(KB, MB, GB)
- 护理管理学复习题及参考答案
- 文件排版2.2 (python)
- 高一必修一 第一单元
- mysql之函数创建
- 小程序突然报module is not defined_蔬菜“英文”小故事(九)