У меня есть приложение spring (3.1) с сервисом и уровнем dao. Я пытаюсь использовать requestfactory (gwt 2.4) с этим весенним слоем.
Вот некоторые из моего класса
Мой класс домена
public class Account {
Long id;
String username;
// get, set
}
Мост между пружиной и 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.clera.domain.Account не имеет метода FindAccount(java.lang.Long) учетной записи. Попытка отправить AccountProxy на сервер приведет к ошибке сервера.
Я не хочу добавлять метод поиска в свой класс домена. Я попытался поместить этот метод в свой весенний сервис, но получаю то же предупреждение.
Редактировать с помощью локатора, который работает нормально
Просто странно, мне нужно поместить bean-компонент в applicationContext, context:annotation и context:component-scan кажутся бесполезными
Любая идея?