Spring bean依赖注入spring的bean和普通的bean

 时间:2024-11-16 20:09:31

1、bean分为普通的java bean和spring的bean。那么何为普通的javabean,何为spring的bean呢,如果大家使用的框架是spring3.0注解的形式,那么只要是配置了<context:component-scanbase-package="com.haiyisoft"></context:component-scan>并且在bean上加上注解@Component("name")配置了这两个之后系统会在启动服务的时候扫描package包下所有带有Component注解的类进行初始化,这种bean最终都放到spring容器中,这就是spring的bean。如下图配置:

Spring bean依赖注入spring的bean和普通的bean

2、那普通的javabean又是如何?简单了,没加注解的就是啊!!那springbean和普通的javabean又是如何使用的呢?普通的java bean使用时直接new,产生一个实例。springbean是在启动服务时候就初始化,如果用spring的bean,那么直接getbean("beanname")即可。

3、然而今天小编也遇到一个奇怪的问题,希望也能帮我分析,我把这个经验也分享下:今天在使用树的组件调用一个普通的java类时,我按照spring 注解的使用方式进行了如下配置:

Spring bean依赖注入spring的bean和普通的bean

4、上述类就是数组件调用的类,jsp 描写方式 如下:

Spring bean依赖注入spring的bean和普通的bean

5、我框架还有个接口 service 和实现类,当我想把接口注入到QueryFLTree中时,我做了如下配置:

Spring bean依赖注入spring的bean和普通的bean

6、当我写好,准备使用时,却报空指针异常:TycxsjjflcxService.query(query);

7、然而,我遵循着一个spring 的机制来排查问题,我想,既然,autowire蟠校盯昂d是spring的bean才可以注入,那么意思就是说我的service根本就没有注入到queryftlTREE类中,也就是说 QueryFLTree并不是spring的bean。又查了一下:QueryFLTree 是继承tree组件,类是new出来的,而spring的bean是程序启动是自动实现的。两者不是一个概念。这时候我清楚了,但是还有两个问题我并不清楚:我是在tree类 加上 @component了呀,加上这个 不就是自己扫描么。这样不就是spring的bean了么?Object bean1 = BeanLocator.getBean("queryfltree"); 这个bean是能拿到的这有说明了什么呢?

Spring bean依赖注入spring的bean和普通的bean

8、带着这俩问题,我就想,既然service注入不到tree类,那我直接用getBean拿出来用不就行了么,果断这么些:TycxsjjflcxService beanS = (TycxsjjflcxService)BeanLocator.getBean("TycxsjjflcxService");list =beanS.query(query);不得不说,果然好用了。

9、总结,综上所述,只要是加了@Autowired和@Service @Component注解的都可以是spring的bean。使用getbean都能取出来直接用。

10、配置时,还需要注意的是如下:

Spring bean依赖注入spring的bean和普通的bean
  • ubuntu12.04常用命令:[13]passwd
  • 怎么java代码打包成可执行jar并用批处理bat运行
  • 利用Navicat Premium批量导出Oracle表触发器
  • IDEA怎么设置允许JetBrains收集常用功能?
  • conda如何安装python3.3版本的环境
  • 热门搜索
    土豆红烧肉 精忠报国岳飞传攻略 黑龙江旅游攻略 联想平板电脑怎么样 好烦怎么办 勃拉姆斯简介 每天跳绳多少下能减肥 急性肠胃炎怎么调理 骑车减肥 北汽幻速s2怎么样