【发布时间】:2012-08-21 04:34:10
【问题描述】:
我有一个带有服务和 dao 层的 spring (3.1) 应用程序。 我尝试在这个弹簧层中使用 requestfactory (gwt 2.4)。
这是我的一些课
我的域类
public class Account {
Long id;
String username;
// get, set
}
spring 和 gwt 之间的桥梁
public class SpringServiceLocator implements ServiceLocator {
@Override
public Object getInstance(Class<?> clazz) {
HttpServletRequest request = RequestFactoryServlet.getThreadLocalRequest();
ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext);
return context.getBean(clazz);
}
}
我的帐户代理
@ProxyFor(value=Account.class, locator = AccountLocator.class)
public interface AccountProxy extends EntityProxy{
public Long getId();
public String getUsername();
public void setUsername(String userName);
public void setId(Long id);
}
RequestContext 类
@Service(locator = SpringServiceLocator.class, value =AccountService.class)
public interface AccountRequest extends RequestContext {
Request<List<AccountProxy>> loadAllAccounts();
}
我的 requestFactory 类
public interface AccountRequestFactory extends RequestFactory {
AccountRequest accountRequest();
}
我的春季服务
public interface AccountService {
public List<Account> loadAllAccounts();
}
@Service
public class AccountServiceImpl implements AccountService{
@Autowired
private AccountDAO accountDAO;
}
帐户定位器避免将方法放入实体中
public class AccountLocator extends Locator<Account, Long> {
@Autowired
private AccountDAO accountDAO;
@Override
public Account create(Class<? extends Account> clazz) {
return new Account();
}
}
applicationContext.xml
<context:annotation-config />
<context:component-scan base-package="com.calibra" />
<bean id="accountService" class="org.calibra.server.service.AccountServiceImpl"/>
<bean id="accountDAO" class="org.calibra.server.dao.AccountDAOImpl"/>
演示工作,但我收到此错误:
com.google.web.bindery.requestfactory.server.UnexpectedException:找不到具有单个键类型参数的静态方法
我也在我的 AccountProxy 上收到此投诉(警告)
域类型 org.calibra.domain.Account 没有 Account findAccount(java.lang.Long) 方法。尝试向服务器发送 AccountProxy 会导致服务器错误。
我不想在我的域类中添加查找方法。 我试图将此方法放在我的 spring 服务中,但我得到了同样的警告。
使用可以正常工作的定位器进行编辑
奇怪的是我需要将 bean 放在 applicationContext 中,context:annotation 和 context:component-scan 似乎没用
有什么想法吗?
【问题讨论】:
标签: spring gwt requestfactory