サービスとdaoレイヤーを備えたSpring(3.1)アプリケーションがあります。このスプリングレイヤーで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.calibra.domain.Accountには、Account findAccount(java.lang.Long)メソッドがありません。AccountProxyをサーバーに送信しようとすると、サーバーエラーが発生します。
ドメインクラスに検索方法を追加したくありません。この方法を春のサービスに入れようとしましたが、同じ警告が表示されます。
正常に動作するロケーターで編集
奇妙なことに、私はBeanをapplicationContext、context:annotation、context:component-scanに入れる必要がありますが役に立たないようです
何か案が?