sss

/*

* Copyright 2002-2015 the original author or authors.

*

* Licensed under the Apache License, Version 2.0 (the "License");

* you may not use this file except in compliance with the License.

* You may obtain a copy of the License at

*

*      http://www.apache.org/licenses/LICENSE-2.0

*

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS,

* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.

*/

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

import org.springframework.core.annotation.AliasFor;

import org.springframework.http.HttpStatus;

/**

* Marks a method or exception class with the status {@link #code} and

* {@link #reason} that should be returned.

*

* <p>The status code is applied to the HTTP response when the handler

* method is invoked and overrides status information set by other means,

* like {@code ResponseEntity} or {@code "redirect:"}.

*

* <p><strong>Warning</strong>: when using this annotation on an exception

* class, or when setting the {@code reason} attribute of this annotation,

* the {@code HttpServletResponse.sendError} method will be used.

*

* <p>With {@code HttpServletResponse.sendError}, the response is considered

* complete and should not be written to any further. Furthermore, the Servlet

* container will typically write an HTML error page therefore making the

* use of a {@code reason} unsuitable for REST APIs. For such cases it is

* preferable to use a {@link org.springframework.http.ResponseEntity} as

* a return type and avoid the use of {@code @ResponseStatus} altogether.

*

* @author Arjen Poutsma

* @author Sam Brannen

* @see org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver

* @see javax.servlet.http.HttpServletResponse#sendError(int, String)

* @since 3.0

*/

@Target({ElementType.TYPE, ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface ResponseStatus {

    /**

     * Alias for {@link #code}.

     */

    @AliasFor("code")

    HttpStatus value() default HttpStatus.INTERNAL_SERVER_ERROR;

    /**

     * The status <em>code</em> to use for the response.

     * <p>Default is {@link HttpStatus#INTERNAL_SERVER_ERROR}, which should

     * typically be changed to something more appropriate.

     * @since 4.2

     * @see javax.servlet.http.HttpServletResponse#setStatus(int)

     * @see javax.servlet.http.HttpServletResponse#sendError(int)

     */

    @AliasFor("value")

    HttpStatus code() default HttpStatus.INTERNAL_SERVER_ERROR;

    /**

     * The <em>reason</em> to be used for the response.

     * @see javax.servlet.http.HttpServletResponse#sendError(int, String)

     */

    String reason() default "";

}

posted @ 2017-01-11 19:15  pengshuangbao  阅读(1161)  评论(0编辑  收藏  举报