社区
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
...全文
13907
19
打赏
收藏
Spring bean 加载的先后顺序。。
[code=Xml] [/code] 不能成功加载,而必须反a放到b前面,这是什么原因。 找了一些资料,也没有具体的说明。 请高手指点。 ClassPathXmlApplicationContext
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
面试题25:
Spring
如何控制
bea
n
加载
先后顺序
本文聚焦
Spring
面试中关于
Bea
n
加载
顺序的问题。
Spring
提供depends-on属性和@Order注解来控制
Bea
n的初始化顺序。depends-on用于单个
Bea
n依赖,确保依赖的
Bea
n先创建。@Order和Ordered接口则用于同一类型
Bea
n的顺序控制,数值越小,
加载
越早。掌握这两个关键点,足以应对面试。
【
Spring
启动过程分析】启动流程简介
本文介绍了
Spring
容器启动流程,包括定位、
加载
和注册三个步骤,定位到
spring
配置文件,
加载
并转换信息,再将信息注册到
bea
nFactory。还阐述了
bea
n实例化的具体过程,解析配置类上的注解信息,按一定规则处理,不同注解定义的
Bea
n实例化时机有
先后顺序
。
Spring
AOP无法拦截Controller的原因
本文深入探讨了
Spring
框架与
Spring
-MVC框架中
Bea
n扫描的
先后顺序
问题,详细解释了为什么
Spring
的AOP配置可能对已经由
Spring
-MVC提前
加载
的Controller
Bea
n无效。了解此问题的根本原因及解决方案对于确保AOP正确应用到所有
Bea
n至关重要。
Spring
注解@Order
该博客探讨了@Order注解及其在
Spring
IOC容器中的作用,用于定义
Bea
n的执行优先级。注解默认值Ordered.LOWEST_PRECEDENCE对应Integer.MAX_VALUE,表示最低优先级,值越小,优先级越高。@Order并不影响
Bea
n的
加载
顺序,主要应用于控制
Bea
n执行的
先后顺序
。
马士兵 MCA 架构师课程笔记(五十三)
博客围绕线程控制和
Spring
源码展开。介绍了控制线程
先后顺序
的多种方法,如使用门栓(latch)、join等,还提及线程池及任务队列。同时详细讲解了
Spring
加载
bea
n的过程、框架扩展、
bea
n的生命周期,包括前置后置处理方法、初始化方法等,以及应对面试的技巧。
Java EE
67,535
社区成员
225,852
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章