前两天在网上看到一个Struts2、Spring3、MyBatis3的整合例子。
试着跟着做了一遍但是除了个异常老过不去
异常代码如下:Unable to instantiate Action, userAction,  defined for 'user' in namespace ''com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=com.template.snail.service.UserService, name='default'] in private com.template.snail.service.UserService com.template.snail.action.UserAction.service.
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:318)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
root causecom.opensymphony.xwork2.inject.DependencyException: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=com.template.snail.service.UserService, name='default'] in private com.template.snail.service.UserService com.template.snail.action.UserAction.service.
com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForMembers(ContainerImpl.java:144)
com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForFields(ContainerImpl.java:124)
com.opensymphony.xwork2.inject.ContainerImpl.addInjectors(ContainerImpl.java:89)
com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:71)
com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:67)
com.opensymphony.xwork2.inject.util.ReferenceCache$CallableCreate.call(ReferenceCache.java:150)
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
java.util.concurrent.FutureTask.run(FutureTask.java:138)
com.opensymphony.xwork2.inject.util.ReferenceCache.internalCreate(ReferenceCache.java:76)
com.opensymphony.xwork2.inject.util.ReferenceCache.get(ReferenceCache.java:116)
com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:483)
com.opensymphony.xwork2.inject.ContainerImpl$6.call(ContainerImpl.java:523)
com.opensymphony.xwork2.inject.ContainerImpl$6.call(ContainerImpl.java:521)
com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:574)
com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:521)
com.opensymphony.xwork2.ObjectFactory.injectInternalBeans(ObjectFactory.java:138)
com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:147)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:150)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:120)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:299)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
root causecom.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=com.template.snail.service.UserService, name='default'] in private com.template.snail.service.UserService com.template.snail.action.UserAction.service.
com.opensymphony.xwork2.inject.ContainerImpl$FieldInjector.<init>(ContainerImpl.java:184)
com.opensymphony.xwork2.inject.ContainerImpl$4.create(ContainerImpl.java:128)
com.opensymphony.xwork2.inject.ContainerImpl$4.create(ContainerImpl.java:125)
com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForMembers(ContainerImpl.java:141)
com.opensymphony.xwork2.inject.ContainerImpl.addInjectorsForFields(ContainerImpl.java:124)
com.opensymphony.xwork2.inject.ContainerImpl.addInjectors(ContainerImpl.java:89)
com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:71)
com.opensymphony.xwork2.inject.ContainerImpl$1.create(ContainerImpl.java:67)
com.opensymphony.xwork2.inject.util.ReferenceCache$CallableCreate.call(ReferenceCache.java:150)
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
java.util.concurrent.FutureTask.run(FutureTask.java:138)
com.opensymphony.xwork2.inject.util.ReferenceCache.internalCreate(ReferenceCache.java:76)
com.opensymphony.xwork2.inject.util.ReferenceCache.get(ReferenceCache.java:116)
com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:483)
com.opensymphony.xwork2.inject.ContainerImpl$6.call(ContainerImpl.java:523)
com.opensymphony.xwork2.inject.ContainerImpl$6.call(ContainerImpl.java:521)
com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:574)
com.opensymphony.xwork2.inject.ContainerImpl.inject(ContainerImpl.java:521)
com.opensymphony.xwork2.ObjectFactory.injectInternalBeans(ObjectFactory.java:138)
com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:147)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:150)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:120)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:299)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:399)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:198)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)jsp代码:
<body>
    <a href="user!show.action">显示所有</a> <br>
    <a href="jsp/add.jsp">添加数据</a><br/>
    <a href="user!treeData.action">JSON</a><br/>
</body>struts2配置文件
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"/>

<package name="ssi" extends="json-default">
<global-results>
<result name="error">/WEB-INF/page/error.jsp</result>
</global-results>

<action name="user" class="userAction">
<result type="redirect">user!show.action</result>
<result name="show">/jsp/show.jsp</result>
<result name="tree" type="json">
<!-- 需要排除转换成josn的属性 -->
<param name="excludeProperties">user</param>
</result>
</action>
</package>
</struts>action代码如下:
@Component
public class UserAction extends ActionSupport { private static final long serialVersionUID = -973535478139284399L;

@Inject
//@Named("UserService") 他那个地方这个地方写了这个,我这加上报错。不知道是不是这个原因
private UserService<User> service;

private User user;
private List<User> results = new ArrayList<User>(); public List<User> getResults() {
return results;
}

public String add() throws Exception {
if (!service.addUser(user)) {
this.addActionMessage("添加数据失败");
return ERROR;
}
return SUCCESS;
}

public String show() throws Exception {
results = service.getList();
return "show";
}

public String remove() throws Exception {
return SUCCESS;
}

public String edit() throws Exception {
return SUCCESS;
}

public String treeData() throws Exception {
results = service.getList();
return "tree";
}

public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
}
}好像是service注入进来的时候出的问题,第一次用注解。
求解答