gpt4 book ai didi

java - 注入(inject)枚举作为依赖项失败并出现 IllegalArgumentException,可能是由于代理所致

转载 作者:太空宇宙 更新时间:2023-11-04 13:50:38 25 4
gpt4 key购买 nike

我有一个 Spring bean,它的构造函数参数之一需要一个枚举。枚举是在上下文中创建的

@Bean
public MyEnum stage() {
return MyEnum.VALUE1; /// actually here is some logic implemented to determin what enum value should get returned.
}

当我启动 ApplicatioContext 时,出现以下异常

org.springframework.beans.BeanInstantiationException: Failed to instantiate [MyBean]: Illegal arguments for constructor; nested exception is java.lang.IllegalArgumentException: argument type mismatch
// .... more stuff
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
... 47 more

我认为这是因为 Spring 将枚举包装在代理中,我需要启用 AOP。但我不需要枚举周围的代理。

问题:

  1. 我认为枚举代理导致此问题正确吗?

  2. 如何避免这个问题?一种方法是禁用枚举的代理,但我该怎么做?

最佳答案

根据@chrylis 的评论,我认为(至少现在)没有“正确”的方法来解决这个问题。

作为一种解决方法,我不会 Autowiring 我的 bean,而是在上下文中显式创建它并调用逻辑来直接确定正确的枚举。由于有些 View 位置需要枚举,因此这至少对我有用。

如果我有时间,我会提交一个错误并使用其链接更新答案

关于java - 注入(inject)枚举作为依赖项失败并出现 IllegalArgumentException,可能是由于代理所致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30318932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com