Java tutorial
/** * Copyright 2016 REPLACE ME OWNER (REPLACE ME YEAR) * * 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.homiefund.config; import org.homiefund.web.formatters.UserFormatter; import org.springframework.context.EnvironmentAware; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Description; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.PropertySource; import org.springframework.context.support.ReloadableResourceBundleMessageSource; import org.springframework.core.env.Environment; import org.springframework.format.FormatterRegistry; import org.springframework.validation.Validator; import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; import org.springframework.web.multipart.support.StandardServletMultipartResolver; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.i18n.CookieLocaleResolver; import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; import java.util.Locale; /** * Created by Dominik Szalai - emptulik at gmail.com on 20.9.2016. */ @Configuration @Import(ViewControllerConfiguration.class) @EnableWebMvc @ComponentScan({ "org.homiefund.web.controllers", "org.homiefund.web.support" }) @PropertySource("classpath:config/webapp.properties") public class MvcConfiguration extends WebMvcConfigurerAdapter implements EnvironmentAware { private Environment environment; @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/resources/") .setCachePeriod(environment.getProperty("web.cache.resources.time", Integer.class)); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/") .setCachePeriod(environment.getProperty("web.cache.webjars.time", Integer.class)); registry.addResourceHandler("/favicon.ico").addResourceLocations("/resources/favicon/favicon.ico") .setCachePeriod(31556926); } @Override public void addFormatters(FormatterRegistry registry) { registry.addFormatter(new UserFormatter()); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(localeChangeInterceptor()); } @Bean(name = "multipartResolver") public StandardServletMultipartResolver standardServletMultipartResolver() { return new StandardServletMultipartResolver(); } @Bean(name = "validator") public LocalValidatorFactoryBean localValidatorFactoryBean() { LocalValidatorFactoryBean lvfb = new LocalValidatorFactoryBean(); lvfb.setValidationMessageSource(reloadableResourceBundleMessageSource()); return lvfb; } @Override public Validator getValidator() { return localValidatorFactoryBean(); } @Bean(name = "messageSource") @Description("Message source for this context, loaded from localized 'messages_xx' files.") public ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource() { ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); messageSource.setBasenames("classpath:i18n/messages", "classpath:i18n/validator"); messageSource.setUseCodeAsDefaultMessage(true); return messageSource; } @Bean(name = "localeChangeInterceptor") public LocaleChangeInterceptor localeChangeInterceptor() { LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor(); localeChangeInterceptor.setParamName("lang"); return localeChangeInterceptor; } @Bean(name = "localeResolver") public CookieLocaleResolver cookieLocaleResolver() { CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver(); cookieLocaleResolver.setDefaultLocale(Locale.ENGLISH); return cookieLocaleResolver; } @Override public void setEnvironment(Environment environment) { this.environment = environment; } }