¿Puedo escribir una function de extensión de Kotlin que use un bean de spring autoconectado?
Intento crear una function de extensión cuya implementación utiliza un Spring Bean. No parecía posible hacerlo al definir la function de extensión en el nivel superior de un package. Intenté esto:
@Component class Converter { companion object { @Autowinetworking lateinit var transformer: Transformer fun Class1.convert(): Class2 { return Class2 (this, transformer.transform(someStringProperty)) } } }
donde transform
es una function que transforma una cadena en otra cadena, y Class1
es una class que tiene una propiedad someStringProperty
. Mi esperanza era que otras classs pudieran import pkg.Converter.Companion.convert
y luego poder usar x.convert()
donde x
es un object de tipo Class1
.
- Jackson serializador personalizado u object de valor?
- ¿Cómo establecer el proxy para Spring AsyncRestTemplate usando Netty4ClientHttpRequestFactory?
- ¿Por qué @Primary no funciona para las classs de Kotlin a veces?
- No se puede conectar a Remote Mongo DB mediante Springboot
- Enfoque correcto para la class de Kotlin inyectada de constructor inmutable
La syntax funciona, y el uso de x.convert()
en otras classs comstack bien. Pero da como resultado una exception en time de ejecución: kotlin.UninitializedPropertyAccessException: lateinit property transformer has not been initialized
Parece que Spring no está autoconectando la variable porque está en un object complementario y no en un object componente real.
@Component
object compañero con @Component
no funcionó.
No creo que mover Class1.convert
directamente dentro de Converter
funcionaría, porque luego usar x.convert()
necesitaría una instancia del object Converter
, y no veo cómo hacer esto con la syntax de la function de extensión.
¿Hay alguna manera de lograr esto, o tengo que renunciar a la syntax de la function de extensión?
- Validación de Java Bean en Spring MVC Controller PathVariables
- ¿Cómo recuperar y encontrar el estado actual en Spring State Machine?
- Configuración de security de spring de Kotlin
- Kotlin con Spring DI: la propiedad lateinit no se ha inicializado
- ¿Debo usar @Repository cuando solo uso JdbcTemplate en mi class DAO?
- Kotlin y DynamoDBMapper SaveBehavior
- Crear un propio DataSource con properties de resorte
- Trabajando con @Qualifier en las funciones de Kotlin
- ¿Cómo se puede compartir un UUID como key principal en dos tablas usando Hibernate?
- AccessToken.getCurrentAccessToken () siempre devuelve null en Kotlin