【发布时间】:2012-08-15 18:10:29
【问题描述】:
我用 gwt(使用 requestfactory)和 spring 得到这个错误
org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [org.calibra.server.service.AccountService] is defined: expected single bean but found 0:
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:271)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1101)
at org.calibra.server.SpringServiceLocator.getInstance(SpringServiceLocator.java:24)
at com.google.web.bindery.requestfactory.server.LocatorServiceLayer.createServiceInstance(LocatorServiceLayer.java:56)
我的服务定位器
public class SpringServiceLocator implements ServiceLocator {
@Override
public Object getInstance(Class<?> clazz) {
ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(
RequestFactoryServlet.getThreadLocalServletContext());
return context.getBean(clazz);
}
}
我的春季服务
@Service
public class AccountServiceImpl implements AccountService{
@Override
public void addNewAccount(Account account) {
...
}
@Override
public List<Account> loadAllAccounts() {
...
}
}
Gwt requestContext,参考我的spring服务
@Service(value=AccountService.class, locator=SpringServiceLocator.class)
public interface AccountRequest extends RequestContext {
Request<Void> addNewAccount(AccountProxy account);
Request<List<AccountProxy>> loadAllAccounts();
}
我的 web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>gwtRequest</servlet-name>
<servlet-class>com.google.web.bindery.requestfactory.server.RequestFactoryServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>gwtRequest</servlet-name>
<url-pattern>/gwtRequest</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>welcomeGWT.html</welcome-file>
</welcome-file-list>
我不明白我怎么会有 0 个 AccountService bean?
我尝试在 dispatcher-servlet 中添加
<bean id="accountService" class="org.calibra.server.service.AccountServiceImpl"/>
我得到了同样的结果
有什么想法吗?
编辑:如果有人有完整的示例,那可能很有用。
【问题讨论】:
-
您是否在 web.xml 中声明了 RequestFactory servlet?
-
我有
-class>gwtRequest com.google.web.bindery.requestfactory.server.RequestFactoryServlet -
我不确定,但我认为您缺少 servlet 映射。请看这里:crazygui.wordpress.com/2011/09/23/…了解更多详情
-
不好说,链接信息不多,web.xml也不可用
-
您的 web.xml 文件似乎正确。抱歉,我无法确定确切的问题。当我有 noSuchBeanException 时,通常是因为 Spring 在应用程序的上下文中找不到他试图注入的 bean。您确定 bean 定义在您的应用程序上下文中吗?
标签: spring gwt requestfactory