spring中可以使用注解机制,代替传统的在xml中配置一个bean。

  1. <pre name="code" class="java">@Component
  2. public class LoadMessageJob{
  3. // code
  4. }

和<bean id="loadMessageJob" class="com.yicong.kisp.LoadMessageJob" />是等效的。

@Component默认类名的第一个字母小写成为bean的id,最后两者都需要扫描包以生效,<context:component- scan base-package="com.yicong.kisp.invoke">。这样才能在实现了 ApplicationContextAware的类中使用getBean("id")得到一个容器管理的实例。

实现ApplicationContextAware接口要实现 setApplicationContext(ApplicationContext arg0)方法。该方法传入一个ApplicationContext 对象,从这个object可以得到spring中所有被扫描的bean。所以,两步必不可少

1、@Component注解一个类或用定义

2、扫描所在包

补充一下:刚才大师和杨老遇到一个很艹蛋的问题,启动tocmat时一直在报

org.springframework.beans.factory.NoUniqueBeanDefinitionException: No
qualifying bean of type [com.szkingdom.kisp.stock.MessageStockJob] is
defined: expected single matching bean but found 2:
com.szkingdom.kisp.stock.MessageStockJob#0,messageStockJob

很纳闷,这个类已经打了@component,并且扫描了,怎么会获取不到?换了类名就可以,这更说明是名字的问题了。怀疑是其他包的同类名,发现
没有,那就更奇怪了。最后的最后,在一个xml中发现了:<bean id = "...." class="....."
>。这说明已经使用xml形式定义过了,就不能再用Component。

我们做了尝试:写了两个相同的 <bean id="...">,程序正常。一个<bean>和Component就报错。

猜想:两个相同的 <bean id="...">会覆盖,取最后一个为准,但是<bean>和Component可能不是这样的机制了。Spring的启动和加载机制挺复杂的。

其实一开始没有好好看异常的具体信息,只是在想为什么找不到,NoUniqueBean写得很清楚了,不是唯一的bean,如果早些注意到这个也许就会发现是不是在其他地方多次定义了它。

以后就不要在这种问题上吃亏了。

Spring异常累计(1)Spring注解与扫描,NoUniqueBeanDefinitionException的更多相关文章

  1. Spring异常重试框架Spring Retry

    Spring Retry支持集成到Spring或者Spring Boot项目中,而它支持AOP的切面注入写法,所以在引入时必须引入aspectjweaver.jar包. 快速集成的代码样例: @Con ...

  2. spring的配置模式与注解模式基础

    “依赖注入”是spring的核心特征,在Web服务器(如Tomcat)加载时,它会根据Spring的配置文件中配置的bean或者是通过注解模式而扫描并装载的bean实例自动注入到Application ...

  3. Spring Boot-------项目搭建及注解

    Spring Boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需 ...

  4. Spring基础篇——通过Java注解和XML配置装配bean

    自动化装配的确有很大的便利性,但是却并不能适用在所有的应用场景,比如需要装配的组件类不是由自己的应用程序维护,而是引用了第三方的类库,这个时候自动装配便无法实现,Spring对此也提供了相应的解决方案 ...

  5. Spring系列(三):Spring IoC中各个注解的理解和使用

    原文链接:1. http://www.cnblogs.com/xdp-gacl/p/3495887.html       2. http://www.cnblogs.com/xiaoxi/p/5935 ...

  6. Spring和SpringMVC的常用注解

    Spring的部分: 使用注解之前要开启自动扫描功能 其中base-package为需要扫描的包(含子包). <context:component-scan base-package=" ...

  7. (转)Spring的bean管理(注解方式)

    http://blog.csdn.net/yerenyuan_pku/article/details/69663779 Spring的bean管理(注解方式) 注解:代码中的特殊标记,注解可以使用在类 ...

  8. 深入学习Spring框架(二)- 注解配置

    1.为什么要学习Spring的注解配置? 基于注解配置的方式也已经逐渐代替xml.所以我们必须要掌握使用注解的方式配置Spring. 关于实际的开发中到底使用xml还是注解,每家公司有着不同的使用习惯 ...

  9. spring AOP (使用AspectJ的注解方式 的aop实现) (6)

    目录 一.在 Spring 中启用 AspectJ 注解支持 二.AspectJ 支持 5 种类型的通知注解: 2.1.使用之前的 计算器接口和实现类 ArithmeticCalculator.jav ...

随机推荐

  1. html知识2

    1.超链接 语法:<a href "" target="打开方式" name="页面锚点名称">链接文字或者图片</a&g ...

  2. C关键字

    1 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义

  3. 基于zepto的一个日期区间选择插件

    功能:类似去哪选日期的那个日历,选第二个日期关闭日历,https://github.com/zhangchen2397/calendar在这个插件基础上改哒,这个只能选一个日期,我加了选两个日期的.并 ...

  4. SuperSlide

    今天又接触到另一个新的前端插件,心情美美哒~ SuperSlide 致力于解决网站大部分特效展示问题,使网站代码规范整洁,方便维护更新,官网地址:http://www.superslide2.com/ ...

  5. PDF firefox转换器

  6. [原]Wpf应用Path路径绘制圆弧

    1. 移动指令:Move Command(M):M 起始点  或者:m 起始点比如:M 100,240或m 100,240使用大写M时,表示绝对值; 使用小写m时; 表示相对于前一点的值,如果前一点没 ...

  7. linux下安装nginx后开机启动篇

    众所周知nginx安装后需要手动去启动,每次开机之后都要执行nginx的启动命令很蛋疼.那么我们来让nginx开机启动吧 1.先創建一個nginx文件把 [root@localhost ~]# vi ...

  8. UNION并集运算

    在集合论中,两个集合(集合A和集合B)的并集是一个包含集合A和B中所有元素的集合.换句话说,如果一个元素属于任何一个输入集合,那么它也属于结果集.如图所示.

  9. 9patch边框黑线的含义

    上面黑线或者点表示纵向可拉伸的区域 一般一个点即可 左边黑线或者点表示横向可拉伸的区域 一般一个点即可 下面表示纵向填放内容的区域  一般是一条黑线 右边表示横向填放内容的区域  一般是一条黑线

  10. 定时调度框架Quartz随笔

    最近项目中的定时批处理用到了quartz定时任务,在此记录下quartz的配置吧,一个小demo仅供参考,也方便自己今后复习! 下面直接来步骤吧! 一.首先,要搭起能让quartz正常运行的环境,至少 ...