ssh中把service注入到action,为什么不能注入service的实现类

问题描述

在网上看到这样一句话:“把DAO实现类注入到service实现类中,把service的接口(注意不要是service的实现类)注入到action中”,确实如此,比如UserServiceImpl实现了接口UserService,当我在UserAction中写private UserServiceImpl userService;@Resourcepublic void setUserService(UserServiceImpl userService) {this.userService = userService;}会报错。Unable to instantiate Action, com.action.UserAction, defined for 'user' in namespace '/'Failed to convert property value of type [$Proxy25 implementing com.service.UserService,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [com.service.UserServiceImpl] for property 'userService'; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [$Proxy25 implementing com.service.UserService,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [com.service.UserServiceImpl] for property 'userService': no matching editors or conversion strategy found把上面的类型改成UserService就ok了,经过多次测试,我采用的是注解方式配置,Service层一旦实现了接口,在action中注入接口正确,但是注入实现类不行,能不能讲讲为什么啊 问题补充:zyn010101 写道

解决方案

因为代理的原因,注入的是一个代理类,不能转型成UserServiceImpl,所以set会报错。而接口肯定不会报错
解决方案二:
UserAction 里面注入 UserService在配置文件中,(不管是注释还是手写)都会有这么一行<bean id="UserAction" class="UserAction"><property name="userService" ref="userService" /></bean><bean id="userService" class="UserServiceImpl"/>因此 注入方式是property name,要与setXxx): private UserService userService; public void setUserService(UserService userService) { this.userService = userService; } 因此配置文件是这样也是可以的:<bean id="UserAction" class="UserAction"><property name="service" ref="userService" /></bean> 就需要写成 private UserService service; public void setService(UserService userService) { this.service = userService; } 而你的方式,setUserService(UserServiceImpl userService)配置文件应该如下,让spring去寻找 bean为 userServiceImpl的id<bean id="UserAction" class="UserAction"><property name="service" ref="userService" /></bean><bean id="userServiceImpl" class="UserServiceImpl"/>
解决方案三:
private UserService userService; @Resource public void setUserService(UserService userService) { this.userService = userService; } public UserService getUserService(){ return this.userService}在spring中这么配置<bean id="userService" class="UserServiceImpl"/>

时间: 2024-10-22 01:28:36

ssh中把service注入到action,为什么不能注入service的实现类的相关文章

ssh整合-关于ssh中hibernate生成方法从Action中调用报错main调用不报错

问题描述 关于ssh中hibernate生成方法从Action中调用报错main调用不报错 看图学生求解决没遇到过!我建测试类用main方法进来一点问题都没有正常输出i=1 解决方案 报的什么错,贴出来,,, 解决方案二: 你确定text的userinfo和action的userinfo的内容一样吗? 你在findUserinfonamepwd方法中将name和pwd打印出来看看. 我怀疑你action的参数userinfo是null或者userinfo实例化了,但是name或者pwd是null

SSH做登录时,service不能注入到action,这是为什么啊

问题描述 本人郁闷啊,难道UserService没有注入到Action中啊??java.lang.NullPointerExceptioncom.portal.user.web.UserAction.login(UserAction.java:44)sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)UserAction代码:Java codepackage com.portal.user.web;import java.util

怎么理解ssh中dao和service是单例的

问题描述 怎么理解ssh中dao和service是单例的 当多个请求调用单例service时为什么数据不会出现互相干扰?比如进行查询传进一个id, 当一请求来时栈指向堆中唯一的service进行查询,没查询完另一个请求也进来查询, 两者都指向那个service,数据不会出错么? 解决方案 线程有同步,后来的调用被阻塞,直到之前的运行完. 解决方案二: hibernate的session submit本身有同步. 不过你的业务如果不是原子性的,你又没加锁,的确可能有问题. 解决方案三: SSH中注

ssh中添加数据可以直接添加指定数据吗 不经过action 直接用方法向数据库表插入数据可以吗

问题描述 ssh中添加数据可以直接添加指定数据吗不经过action直接用方法向数据库表插入数据可以吗有没有什么办法可以实现的大神们教教我 解决方案 解决方案二:表中只有一个ID和一个string类型的字段我要插入数据到这个字段中什么数据都可以的我只是想要用到这个自动递增的id,用这个id来查其他数据解决方案三:肯定是可以的解决方案四:想越过Action?我想到的方法可以自己配一个servlet配一个xfire接口service提供接口或者直接main一个方法解决方案五:http://blog.c

代码-SSH中Action中向jsp传的list为空值

问题描述 SSH中Action中向jsp传的list为空值 Action代码如下: public List list; public List<Info> getList() { return list; } public void setList(List<Info> list) { this.list = list; } @Resource(name="infoservice") public IInfoService service; public Str

求解在SSH中,打开页面时引用action,并读取在调用action后session中数据

问题描述 求解在SSH中,打开页面时引用action,并读取在调用action后session中数据 解决方案 解决方案二:Mapmap=(Map)ActionContext.getContext().get(ActionContext.SESSION);Objectobj=map.get("sessionKey");解决方案三:引用楼主a76607401的回复: 求解在SSH中,打开页面时引用action,并读取在调用action后session中数据 我就是想知道咋个在页面中引用s

求问ssh框架中jsp页面传给action指定方法,action无法自动获取

问题描述 求问ssh框架中jsp页面传给action指定方法,action无法自动获取,jsp中name也指定了,action无法get到textfiled传进去的值 解决方案 解决方案二:是struts2吗?具体贴代码把,如果textfiled设置成disabled也是不传值得解决方案三:引用1楼ltyisangel的回复: 是struts2吗?具体贴代码把,如果textfiled设置成disabled也是不传值得 readonly是可以传值的解决方案四:你在方法里面request.getPa

如何使用spring将service层注入到servlet中去(how to use Spring to inject ur service layer into the servlet )

In a typical struts+spring framework, we know how to inject our "service" into the "action". But sometime we have to use the "servlet". I mean the real servlet, not the struts's action-servlet! For example: We have a servlet

hql参数绑定-ssh中hql的参数绑定用不了,总是不识别

问题描述 ssh中hql的参数绑定用不了,总是不识别 Query query=getSession().createQuery("from com.pm.entity.Pro where proState=?"); query.setString(0,"正常"); list=query.list(); t.commit(); return list; 解决方案 用其它的绑定方法也不行,只能拼接,这是怎么回事 解决方案二: 报什么错误 还是??? 解决方案三: 参考一