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

2025-06-21 22:53:55

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
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢