社区
Java EE
帖子详情
Spring bean 加载的先后顺序。。
qingwaxw1980
2009-12-31 06:16:10
[code=Xml]
<beans>
<bean id = "b"...>
<property name="a" ref="a"/>
</bean>
<bean id = "a".../>
<beaan>
[/code]
不能成功加载,而必须反a放到b前面,这是什么原因。
找了一些资料,也没有具体的说明。
请高手指点。
ClassPathXmlApplicationContext
...全文
13844
19
打赏
收藏
Spring bean 加载的先后顺序。。
[code=Xml] [/code] 不能成功加载,而必须反a放到b前面,这是什么原因。 找了一些资料,也没有具体的说明。 请高手指点。 ClassPathXmlApplicationContext
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dyg521662120
2011-08-16
打赏
举报
回复
Spring默认会先初始化主调Bean 在去初始化依赖Bean 楼主上面的声明,说明你的主调Bean为A bean 依赖Bean为B Bean,那么Spring就会先去初始化A Bean ,然后注入依赖关系,在初始化B bean,默认的Spring初始化Bean为单例的,在执行完
<bean id = "b"...>
<property name="a" ref="a"/>
</bean>
之后,楼主又声明了
<bean id = "a".../>
但是A Bean之前已被初始化了,并且是单例状态的,所有就出错了
zhuyang7654321
2011-06-21
打赏
举报
回复
我也遇到了差不多的问题。
有一个系统,我在 WinXP + Tomcat 下,运行正常;
可是到了 Ubuntu11 + Tomcat 下,就出现了和你一样的错误提示
详见贴:【Spring——Bean的加载顺序和Tomcat有关?或者和系统有关?】
目前还没解决
bolink5
2010-01-04
打赏
举报
回复
与顺序是没关系的
spring加载bean 是延迟加载的
yonglin4605
2010-01-04
打赏
举报
回复
[Quote=引用 7 楼 archko 的回复:]
<beans>
<bean id = "b"...>
<property name="a" ref="a"/>
</bean>
<bean id = "a".../>
<beaan>问题在于解析文件是从上至下的。所以当它解析到B。而A是不存在的。
[/Quote]
你瞎猜的吧,spring会把整个文件解析完了后才去实例化的。
qingwaxw1980
2010-01-02
打赏
举报
回复
[Quote=引用 13 楼 qingwaxw1980 的回复:]
引用 7 楼 archko 的回复:
<beans>
<bean id = "b"...>
<property name="a" ref="a"/>
</bean>
<bean id = "a".../>
<beaan>问题在于解析文件是从上至下的。所以当它解析到B。而A是不存在的。
如果是这个原因,有什么解决方法么?
注:其实我把程序置入容器中执行(WEB-APPLICATION),是没有这个问题的。
不过当我打算用TestCase时,在启动spring时,就出现了这样的错误。
[/Quote]
另外,多配置文件的话,文件引入时,就没有先后顺序么?
qingwaxw1980
2010-01-02
打赏
举报
回复
[Quote=引用 7 楼 archko 的回复:]
<beans>
<bean id = "b"...>
<property name="a" ref="a"/>
</bean>
<bean id = "a".../>
<beaan>问题在于解析文件是从上至下的。所以当它解析到B。而A是不存在的。
[/Quote]
如果是这个原因,有什么解决方法么?
注:其实我把程序置入容器中执行(WEB-APPLICATION),是没有这个问题的。
不过当我打算用TestCase时,在启动spring时,就出现了这样的错误。
happygao521
2010-01-02
打赏
举报
回复
[Quote=引用 7 楼 archko 的回复:]
<beans>
<bean id = "b"...>
<property name="a" ref="a"/>
</bean>
<bean id = "a".../>
<beaan>问题在于解析文件是从上至下的。所以当它解析到B。而A是不存在的。
[/Quote]
正确
跟着Mic学架构
2010-01-01
打赏
举报
回复
与顺序无关啊
不过我一般都是按先后顺序写的喽
wangcong2005
2010-01-01
打赏
举报
回复
原因是容器对配置文件进行读取,需要顺序读取节点下的所有属性和属性名,然后根据反射技术进行对bean的实例化,在对你那个<property name="a" ref="a"/>这里有个bean为a,可是进行实例化的时候会在容器里找a这个对象,找不到则进行实例化,实例化发现 a在前面根本没有定义,报错是应该的。
archko
2010-01-01
打赏
举报
回复
<beans>
<bean id = "b"...>
<property name="a" ref="a"/>
</bean>
<bean id = "a".../>
<beaan>问题在于解析文件是从上至下的。所以当它解析到B。而A是不存在的。
老牛同学
2010-01-01
打赏
举报
回复
与顺序无关的, 我觉得是其它的原因.
hurongxiang0718
2010-01-01
打赏
举报
回复
没先后顺序。
LZ说的,没遇到过哦。
SambaGao
2010-01-01
打赏
举报
回复
[Quote=引用 4 楼 zhangjihao 的回复:]
spring初始化bean的时区有两种,一种是在容器启动时全部实例化,一种是在使用的时候具体实例化(也称延迟加载)。尚没证明延迟加载与xml标定顺序有关。
[/Quote]
..
HaiKe_F16
2010-01-01
打赏
举报
回复
顶,学习。
howsun_zh
2009-12-31
打赏
举报
回复
spring初始化bean的时区有两种,一种是在容器启动时全部实例化,一种是在使用的时候具体实例化(也称延迟加载)。尚没证明延迟加载与xml标定顺序有关。
Fallen934985
2009-12-31
打赏
举报
回复
应该不会出现这问题吧,,我都是随便放,没先后顺序,,,
qingwaxw1980
2009-12-31
打赏
举报
回复
我也是第一次碰到这情况。。。
临远
2009-12-31
打赏
举报
回复
没遇到过。
spring里bean的顺序是可以随意放的。
【微服务】
spring
控制
bea
n
加载
顺序使用详解
spring
控制
bea
n
加载
顺序使用详解
Spring
bea
n
加载
顺序
在默认配置下,
Spring
的
Bea
n
加载
顺序主要取决于
Bea
n的定义顺序、依赖关系和生命周期回调方法。虽然类路径扫描的顺序可能因运行环境而异,但通过使用@DependsOn注解和depends-on属性,可以显式控制
Bea
n的
加载
和初始化顺序。
Spring
并不会随机改变
Bea
n的
加载
顺序,而是遵循上述策略确保
Bea
n在合理的顺序中
加载
和初始化。
spring
bea
n
加载
顺序问题
顺序:意思是依次而不乱。顺序在生活的方方面面都显得尤为重要,自然的它对程序执行来说也是至关重要的。有了顺序的保证,我们就能对“结果”做出预期,作为coder的我们对应的也就更能“掌控”自己所写代码,心里也就更加踏实。顺序固然重要,但是不乏有些场景它是不需要顺序保证的。一般来说:无序的效率会比顺序高,毕竟保证顺序是需要花费资源的(人力、物理、时间…)。本文将主要讨论
Spring
在实例化
Bea
n时的顺序性,以及我们如何才能“控制”这种顺序呢?
Spring
Bea
n
加载
顺序的控制
Spring
Bea
n
加载
顺序的控制,最终测试结果为:一般情况下会按照
SPring
类的书写的顺序去创建,但是也不一定,最终其实得看你的编译出来的文件,的Class文件到底是什么样子的,包括操作系统文件的排序规则等一系列的因素。
Spring
bea
n
加载
顺序和执行顺序
在
spring
中,有时会存在实现多个相同类/接口的
bea
n,而有时我们希望
bea
n的
加载
或执行按照某种顺序执行。 二话不说,先给出一个实现控制
bea
n
加载
和执行顺序的实例 有一个测试接口TestInterface,及其三个实现类:UnitTest、InterTest、UiTest,希望按照UiTest->InterTest->UnitTest的顺序
加载
bea
n,并按照UnitTest->InterTest->UiTest顺序执行 定义一个测试接口 package com.ex
Java EE
67,549
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章