在配置Spring的配置文件时发现一个问题,我定义一个bean id为"beanA11",我另外一个类需要注入这个类就定义了一个property ref,属性name 为 "beanA",配置好后在调用这个需要注入的类时,一直获取不到注入的对象,后来把定义那个bean id设为和引用属性设置的名称相同时,能正常的注入,我又改名后确认是这个问题引起的.后来我在需要注入那个类加入如setBeanA11的方法后,也能正常注入,我的sessonFactory在定义时用不同的名称进行注入都未遇到这个问题,请各位帮忙解释下这个问题.
注:需要注入的类是Struts 2的ACTION类,只继承了一个ActionSupport
终于明白你的意思,之前对你的意思理解有错误。
产生这个问题的原因:
你在struts.xml中定义是
[quote][/quote]
struts2和spring整合有两种方式,这里你使用了第二种: 自动装配。
自动装配属于spring的概念,这里因为你的jk.action.UserInfoAction中含有一个需要注入的对象,名字为beanA,所以就从spring的配置中找bean id为“beanA”bean并注入进去(称为按照name的自动装配,也是struts默认的自动装配方式)。
如果你定义成
[quote]
[/quote]
系统没有找到bean id name为“beanA”的bean,自然注入不进去了。
至于定义的
[quote]
[/quote]
在这里根本没有起作用,你去掉后结果也是一样的。
个人觉得自动装配并不好,容易让人迷惑,最好struts和spring整合时不要使用这种方式,而是使用由spring产生action的方式。
如果真如你描述的这样的话,怀疑是struts 2的bug.