Desarrollador Java: pregunta de entrevista
¿Cómo funciona la autoconfiguración de Spring Boot?
La autoconfiguración de Spring Boot registra beans condicionalmente según classpath, propiedades y beans existentes; los beans del usuario suelen sustituir defaults y el informe de condiciones explica las decisiones.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
La autoconfiguración es un conjunto de clases @Configuration listadas en los starters y cargadas mediante el fichero de imports. Cada una está protegida por condiciones: @ConditionalOnClass revisa el classpath, @ConditionalOnProperty revisa propiedades, @ConditionalOnMissingBean comprueba que la aplicación no haya definido ya el bean. Como la configuración del usuario se procesa primero, definir tu propio DataSource u ObjectMapper reemplaza el predeterminado en lugar de duplicarlo. El informe de evaluación de condiciones, impreso con debug=true o vía actuator, lista cada coincidencia y no coincidencia con su motivo.
Ejemplo
Añadir spring-boot-starter-data-jpa y una URL de datasource basta para obtener un DataSource, un EntityManagerFactory y gestión de transacciones sin configuración explícita. Cuando un bean ObjectMapper propio desactivó sin querer el manejo de fechas de Spring Boot, el informe de condiciones mostró que JacksonAutoConfiguration se retiraba por existir un bean del usuario, y la solución fue un Jackson2ObjectMapperBuilderCustomizer en lugar de reemplazar el bean.
Errores frecuentes
- Copiar internos de la autoconfiguración a tu propia configuración en vez de personalizar con propiedades o customizers.
- Añadir starters que traen comportamientos no deseados, como valores de seguridad por defecto, y no notarlo hasta el despliegue.
- Depurar un bean ausente adivinando en lugar de leer el informe de evaluación de condiciones.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.