Togglz with Kotlin:在我的自定义 ActivationStrategy 中注入一些依赖项的问题

Togglz with Kotlin: Problem to inject some dependency in my custom ActivationStrategy

我已经在 META-INF/Services/ 中定义了引用我的自定义 ActivationStrategy 的文件,正如自定义策略的 Togglz 库所解释的那样 (https://www.togglz.org/documentation/activation-strategies.html),因为我需要解决它是否被激活通过另一个服务中的另一个逻辑。 现在如何注入我需要使用的服务?从尝试以下操作开始:

@Component
class ActivationStrategyByProfile(private val profileService : ProfileService) : ActivationStrategy {

    override fun getId(): String {
        return ID
    }

    override fun getName(): String {
        return NAME
    }

    override fun isActive(
        featureState: FeatureState,
        user: FeatureUser?
    ): Boolean {
        
        val profileId = user?.name
        return profileService.validateProfile(profileId)
    }
    ...

我在 /META-INF/services/org.togglz.core.spi.ActivationStrategy 中的文件包含:

com.saraza.application.config.ActivationStrategyByProfile

它returns下面的错误,提到我在文件中指定的引用,不包括参数,我的理解:

...ActivationStrategyByProfile Unable to get public no-arg constructor

如何注入服务的依赖项?是否可以通过更改JavaServiceLoader机制使用的扩展文件来实现?比如将服务指定为参数?

解决方案非常简单,配置允许您直接指定要实施的策略:

 @Bean
fun activationStrategyProvider(
    activationStrategies: List<ActivationStrategy>,
    activationStrategyByProfile: ActivationStrategyByProfile
): ActivationStrategyProvider? {
     val activationStrategyProvider = DefaultActivationStrategyProvider()
     activationStrategyProvider.addActivationStrategy(activationStrategyByProfile)
     return activationStrategyProvider
}