Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.tlantic.integration.authentication; import com.tlantic.integration.authentication.config.CustomMongoDBConvertor; import com.tlantic.integration.authentication.util.Auditor; import org.modelmapper.ModelMapper; import org.springframework.beans.factory.annotation.Autowire; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; import org.springframework.core.convert.converter.Converter; import org.springframework.data.domain.AuditorAware; import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.data.mongodb.config.EnableMongoAuditing; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.convert.CustomConversions; import org.springframework.data.mongodb.core.convert.DbRefResolver; import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver; import org.springframework.data.mongodb.core.convert.MappingMongoConverter; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @Configuration @EnableAutoConfiguration @EnableConfigurationProperties @ComponentScan @ImportResource({ "classpath*:spring-security-oauth2.xml" }) @EnableMongoAuditing public class AuthServerMain { @Bean public ModelMapper modelMapper() { return new ModelMapper(); } /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here ApplicationContext context = SpringApplication.run(AuthServerMain.class, args); } @Autowired private CustomMongoDBConvertor customMongoDBConvertor; @Autowired private MongoDbFactory mongoDbFactory; @Bean public CustomConversions customConversions() { List<Converter<?, ?>> converterList = new ArrayList<Converter<?, ?>>(); converterList.add(customMongoDBConvertor); return new CustomConversions(converterList); } @Bean public MappingMongoConverter mongoConverter() throws Exception { MongoMappingContext mappingContext = new MongoMappingContext(); DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory); MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mappingContext); mongoConverter.setCustomConversions(customConversions()); return mongoConverter; } @Bean(autowire = Autowire.BY_NAME, name = "mongoTemplate") public MongoTemplate customMongoTemplate() { try { return new MongoTemplate(mongoDbFactory, mongoConverter()); // a mongotemplate with custom convertor } catch (Exception e) { } return null; } @Bean public AuditorAware<String> myAuditorProvider() { return new Auditor(); } }