Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧座控制器日期计算_Java_Spring_Rest_Date_Spring Mvc - Fatal编程技术网

Java 弹簧座控制器日期计算

Java 弹簧座控制器日期计算,java,spring,rest,date,spring-mvc,Java,Spring,Rest,Date,Spring Mvc,下面是SpringRestController实现的通用版本。它的目的是使用基于uriid输入的资源在特定的基本URI(“/rest/my/URI/to/resource”)上响应HTTP请求。它工作正常,但是由于它返回的数据的结构,我不得不添加一个可选的日期参数。我让控制器计算今天的日期,并在用户未在URI中提供日期时在数据库查询中使用该日期 我向您提出的问题是,如果我对每个响应使用todaySqlDate变量,而用户没有像下面这样提供日期,它是否会在每次响应请求时重新计算日期?显然,如果用户

下面是SpringRestController实现的通用版本。它的目的是使用基于uriid输入的资源在特定的基本URI(“/rest/my/URI/to/resource”)上响应HTTP请求。它工作正常,但是由于它返回的数据的结构,我不得不添加一个可选的日期参数。我让控制器计算今天的日期,并在用户未在URI中提供日期时在数据库查询中使用该日期

我向您提出的问题是,如果我对每个响应使用
todaySqlDate
变量,而用户没有像下面这样提供日期,它是否会在每次响应请求时重新计算日期?显然,如果用户输入一个日期,如

/rest/my/uri/to/resource/identifier/666?date=2016-03-15
这不是问题。我担心的是,如果日期不包括在内,la

/rest/my/uri/to/resource/identifier/666
它将使用默认日期。如果服务运行超过24小时,默认日期是否会停止为当前日期

@RestController
@RequestMapping(value = "/rest/my/uri/to/resource")
public class ResourceController
{

    private static final Logger LOGGER = LoggerFactory.getLogger(ResourceController.class);

    @Autowired
    private ResourceService resourceService;

    public String todaySqlDate = getTodaySqlDate();


    @RequestMapping(value = "/identifier/{id}", method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})
    public Resource getResource(@PathVariable("id") String id, 
                                @RequestParam(value="date", defaultValue="", required=false) String resourceDate)
                                throws InvalidParameterException, DataNotFoundException, Exception
    {

        LOGGER.trace("In ResourceController.getResouce() with {}", id);

        try 
        {
            if(!isValidIdentifier(id))
            {
                throw new InvalidParameterException("id is not valid: " + id);
            }

            if(resourceDate.isEmpty())
            {
                resourceDate = todaySqlDate;
            }
            else if(!isValidSqlDateString(resourceDate))
            {
                throw new InvalidParameterException("resourceDate is present but not valid: " + resourceDate);
            }

            ResourceList resourceList = resourceService.getResource(id, resourceDate);

            if (resourceList == null)
            {
                LOGGER.trace("No resources found for given input");
                throw new DataNotFoundException("ResourceList for " + id + " not found");
            }

            return resourceList;
        }
        catch (Exception e) 
        {
            LOGGER.error(e.getMessage(), e);
            throw e;
        }

    }

    public String getTodaySqlDate()
    {
        java.util.Date utilDate = new java.util.Date();
        java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
        return sqlDate.toString();
    }
}

是的,每个新请求都将由一个新的单独实例(线程)处理,因此每次都将重新计算日期

您可以查看Spring/REST文档以了解更多信息

有用链接:

是的,每个请求都将由一个新的单独实例处理,因此每次都会重新计算。谢谢!你能把这个添加为答案,这样我就可以接受了吗?添加为答案。