@Service
public class AuthorityServiceImpl implements AuthorityService
{ private AuthorityDaoImpl authorityDaoImpl; public AuthorityDaoImpl getAuthorityDaoImpl()
{
return authorityDaoImpl;
}
@Resource
public void setAuthorityDaoImpl(AuthorityDaoImpl authorityDaoImpl)
{
this.authorityDaoImpl = authorityDaoImpl;
}
如图所示,无论private AuthorityDaoImpl authorityDaoImpl;还是private AuthorityDao authorityDaoImpl;两种形式都是可以注入的。。只是第2种面向节接口有更好的扩展性(多态)。但是就不考虑扩展性直接写成第一种也应该没错。只是写死了。
但是在ssh中的struts2中action中好像不是那么回事。
public class AuthorityAction extends ActionSupport
{ /**
*
*/
private static final long serialVersionUID = 1L; private AuthorityService authorityServiceImpl;
private List<Authority> authoritys; public List<Authority> getAuthoritys()
{
return authoritys;
} public void setAuthoritys(List<Authority> authoritys)
{
this.authoritys = authoritys;
}
private AuthorityService authorityServiceImpl;这里好像就是一定得父类接口的应用指向子类对象。
假如我换成public class AuthorityAction extends ActionSupport
{ /**
*
*/
private static final long serialVersionUID = 1L; private AuthorityServiceImpl authorityServiceImpl;
private List<Authority> authoritys; public List<Authority> getAuthoritys()
{
return authoritys;
} public void setAuthoritys(List<Authority> authoritys)
{
this.authoritys = authoritys;
} public AuthorityServiceImpl getAuthorityServiceImpl()
{
return authorityServiceImpl;
}
@Resource
public void setAuthorityServiceImpl(
AuthorityServiceImpl authorityServiceImpl)
{
this.authorityServiceImpl = authorityServiceImpl;
}
private AuthorityServiceImpl authorityServiceImpl;这样的话就出现问题了Unable to instantiate Action, authorityAction, defined for 'authority' in namespace '/'Error creating bean with name 'authorityAction': Injection of resource methods failed; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'authorityServiceImpl' must be of type [com.xiaoke.service.impl.AuthorityServiceImpl], but was actually of type [$Proxy10]
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:319)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:400)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:194)大概意思就是说无法实例化这个action 什么注入失败的。所以在这里我就很大的疑问啦。。为什么啊在action中就是只能是]private AuthorityService authorityServiceImpl 却不能是]private AuthorityServiceImpl authorityServiceImpl 但是在servvice的实现层dao的实现层的注入却是两种方式都可以。。求真理。。希望有人能了却我心中疑问。
public class AuthorityServiceImpl implements AuthorityService
{ private AuthorityDaoImpl authorityDaoImpl; public AuthorityDaoImpl getAuthorityDaoImpl()
{
return authorityDaoImpl;
}
@Resource
public void setAuthorityDaoImpl(AuthorityDaoImpl authorityDaoImpl)
{
this.authorityDaoImpl = authorityDaoImpl;
}
如图所示,无论private AuthorityDaoImpl authorityDaoImpl;还是private AuthorityDao authorityDaoImpl;两种形式都是可以注入的。。只是第2种面向节接口有更好的扩展性(多态)。但是就不考虑扩展性直接写成第一种也应该没错。只是写死了。
但是在ssh中的struts2中action中好像不是那么回事。
public class AuthorityAction extends ActionSupport
{ /**
*
*/
private static final long serialVersionUID = 1L; private AuthorityService authorityServiceImpl;
private List<Authority> authoritys; public List<Authority> getAuthoritys()
{
return authoritys;
} public void setAuthoritys(List<Authority> authoritys)
{
this.authoritys = authoritys;
}
private AuthorityService authorityServiceImpl;这里好像就是一定得父类接口的应用指向子类对象。
假如我换成public class AuthorityAction extends ActionSupport
{ /**
*
*/
private static final long serialVersionUID = 1L; private AuthorityServiceImpl authorityServiceImpl;
private List<Authority> authoritys; public List<Authority> getAuthoritys()
{
return authoritys;
} public void setAuthoritys(List<Authority> authoritys)
{
this.authoritys = authoritys;
} public AuthorityServiceImpl getAuthorityServiceImpl()
{
return authorityServiceImpl;
}
@Resource
public void setAuthorityServiceImpl(
AuthorityServiceImpl authorityServiceImpl)
{
this.authorityServiceImpl = authorityServiceImpl;
}
private AuthorityServiceImpl authorityServiceImpl;这样的话就出现问题了Unable to instantiate Action, authorityAction, defined for 'authority' in namespace '/'Error creating bean with name 'authorityAction': Injection of resource methods failed; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'authorityServiceImpl' must be of type [com.xiaoke.service.impl.AuthorityServiceImpl], but was actually of type [$Proxy10]
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:319)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:400)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:194)大概意思就是说无法实例化这个action 什么注入失败的。所以在这里我就很大的疑问啦。。为什么啊在action中就是只能是]private AuthorityService authorityServiceImpl 却不能是]private AuthorityServiceImpl authorityServiceImpl 但是在servvice的实现层dao的实现层的注入却是两种方式都可以。。求真理。。希望有人能了却我心中疑问。
解决方案 »
- 关于javascript的一些问题
- 在CSDN上怎么找工作呀
- 请教一个hibernate多字段排序的问题
- 延长ie等待时间的问题???cgi程序,boa
- web service 客户端创建失败
- jquery中$.ajax,$.get等等可以在IE中运行,但是不能在firefox,chrome中运行的问题
- 关于import javax.servlet.http.*的问题
- 表单提交的问题!!
- 请教怎么解包、查看war文件,在线等!
- 不能显示中文文件夹的文件,请大侠指教!!!!!!!
- 在火狐下 div 设置了 onmouseout 为什么有时鼠标div上面移动时 也会触发onmouseout ie下就不会
- 字符串转义符问题
class UserDaoImplUserDao userDao=new UserDaoImpl();
@Autowried
private AuthorityDao authorityDaoImpl;@Autowried
private AuthorityService service;
既然用了spring框架,你就不要再自己去实例化了。