tutorial microservicios microservicio entre ejemplo crear comunicacion spring-boot spring-data spring-data-mongodb

spring boot - microservicios - ¿Cómo personalizar MappingMongoConverter(setMapKeyDotReplacement) en Spring-Boot sin romper la configuración automática?



microservicios spring boot pdf (2)

Esa es la forma correcta de hacerlo. El MappingMongoConverter se anota con @ConditionalOnMissingBean(MongoConverter.class) , por lo que agregar su propio bean MappingMongoConverter hará que la configuración automática retroceda a favor de su convertidor personalizado.

Una corrección menor: no es necesario que llame a mongoConverter.afterPropertiesSet() . El contenedor lo llamará por ti.

¿Cómo podría personalizar el MappingMongoConverter dentro de mi Spring-Boot-Application (1.3.2.RELEASE) sin cambiar ninguno de los mongo-cosas que se autoconfiguran con spring-data?

Mi solución actual es:

@Configuration public class MongoConfig { @Autowired private MongoDbFactory mongoFactory; @Autowired private MongoMappingContext mongoMappingContext; @Bean public MappingMongoConverter mongoConverter() throws Exception { DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoFactory); MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mongoMappingContext); //this is my customization mongoConverter.setMapKeyDotReplacement("_"); mongoConverter.afterPropertiesSet(); return mongoConverter; } }

¿Es esta la manera correcta o rompo algunas cosas con esto?
¿O hay incluso una manera más simple de establecer mapKeyDotReplacement?


Me he encontrado con este problema en la última versión del arranque de primavera. Su enfoque no funcionó para mí o la única respuesta ... mi aplicación de arranque parecía ignorar mi convertidor de asignación personalizada.

Entonces, lo que hice en la clase de configuración me conecté automáticamente en el MappingMongoConverter que usa el arranque y luego establecí el setMapKeyDotReplacement en eso.

@Autowired private MappingMongoConverter mongoConverter; // Converts . into a mongo friendly char @PostConstruct public void setUpMongoEscapeCharacterConversion() { if(mongoConverter != null) { mongoConverter.setMapKeyDotReplacement("_"); } }