/* * DmitriyMX * 2017-04-09 */ package kinosearch.kinosearch3.webpp; import com.mongodb.Mongo; import com.mongodb.MongoClient; import kinosearch.kinosearch3.base.BaseRepository; import kinosearch.kinosearch3.base.MongoDBRepository; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver; import java.net.UnknownHostException; @Configuration @PropertySource({ "classpath:/application.properties", "file:application.properties" }) public class SpringConfig { @Bean public WebApp webapp(@Value("${webapp.host}") String host, @Value("${webapp.port}") int port) { return new WebApp(host, port); } @Bean public ViewResolver viewResolver() { FreeMarkerViewResolver viewResolver = new FreeMarkerViewResolver(); viewResolver.setContentType("text/html;charset=UTF-8"); viewResolver.setCache(true); viewResolver.setSuffix(".ftl"); return viewResolver; } @Bean public FreeMarkerConfigurer freemarkerConfig() { FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); freeMarkerConfigurer.setTemplateLoaderPath("classpath:/kinosearch/kinosearch3/webpp/"); return freeMarkerConfigurer; } @Bean public BaseRepository baseRepository(MongoOperations mongoOperations) { return new MongoDBRepository(mongoOperations); } @Bean public MongoOperations mongoOperations(Mongo mongo, @Value("${mongo.db}") String databaseName) { return new MongoTemplate(mongo, databaseName); } @Bean public Mongo mongo(@Value("${mongo.host}") String host, @Value("${mongo.port}") int port) throws UnknownHostException { return new MongoClient(host, port); } }