Spring Boot + Kotlin AutoProxyRegistrar causa la exception de Nullpointer

Hola a todos, estoy tratando de migrar un pequeño proyecto de arranque de spring de java 8 a kotlin. Me encontré con un problema donde tengo la siguiente class de configuration

@EnableCaching @Configuration open class CacheConfiguration : CachingConfigurer { @Bean override fun cacheManager(): CacheManager { return ConcurrentMapCacheManager() } @Bean override fun cacheResolver(): CacheResolver { return SimpleCacheResolver(cacheManager()) } /** * Simple Key Generator * @return not null */ @Bean override fun keyGenerator(): KeyGenerator { return SimpleKeyGenerator() } @Bean override fun errorHandler(): CacheErrorHandler { return SimpleCacheErrorHandler() } } 

Esta es la class real. Literalmente, esta es la primera y única class de kotlin en mi proyecto. Comenzar el proyecto ahora con Gradle bootRun da como resultado una exception de Nullpointer en

 AutoProxyRegistrar.java#L63 AnnotationAttributes candidate = AnnotationConfigUtils.attributesFor(importingClassMetadata, annoType); Object mode = candidate.get("mode"); <-- candidate is null 

Intenta recuperar los attributes de anotación, que funciona bien para las 2 annotations que proporcioné

 @EnableCaching @Configuration 

Aunque parece que kotlin agrega una nueva anotación llamada kotlin.Metadata que aparentemente no se puede procesar.

build.gradle

 buildscript { ext { ext.kotlin_version = '1.0.5-2' springBootVersion = '1.4.3.RELEASE' asciiDoctorVersion = '1.5.2' snippetsDir = file('build/generated-snippets') } repositories { jcenter() mavenCentral() maven { url "https://repo.spring.io/snapshot" } maven { url "https://repo.spring.io/milestone" } } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath("org.asciidoctor:asciidoctor-gradle-plugin:${asciiDoctorVersion}") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}") } } apply plugin: 'java' apply plugin: 'spring-boot' apply plugin: 'kotlin' apply plugin: 'org.asciidoctor.convert' sourceCompatibility = 1.8 targetCompatibility = 1.8 repositories { jcenter() mavenCentral() maven { url "https://repo.spring.io/snapshot" } maven { url "https://repo.spring.io/milestone" } } task wrapper(type: Wrapper) { gradleVersion = '2.14' } test { outputs.dir snippetsDir testLogging { events "passed", "skipped", "failed", "standardError" } } task stage { dependsOn build } asciidoctor { attributes 'snippets': snippetsDir inputs.dir snippetsDir dependsOn test } // Force ./gradlew cleanTest allprojects { tasks.matching { task -> task.name == "test" }.all { outputs.upToDateWhen { false } } } dependencies { compile(group: 'org.springframework.boot', name: 'spring-boot-starter') compile(group: 'org.springframework.boot', name: 'spring-boot-starter-web') compile(group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa') compile(group: 'org.springframework.boot', name: 'spring-boot-starter-actuator') compile(group: 'org.springframework.boot', name: 'spring-boot-starter-security') compile(group: 'org.springframework.security.oauth', name: 'spring-security-oauth2', version: '2.0.10.RELEASE') compile(group: 'org.springframework.security', name: 'spring-security-jwt', version: '1.0.4.RELEASE') compile(group: 'org.postgresql', name: 'postgresql', version: '9.4.1209.jre7') testCompile(group: 'com.jayway.restassunetworking', name: 'rest-assunetworking', version: '2.9.0') testCompile(group: 'org.springframework.boot', name: 'spring-boot-starter-test') } 

Muestra reproducible

Creé un pequeño repository para reproducir este problema. https://github.com/spring-projects/spring-framework-issues/pull/145 Y esta https://jira.spring.io/browse/SPR-15055

Este fue un error real que se solucionó aquí https://jira.spring.io/browse/SPR-15055