从REST服务填充的Spring Roo模型(无持久性)

时间:2012-08-22 22:35:21

标签: spring-roo

我正在构建一个没有本地持久性的小型Web应用程序。它从远程RESTful端点加载数据。

它有一个Model对象,称为Order。当webapp收到诸如example.com/order/1234之类的请求时,我希望Web应用程序发出GET请求(从服务层?)到远程REST端点,然后填充我的域模型。

最好的方法是什么? 是否可能&是否值得在没有设置持久层的情况下以任何有用的方式使用roo?

1 个答案:

答案 0 :(得分:-1)

2个选项:

  • 仅将H2持久性提供程序用作内存
  • 正常创建roo实体,然后推入所有方法并覆盖以使用本地HashMap。我之前做过如下:

    @RooJavaBean
    @RooToString
    @RooJpaActiveRecord(versionField="", identifierField="name", identifierType=String.class, versionType=Byte.class)
    @RooJson
    public class MonitorMetric {
    static Map<String, MonitorMetric> data=new HashMap<String, MonitorMetric>();
    
    @Id
    private String name;
    
    long totTime;
    long minTime=Long.MAX_VALUE;
    long maxTime=Long.MIN_VALUE;
    int countStarted;
    int countFinished;
    
    @DateTimeFormat(style = "SS")
    private Date lastAttempt;
    @DateTimeFormat(style = "SS")
    private Date lastSuccess;
    @DateTimeFormat(style = "SS")
    private Date lastFailure;
    
    public double getAvgTime() {
        return (countFinished>0 ? totTime/countFinished : 0);
    }
    
    public String getName() {
        return this.name;
    }
    
    public void setName(String id) {
        this.name = id;
    }
    
    public static long countMonitorMetrics() {
        return data.size();
    }
    
    public static List<MonitorMetric> findAllMonitorMetrics() {
        return new ArrayList<MonitorMetric>(data.values());
    }
    
    public static List<MonitorMetric> findMonitorMetricEntries(int firstResult, int maxResults) {
        int lastResult = (firstResult+maxResults > data.size() ? data.size() : firstResult+maxResults);
        return new ArrayList<MonitorMetric>(data.values()).subList(firstResult, lastResult);
    }
    
    public static MonitorMetric findMonitorMetric(String name) {
        if (name == null || name.length() == 0) return null;
        return data.get(name);
    }
    
    public void persist() {
        data.put(getName(), this);
    }
    
    public MonitorMetric merge() {
        data.put(getName(), this);
        return this;
    }
    
    public void remove() {
        data.remove(getName());
    }
    
    public void flush() {
    }
    
    public void clear() {
        data.clear();
    }
    }