Tag: byte buddy

在运行时生成的类中使用Kotlin对象

我正在使用ByteBuddy重新绑定另一个库的类,以便向其添加Spring依赖注入。 问题是我不能实例化用作拦截器的类,这意味着我不能使用Spring将ApplicationContext注入到拦截器中。 为了解决这个问题,我创建了一个对象StaticAppContext ,它通过实现ApplicationContextAware来获得注入的ApplicationContextAware : @Component object StaticAppContext : ApplicationContextAware { private val LOGGER = getLogger(StaticAppContext::class) @Volatile @JvmStatic lateinit var context: ApplicationContext override fun setApplicationContext(applicationContext: ApplicationContext?) { context = applicationContext!! LOGGER.info("ApplicationContext injected") } } 这是得到注入就好(我可以看到日志消息),但是当我尝试从拦截器访问ApplicationContext ,我得到kotlin.UninitializedPropertyAccessException: lateinit property context has not been initialized 。 在这个类中定义了重定义类和incerceptor的类: package nu.peg.discord.d4j import net.bytebuddy.ByteBuddy import net.bytebuddy.dynamic.ClassFileLocator import net.bytebuddy.dynamic.loading.ClassLoadingStrategy import net.bytebuddy.implementation.MethodDelegation […]