package com.juick.www.configuration; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; import com.juick.service.TagService; import com.juick.service.UserService; import com.juick.www.HelpService; import com.juick.www.controllers.PageTemplates; import com.juick.www.WebApp; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.caffeine.CaffeineCacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; import javax.annotation.Resource; import javax.inject.Inject; /** * Created by aalexeev on 11/22/16. */ @Configuration @PropertySource("classpath:juick.conf") @EnableCaching public class WwwAppConfiguration { @Resource private Environment env; @Inject private UserService userService; @Inject private TagService tagService; @Bean public WebApp webApp() { return new WebApp(env, templates(), userService, tagService); } @Bean public PageTemplates templates() { return new PageTemplates(); } @Bean public CaffeineCacheManager cacheManager() { return new CaffeineCacheManager("help"); } @Bean public HelpService helpService() { return new HelpService("help"); } @Bean public ObjectMapper jsonMapper() { ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); mapper.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT); mapper.registerModule(new Jdk8Module()); return mapper; } }