spring初始化是,debug进入set方法设置bean属性,当使用的时候就变成的null

时间:2021-08-31 19:41:41
注入的时候是成功的,可以输出内存地址,当你调用action使用这个已经依赖注入的类时,就是null了,调了一下午没发现问题,使用其他bean不会有这样的问题

5 个解决方案

#1


补充一下,即使为空,也不报错,就是没反应了

#2


lz意思是已经set那个action,但是调用时候出现null?
1、检查你的struts2、spring包版本是否正确,不要存在包冲突或者不一致问题。
2、如果真的set进去,你可以写个junit测试一下,applicationContent测试一下就知道是否真的set进去。
3、如果没有两种方式解决你的问题:
第一种没有plugin那个jar包情况
a、配置spring中配置action是由spring来管理,配置prototype等属性,在struts.xml中增加
<constant name="struts.objectFactory" value="spring" />
b、然后看你的action是否在spring配置文件中注入
c、写个测试代码,测试获取的action的hashcode值,或者直接测试action函数。
第二种有plugin那个jar情况
a、业务类在Spring配置文件中配置,Action不需要配置,Struts2的Action像没有整合Spring之前一样配置,<action>的class属性指定业务逻辑控制器类的全限定名。
b、其实Action也不是Struts2创建的,而是Struts2的Spring插件创建的。
c、写个测试代码,测试获取的action的hashcode值,或者直接测试action函数。

#3


看了楼上的意见,今晚在调试一下!还有一点我想说一下,就是其他的在我的那个action类中的其他bean是不会为空,private MenuService menuService;private UserService userService;
<bean id="MenuNodeAction" class="com.application.action.MenuNodeAction">
<property name="menuService" ref="MenuService"/>
                <property name="userService" ref="userService"/>
</bean>
第二个userService不会为空;
在setMenuService方法中的System.out.println(this.menuService.toString());这句话是能够输出地址,但在execute()中System.out.println(this.menuService.toString());就是null而且程序走到这一步就不会往下执行,也不报错;

#4


美萍软件怎么下载啊

#5


大哥解决了吗~给个解决方案呗

#1


补充一下,即使为空,也不报错,就是没反应了

#2


lz意思是已经set那个action,但是调用时候出现null?
1、检查你的struts2、spring包版本是否正确,不要存在包冲突或者不一致问题。
2、如果真的set进去,你可以写个junit测试一下,applicationContent测试一下就知道是否真的set进去。
3、如果没有两种方式解决你的问题:
第一种没有plugin那个jar包情况
a、配置spring中配置action是由spring来管理,配置prototype等属性,在struts.xml中增加
<constant name="struts.objectFactory" value="spring" />
b、然后看你的action是否在spring配置文件中注入
c、写个测试代码,测试获取的action的hashcode值,或者直接测试action函数。
第二种有plugin那个jar情况
a、业务类在Spring配置文件中配置,Action不需要配置,Struts2的Action像没有整合Spring之前一样配置,<action>的class属性指定业务逻辑控制器类的全限定名。
b、其实Action也不是Struts2创建的,而是Struts2的Spring插件创建的。
c、写个测试代码,测试获取的action的hashcode值,或者直接测试action函数。

#3


看了楼上的意见,今晚在调试一下!还有一点我想说一下,就是其他的在我的那个action类中的其他bean是不会为空,private MenuService menuService;private UserService userService;
<bean id="MenuNodeAction" class="com.application.action.MenuNodeAction">
<property name="menuService" ref="MenuService"/>
                <property name="userService" ref="userService"/>
</bean>
第二个userService不会为空;
在setMenuService方法中的System.out.println(this.menuService.toString());这句话是能够输出地址,但在execute()中System.out.println(this.menuService.toString());就是null而且程序走到这一步就不会往下执行,也不报错;

#4


美萍软件怎么下载啊

#5


大哥解决了吗~给个解决方案呗