ParagFlume
ParagFlume

Reputation: 979

setting up spring view resolver using spring-java-config

I am trying to setup view-resolver for spring using java-config. I have tried 3 different method with different config found in 3 different sites. All of them working fine. My question is that Is there any specific standard / method / signature / interface method to defining the view-resolver ?

@Bean 
public InternalResourceViewResolver setupViewResolver()  {
    InternalResourceViewResolver resolver =  new InternalResourceViewResolver ();
    resolver.setPrefix ("/WEB-INF/pages/");
    resolver.setSuffix (".jsp");
    resolver.setViewClass (JstlView.class);
    return resolver;
}

ref-link http://habrahabr.ru/post/226663/

@Bean
public InternalResourceViewResolver jspViewResolver() {
    InternalResourceViewResolver bean = new InternalResourceViewResolver();
    bean.setPrefix("/WEB-INF/pages/");
    bean.setSuffix(".jsp");
    return bean;
}

ref-link https://samerabdelkafi.wordpress.com/2014/08/03/spring-mvc-full-java-based-config/

@Bean
public ViewResolver contentNegotiatingViewResolver(ContentNegotiationManager manager) {
        List< ViewResolver > resolvers = new ArrayList< ViewResolver >();

        InternalResourceViewResolver r1 = new InternalResourceViewResolver();
        r1.setPrefix("/WEB-INF/pages/");
        r1.setSuffix(".jsp");
        r1.setViewClass(JstlView.class);
        resolvers.add(r1);

        JsonViewResolver r2 = new JsonViewResolver();
        resolvers.add(r2);

        ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();
        resolver.setViewResolvers(resolvers);
        resolver.setContentNegotiationManager(manager);
        return resolver;
}

ref-link http://fruzenshtein.com/spring-java-configurations/

Upvotes: 3

Views: 2059

Answers (1)

user3151168
user3151168

Reputation:

The answer is it depends on your requirements.

setupViewResolver and jspViewResolver do the same as long as JSTL is available on the classpath:

public InternalResourceViewResolver() {
    Class<?> viewClass = requiredViewClass();
    if (viewClass.equals(InternalResourceView.class) && jstlPresent) {
        viewClass = JstlView.class;
    }
    setViewClass(viewClass);
}

Whereas contentNegotiatingViewResolver shows a more complex example where you want to render the response depending on the request content type.

If you need to register just a specific view resolver you can shorten registration to a simple one liner in Spring 4.1:

@EnableWebMvc
@Configuration
public class HystrixMvcConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void configureViewResolvers(final ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/views/", ".jsp");
    }
}

ViewResolverRegistry supports builder methods for Velocity, Freemarker, Groovy templates and Tiles out of the box.

Upvotes: 3

Related Questions