我試圖避免通過JAX-RS
和RESTeasy
處理我客戶的請求中的樣板代碼。我有幾類,例如帶RESTeasy工廠的JAX-RS
class User{
private String name;
private String username;
private String address;
private long id;
//getters and setters
}
class Company{
private String name;
private String address;
private String location;
//getters and setters
}
我想有create()
,update()
,delete()
和getAll()
響應。例如,對於用戶我會與創建方法和隨後的更新以下類,刪除和GETALL:
@Path ("/user")
public class UserApi {
@PersistenceUnit
private EntityManagerFactory emf;
@POST
@Path("/create")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public String Create(@Form User user){
EntityManager em = emf.createEntityManager();
try{
em.getTransaction().begin();
em.merge(user);
em.getTransaction().commit();
}
catch (Exception e){
e.printStackTrace();
em.getTransaction().rollback();
return "{\"success\":false, \"msg\":\"Error occured, please try later\"}";
}
return "{\"success\":true, \"msg\": \"Saved successfully\"}";
}
我將不得不重複相同的代碼對每個I具有類。有人評論過使用工廠類來避免這種情況,可能使用泛型或接口。我很難搞清楚。請提出一個好的設計來解決這個問題。
謝謝..只是一個簡單的問題,爲什麼我必須用'@ Produces'註釋'AbstractCrudApi'? –
pnyota
我想,默認情況下,所有響應類型都是JSON。所以我將它添加到'AbstractCrudApi'中,所以你不需要重複自己。 –