为什么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-相关推荐

  1. springbbot运行无法编译成功,找不到jar包报错:Error:(3, 46) java: 程序包org.springframework.context.annotation不存在

    文章目录 问题描述: 解决方案: 问题描述: 提示:idea springbbot运行无法编译成功,找不到jar包报错 E:\ideaProject\demokkkk\src\main\java\co ...

  2. Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException 异常

    Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException 异常 参考文章: (1)Cau ...

  3. 已解决org.springframework.context.annotation.ConflictingBeanDefinitionException异常的正确解决方法,亲测有效!!!

    已解决org.springframework.context.annotation.ConflictingBeanDefinitionException异常的正确解决方法,亲测有效!!! 文章目录 报 ...

  4. org.springframework.context.annotation.ConflictingBeanDefinitionException异常处理

    问题描述: 项目启动时,报了这个错: org.springframework.context.annotation.ConflictingBeanDefinitionException:标记为Bean ...

  5. org.springframework.context.annotation.AnnotationConfigApplicationContext has not been refreshed yet

    代码如下(为了演示这个报错): AnnotationConfigApplicationContext annotationConfigApplicationContext = new Annotati ...

  6. 【问题解决】Error:(3, 46) java: 程序包org.springframework.context.annotation不存在

    Error:(3, 46) java: 程序包org.springframework.context.annotation不存在 我本地的解决办法是 File->Settings->Bui ...

  7. org.springframework.context.annotation.AnnotationConfigApplicationContext has been closed already

    ** org.springframework.context.annotation.AnnotationConfigApplicationContext has been closed already ...

  8. 从 Context 家谱来聊一聊 Context 家族使用的设计模式?

    Context Context 被翻译成上下文,是应用程序环境的全局信息接口,它是一个抽象类,其实现由 Android 系统提供的 ContextImpl 类.我们通过 Context 可以非常方便的 ...

  9. 元素 context:component-scan 的前缀 context 未绑定。

    是因为没有导入context的命名空间 转载于:https://www.cnblogs.com/wth21-1314/p/10388969.html

  10. Android深入理解Context(三)Context完全解析

    1· Context类型 我们知道,Android应用都是使用Java语言来编写的,那么大家可以思考一下,一个Android程序和一个Java程序,他们最大的区别在哪里?划分界限又是什么呢?其实简单点 ...

最新文章

  1. Lighttpd1.4.20源代码分析 笔记 状态机之错误处理和连接关闭
  2. xmpp关于后台挂起的消息接收,后台消息推送,本地发送通知
  3. MySQL的表空间管理
  4. 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
  5. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP
  6. AI in RTC 创新挑战赛 | 超分辨率挑战开始了!
  7. mysql的socket文件_修改socket文件, MySQL启动报错
  8. java paint的使用_java GUI编程之paint绘制操作示例
  9. 资料 |《深度学习500问》,川大优秀毕业生的诚意之作
  10. SQL_Server快捷键
  11. 【Java篇】 Java小游戏中加入背景音乐
  12. 疯狂Java讲义(一)
  13. z2屏幕坏如何从计算机导出数据,闪回收-手机屏幕坏了如何导出数据?手机屏幕坏了怎么用电脑控制?...
  14. rs232接口_为什么越来越多人用RS232接口,却还分不清DB9、DB25的引脚定义?
  15. android mb kb单位转换,存储单位的换算(KB, MB, GB)
  16. 护理管理学复习题及参考答案
  17. 文件排版2.2 (python)
  18. 高一必修一 第一单元
  19. mysql之函数创建
  20. 小程序突然报module is not defined_蔬菜“英文”小故事(九)

热门文章

  1. python基础代码库-python基础--注册和登录功能 代码
  2. 学python最好的方式-Python 学习怎样开始比较好?
  3. 川大计算机考研2020招生数,四川大学等大学,2020年研究生招生简章发布,这3个信息很重要!...
  4. LeetCode Pacific Atlantic Water Flow(flood fill)
  5. 国外程序员整理的 C++ 资源大全
  6. jsoncpp的输出顺序
  7. protobuf的编译
  8. 题目1183:守形数
  9. 前端学习记录 JS DOM
  10. 防止重复提交保证幂等的几种解决方案