Add @Since 5.0 and package-info for reactive classes

This commit is contained in:
Rossen Stoyanchev
2016-07-14 17:39:32 -04:00
parent e2c7653da4
commit d2e105f28d
204 changed files with 266 additions and 32 deletions

View File

@@ -53,6 +53,7 @@ import org.springframework.web.server.WebHandler;
*
* @author Rossen Stoyanchev
* @author Sebastien Deleuze
* @since 5.0
*/
public class DispatcherHandler implements WebHandler, ApplicationContextAware {

View File

@@ -28,6 +28,7 @@ import org.springframework.web.server.ServerWebExchange;
*
* @author Rossen Stoyanchev
* @author Sebastien Deleuze
* @since 5.0
*/
public interface HandlerAdapter {

View File

@@ -26,6 +26,7 @@ import org.springframework.web.server.ServerWebExchange;
*
* @author Rossen Stoyanchev
* @author Sebastien Deleuze
* @since 5.0
*/
public interface HandlerMapping {

View File

@@ -31,6 +31,7 @@ import org.springframework.util.Assert;
* Represent the result of the invocation of a handler.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class HandlerResult {

View File

@@ -25,6 +25,7 @@ import org.springframework.web.server.ServerWebExchange;
*
* @author Rossen Stoyanchev
* @author Sebastien Deleuze
* @since 5.0
*/
public interface HandlerResultHandler {

View File

@@ -25,6 +25,7 @@ import org.springframework.web.server.ServerWebExchange;
* Handle {@link ResponseStatusException} by setting the response status.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class ResponseStatusExceptionHandler implements WebExceptionHandler {

View File

@@ -39,6 +39,7 @@ import org.springframework.web.server.ServerWebExchange;
* extension, query parameter, etc) for a given exchange.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public abstract class AbstractMappingContentTypeResolver implements MappingContentTypeResolver {

View File

@@ -35,6 +35,7 @@ import org.springframework.web.server.ServerWebExchange;
* {@code MappingContentTypeResolver}.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class CompositeContentTypeResolver implements MappingContentTypeResolver {

View File

@@ -26,6 +26,7 @@ import org.springframework.web.server.ServerWebExchange;
* A {@link RequestedContentTypeResolver} that resolves to a fixed list of media types.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class FixedContentTypeResolver implements RequestedContentTypeResolver {

View File

@@ -26,6 +26,7 @@ import org.springframework.web.server.ServerWebExchange;
* A {@link RequestedContentTypeResolver} that checks the 'Accept' request header.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class HeaderContentTypeResolver implements RequestedContentTypeResolver {

View File

@@ -25,6 +25,7 @@ import org.springframework.http.MediaType;
* keys (e.g. file extension, query parameter) and media types.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public interface MappingContentTypeResolver extends RequestedContentTypeResolver {

View File

@@ -29,8 +29,9 @@ import org.springframework.web.server.ServerWebExchange;
/**
* A {@link RequestedContentTypeResolver} that extracts the media type lookup key from a
* known query parameter named "format" by default.
*s
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class ParameterContentTypeResolver extends AbstractMappingContentTypeResolver {

View File

@@ -40,6 +40,7 @@ import org.springframework.web.util.WebUtils;
* the {@link #setUseJaf(boolean)} property may be set to false.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class PathExtensionContentTypeResolver extends AbstractMappingContentTypeResolver {

View File

@@ -25,6 +25,7 @@ import org.springframework.web.server.ServerWebExchange;
* Strategy for resolving the requested media types for a {@code ServerWebExchange}.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public interface RequestedContentTypeResolver {

View File

@@ -78,6 +78,7 @@ import org.springframework.util.CollectionUtils;
* {@link #useJaf suppress} the use of JAF.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class RequestedContentTypeResolverBuilder {

View File

@@ -1,5 +1,6 @@
/**
* This package provides support for various strategies to resolve the requested
* content type for a given request.
* {@link org.springframework.web.reactive.accept.RequestedContentTypeResolver}
* strategy and implementations to resolve the requested content type for a
* given request.
*/
package org.springframework.web.reactive.accept;

View File

@@ -22,6 +22,7 @@ import org.springframework.web.util.HttpRequestPathHelper;
* Assist with configuring {@code HandlerMapping}'s with path matching options.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class PathMatchConfigurer {

View File

@@ -22,6 +22,7 @@ import org.springframework.web.reactive.result.view.UrlBasedViewResolver;
* Assist with configuring properties of a {@link UrlBasedViewResolver}.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class UrlBasedViewResolverRegistration {

View File

@@ -41,6 +41,7 @@ import org.springframework.web.reactive.result.view.freemarker.FreeMarkerViewRes
* JSON, XML, etc.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class ViewResolverRegistry {

View File

@@ -71,6 +71,7 @@ import org.springframework.web.reactive.result.view.ViewResolver;
* <p>Import directly or extend and override protected methods to customize.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
@Configuration @SuppressWarnings("unused")
public class WebReactiveConfiguration implements ApplicationContextAware {

View File

@@ -28,6 +28,7 @@ import org.springframework.web.util.HttpRequestPathHelper;
* implementations.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public abstract class AbstractHandlerMapping extends ApplicationObjectSupport
implements HandlerMapping, Ordered {

View File

@@ -44,6 +44,7 @@ import org.springframework.web.server.ServerWebExchange;
* path pattern that matches the current request path.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public abstract class AbstractUrlHandlerMapping extends AbstractHandlerMapping {

View File

@@ -49,6 +49,7 @@ import org.springframework.util.CollectionUtils;
* {@link org.springframework.util.AntPathMatcher AntPathMatcher} javadoc.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class SimpleUrlHandlerMapping extends AbstractUrlHandlerMapping {

View File

@@ -1,5 +1,4 @@
/**
* Provides standard HandlerMapping implementations,
* including abstract base classes for custom implementations.
* Provides HandlerMapping implementations including abstract base classes.
*/
package org.springframework.web.reactive.handler;

View File

@@ -36,6 +36,7 @@ import org.springframework.web.server.ServerWebExchange;
* HandlerResultHandler} implementations that perform content negotiation.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public abstract class ContentNegotiatingResultHandlerSupport implements Ordered {

View File

@@ -33,6 +33,7 @@ import org.springframework.web.server.WebHandler;
*
* @author Rossen Stoyanchev
* @author Sebastien Deleuze
* @since 5.0
*/
public class SimpleHandlerAdapter implements HandlerAdapter {

View File

@@ -41,6 +41,7 @@ import org.springframework.web.server.ServerWebExchange;
*
* @author Sebastien Deleuze
* @author Rossen Stoyanchev
* @since 5.0
*/
public class SimpleResultHandler implements Ordered, HandlerResultHandler {

View File

@@ -30,6 +30,7 @@ import org.springframework.web.server.UnsupportedMediaTypeStatusException;
* {@link RequestMapping#consumes()} and {@link RequestMapping#produces()}.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
abstract class AbstractMediaTypeExpression implements Comparable<AbstractMediaTypeExpression>, MediaTypeExpression {

View File

@@ -24,6 +24,7 @@ import org.springframework.web.server.ServerWebExchange;
* {@link org.springframework.web.bind.annotation.RequestMapping#headers()}.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
abstract class AbstractNameValueExpression<T> implements NameValueExpression<T> {

View File

@@ -24,6 +24,7 @@ import java.util.Iterator;
* {@link #equals(Object)}, {@link #hashCode()}, and {@link #toString()}.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public abstract class AbstractRequestCondition<T extends AbstractRequestCondition<T>>
implements RequestCondition<T> {

View File

@@ -36,6 +36,7 @@ import org.springframework.web.server.ServerWebExchange;
* provide {@code null} conditions or no conditions at all to the constructor.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class CompositeRequestCondition extends AbstractRequestCondition<CompositeRequestCondition> {

View File

@@ -39,6 +39,7 @@ import org.springframework.web.server.UnsupportedMediaTypeStatusException;
* used, the semantics are the same.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public final class ConsumesRequestCondition extends AbstractRequestCondition<ConsumesRequestCondition> {

View File

@@ -33,6 +33,7 @@ import org.springframework.web.server.ServerWebExchange;
* {@link ProducesRequestCondition} for those.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public final class HeadersRequestCondition extends AbstractRequestCondition<HeadersRequestCondition> {

View File

@@ -24,6 +24,7 @@ import org.springframework.http.MediaType;
* "produces" conditions.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public interface MediaTypeExpression {

View File

@@ -21,6 +21,7 @@ package org.springframework.web.reactive.result.condition;
* parameters and request header conditions in {@code @RequestMapping}.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public interface NameValueExpression<T> {

View File

@@ -29,6 +29,7 @@ import org.springframework.web.server.ServerWebExchange;
* a set parameter expressions with syntax defined in {@link RequestMapping#params()}.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public final class ParamsRequestCondition extends AbstractRequestCondition<ParamsRequestCondition> {

View File

@@ -38,6 +38,7 @@ import org.springframework.web.util.HttpRequestPathHelper;
* against a set of URL path patterns.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public final class PatternsRequestCondition extends AbstractRequestCondition<PatternsRequestCondition> {

View File

@@ -41,6 +41,7 @@ import org.springframework.web.server.ServerWebExchange;
* Regardless of which syntax is used, the semantics are the same.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public final class ProducesRequestCondition extends AbstractRequestCondition<ProducesRequestCondition> {

View File

@@ -26,9 +26,11 @@ import org.springframework.web.server.ServerWebExchange;
* to each other via {@link #compareTo(Object, ServerWebExchange)} to determine
* which is a closer match for a given request.
*
* @author Rossen Stoyanchev
* @param <T> the type of objects that this RequestCondition can be combined
* with and compared to
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public interface RequestCondition<T> {

View File

@@ -33,6 +33,7 @@ import org.springframework.web.server.ServerWebExchange;
* If they are not, a {@link ClassCastException} is raised.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public final class RequestConditionHolder extends AbstractRequestCondition<RequestConditionHolder> {

View File

@@ -34,6 +34,7 @@ import org.springframework.web.server.ServerWebExchange;
* against a set of {@link RequestMethod}s.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public final class RequestMethodsRequestCondition extends AbstractRequestCondition<RequestMethodsRequestCondition> {

View File

@@ -1,6 +1,5 @@
/**
* Support for mapping requests based on a
* {@link org.springframework.web.reactive.result.condition.RequestCondition
* RequestCondition} type hierarchy.
* {@link org.springframework.web.reactive.result.condition.RequestCondition}
* and implementations for matching requests based on different criteria.
*/
package org.springframework.web.reactive.result.condition;

View File

@@ -49,9 +49,11 @@ import org.springframework.web.server.ServerWebExchange;
* <p>For each registered handler method, a unique mapping is maintained with
* subclasses defining the details of the mapping type {@code <T>}.
*
* @author Rossen Stoyanchev
* @param <T> The mapping for a {@link HandlerMethod} containing the conditions
* needed to match the handler method to incoming request.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public abstract class AbstractHandlerMethodMapping<T> extends AbstractHandlerMapping implements InitializingBean {

View File

@@ -25,6 +25,7 @@ import org.springframework.web.server.ServerWebExchange;
/**
* @author Rossen Stoyanchev
* @since 5.0
*/
public interface HandlerMethodArgumentResolver {

View File

@@ -41,6 +41,7 @@ import org.springframework.web.server.ServerWebExchange;
/**
* @author Rossen Stoyanchev
* @since 5.0
*/
public class InvocableHandlerMethod extends HandlerMethod {

View File

@@ -47,6 +47,7 @@ import org.springframework.web.util.HttpRequestPathHelper;
* </ol>
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public final class RequestMappingInfo implements RequestCondition<RequestMappingInfo> {

View File

@@ -51,6 +51,7 @@ import org.springframework.web.server.UnsupportedMediaTypeStatusException;
* the mapping between a request and a handler method.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public abstract class RequestMappingInfoHandlerMapping extends AbstractHandlerMethodMapping<RequestMappingInfo> {

View File

@@ -53,6 +53,7 @@ import org.springframework.web.server.UnsupportedMediaTypeStatusException;
* failure results in an {@link ServerWebInputException}.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public abstract class AbstractMessageConverterArgumentResolver {

View File

@@ -40,6 +40,7 @@ import org.springframework.web.server.ServerWebExchange;
* to the response with {@link HttpMessageConverter}.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public abstract class AbstractMessageConverterResultHandler extends ContentNegotiatingResultHandlerSupport {

View File

@@ -53,6 +53,7 @@ import org.springframework.web.server.ServerWebInputException;
* {@link ConfigurableBeanFactory} must be supplied to the class constructor.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public abstract class AbstractNamedValueMethodArgumentResolver implements HandlerMethodArgumentResolver {

View File

@@ -34,6 +34,7 @@ import org.springframework.web.server.ServerWebInputException;
* does not exist.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class CookieValueMethodArgumentResolver extends AbstractNamedValueMethodArgumentResolver {

View File

@@ -32,6 +32,7 @@ import org.springframework.web.server.ServerWebExchange;
* Language #{...} expressions.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class ExpressionValueMethodArgumentResolver extends AbstractNamedValueMethodArgumentResolver {

View File

@@ -38,6 +38,7 @@ import org.springframework.web.server.ServerWebExchange;
* {@code HttpMessageConverter}.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class HttpEntityArgumentResolver extends AbstractMessageConverterArgumentResolver
implements HandlerMethodArgumentResolver {

View File

@@ -27,6 +27,7 @@ import org.springframework.web.server.ServerWebExchange;
* Resolver for the {@link Model} controller method argument.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class ModelArgumentResolver implements HandlerMethodArgumentResolver {

View File

@@ -37,6 +37,7 @@ import org.springframework.web.server.ServerWebExchange;
* template name-value pairs.
*
* @author Rossen Stoyanchev
* @since 5.0
* @see PathVariableMethodArgumentResolver
*/
public class PathVariableMapMethodArgumentResolver implements HandlerMethodArgumentResolver {

View File

@@ -48,6 +48,7 @@ import org.springframework.web.server.ServerWebExchange;
* {@link Converter}.
*
* @author Rossen Stoyanchev
* @since 5.0
* @see PathVariableMapMethodArgumentResolver
*/
public class PathVariableMethodArgumentResolver extends AbstractNamedValueMethodArgumentResolver {

View File

@@ -29,6 +29,7 @@ import org.springframework.web.server.ServerWebInputException;
* Resolves method arguments annotated with an @{@link RequestAttribute}.
*
* @author Rossen Stoyanchev
* @since 5.0
* @see SessionAttributeMethodArgumentResolver
*/
public class RequestAttributeMethodArgumentResolver extends AbstractNamedValueMethodArgumentResolver {

View File

@@ -42,6 +42,7 @@ import org.springframework.web.server.ServerWebInputException;
* @author Sebastien Deleuze
* @author Stephane Maldini
* @author Rossen Stoyanchev
* @since 5.0
*/
public class RequestBodyArgumentResolver extends AbstractMessageConverterArgumentResolver
implements HandlerMethodArgumentResolver {

View File

@@ -38,6 +38,7 @@ import org.springframework.web.server.ServerWebExchange;
* values for a header, not only the first one.
*
* @author Rossen Stoyanchev
* @since 5.0
* @see RequestHeaderMethodArgumentResolver
*/
public class RequestHeaderMapMethodArgumentResolver implements HandlerMethodArgumentResolver {

View File

@@ -41,6 +41,7 @@ import org.springframework.web.server.ServerWebInputException;
* request header values that don't yet match the method parameter type.
*
* @author Rossen Stoyanchev
* @since 5.0
* @see RequestHeaderMapMethodArgumentResolver
*/
public class RequestHeaderMethodArgumentResolver extends AbstractNamedValueMethodArgumentResolver {

View File

@@ -53,6 +53,7 @@ import org.springframework.web.server.ServerWebExchange;
* Supports the invocation of {@code @RequestMapping} methods.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class RequestMappingHandlerAdapter implements HandlerAdapter, BeanFactoryAware, InitializingBean {

View File

@@ -38,6 +38,7 @@ import org.springframework.web.reactive.result.method.RequestMappingInfoHandlerM
* {@link RequestMapping @RequestMapping} annotations.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMapping
implements EmbeddedValueResolverAware {

View File

@@ -40,6 +40,7 @@ import org.springframework.web.server.ServerWebExchange;
* request parameters have multiple values.
*
* @author Rossen Stoyanchev
* @since 5.0
* @see RequestParamMethodArgumentResolver
*/
public class RequestParamMapMethodArgumentResolver implements HandlerMethodArgumentResolver {

View File

@@ -48,6 +48,7 @@ import org.springframework.web.server.ServerWebInputException;
* to provide access to all request parameters in the form of a map.
*
* @author Rossen Stoyanchev
* @since 5.0
* @see RequestParamMapMethodArgumentResolver
*/
public class RequestParamMethodArgumentResolver extends AbstractNamedValueMethodArgumentResolver {

View File

@@ -48,6 +48,7 @@ import org.springframework.web.server.ServerWebExchange;
* @author Stephane Maldini
* @author Sebastien Deleuze
* @author Arjen Poutsma
* @since 5.0
*/
public class ResponseBodyResultHandler extends AbstractMessageConverterResultHandler
implements HandlerResultHandler {

View File

@@ -42,6 +42,7 @@ import org.springframework.web.server.ServerWebExchange;
* safe to place it early in the order as it looks for a concrete return type.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class ResponseEntityResultHandler extends AbstractMessageConverterResultHandler
implements HandlerResultHandler {

View File

@@ -31,6 +31,7 @@ import org.springframework.web.server.ServerWebInputException;
* Resolves method arguments annotated with an @{@link SessionAttribute}.
*
* @author Rossen Stoyanchev
* @since 5.0
* @see RequestAttributeMethodArgumentResolver
*/
public class SessionAttributeMethodArgumentResolver extends AbstractNamedValueMethodArgumentResolver {

View File

@@ -1,6 +1,7 @@
/**
* Support for various programming model styles including the invocation of
* different types of handlers (e.g. annotated controllers, simple WebHandler,
* etc) as well as result handling (@ResponseBody, view resolution, etc).
* different types of handlers, e.g. annotated controller vs simple WebHandler,
* including the handling of handler result values, e.g. @ResponseBody, view
* resolution, and so on.
*/
package org.springframework.web.reactive.result;

View File

@@ -24,6 +24,7 @@ import org.springframework.beans.factory.InitializingBean;
* holding the URL that a View wraps, in the form of a "url" bean property.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public abstract class AbstractUrlBasedView extends AbstractView implements InitializingBean {

View File

@@ -36,6 +36,7 @@ import org.springframework.web.server.ServerWebExchange;
/**
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public abstract class AbstractView implements View, ApplicationContextAware {

View File

@@ -40,6 +40,7 @@ import org.springframework.web.server.ServerWebExchange;
* A {@link View} that delegates to an {@link HttpMessageConverter}.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class HttpMessageConverterView implements View {

View File

@@ -50,7 +50,8 @@ import org.springframework.util.PatternMatchUtils;
*
* <p>Note: This class does not support localized resolution, i.e. resolving
* a symbolic view name to different resources depending on the current locale.
* * @author Rossen Stoyanchev
* @author Rossen Stoyanchev
* @since 5.0
*/
public class UrlBasedViewResolver extends ViewResolverSupport implements ViewResolver, InitializingBean {

View File

@@ -36,6 +36,7 @@ import org.springframework.web.server.ServerWebExchange;
* any existing {@code Encoder} to render alternate media types.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public interface View {

View File

@@ -71,6 +71,7 @@ import org.springframework.web.util.HttpRequestPathHelper;
* based on annotations (e.g. for {@code @ResponseBody}).
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class ViewResolutionResultHandler extends ContentNegotiatingResultHandlerSupport
implements HandlerResultHandler, Ordered {

View File

@@ -14,8 +14,8 @@ import reactor.core.publisher.Mono;
* ViewResolutionResultHandler}.
*
* @author Rossen Stoyanchev
* @since 5.0
* @see ViewResolutionResultHandler
*/
public interface ViewResolver {

View File

@@ -29,7 +29,7 @@ import org.springframework.util.Assert;
* Base class for {@code ViewResolver} implementations with shared properties.
*
* @author Rossen Stoyanchev
* @since 4.3
* @since 5.0
*/
public abstract class ViewResolverSupport implements ApplicationContextAware, Ordered {

View File

@@ -24,6 +24,7 @@ import freemarker.template.Configuration;
* used by {@link FreeMarkerView}.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public interface FreeMarkerConfig {

View File

@@ -57,6 +57,7 @@ import org.springframework.ui.freemarker.FreeMarkerConfigurationFactory;
* Note: Spring's FreeMarker support requires FreeMarker 2.3 or higher.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class FreeMarkerConfigurer extends FreeMarkerConfigurationFactory
implements FreeMarkerConfig, InitializingBean, ResourceLoaderAware {

View File

@@ -55,6 +55,7 @@ import org.springframework.web.server.ServerWebExchange;
* <p>Note: Spring's FreeMarker support requires FreeMarker 2.3 or higher.
*
* @author Rossen Stoyanchev
* @since 5.0
*/
public class FreeMarkerView extends AbstractUrlBasedView {

View File

@@ -25,7 +25,9 @@ import org.springframework.web.reactive.result.view.UrlBasedViewResolver;
* via the "viewClass" property. See {@link UrlBasedViewResolver} for details.
*
* @author Rossen Stoyanchev
*/public class FreeMarkerViewResolver extends UrlBasedViewResolver {
* @since 5.0
*/
public class FreeMarkerViewResolver extends UrlBasedViewResolver {
/**