Java 如果解析bean时存在歧义,Spring会抛出异常吗
当存在多个具有相同类型的bean时,我可以让Spring抛出异常吗?当前的行为似乎是注入Java 如果解析bean时存在歧义,Spring会抛出异常吗,java,spring,dependency-injection,autowired,spring-java-config,Java,Spring,Dependency Injection,Autowired,Spring Java Config,当存在多个具有相同类型的bean时,我可以让Spring抛出异常吗?当前的行为似乎是注入null您需要将@Qualifier注释与@Annotated一起使用,以解决具有相同类型的不同bean之间的歧义。要限定的参数是bean的名称,它是根据用@bean注释的方法的名称自动设置的 @Autowired public RobotController (@Qualifier("gundam") RobotEngine robotEngine) 使用@bean(name=“myName”)或@bea
null
您需要将@Qualifier
注释与@Annotated
一起使用,以解决具有相同类型的不同bean之间的歧义。要限定的参数是bean的名称,它是根据用@bean
注释的方法的名称自动设置的
@Autowired public RobotController (@Qualifier("gundam") RobotEngine robotEngine)
使用@bean(name=“myName”)
或@bean@qualifier(“myName”)
声明bean时,还可以设置自定义名称或限定符。如果没有指定限定符,则可以使用注释@Primary
将其中一个bean设置为“默认”。您还可以创建从限定符继承的自定义注释,使代码更加美观
阅读,特别是部分。您需要使用
@限定符
注释和@注释
来解决具有相同类型的不同bean之间的歧义。要限定的参数是bean的名称,它是根据用@bean
注释的方法的名称自动设置的
@Autowired public RobotController (@Qualifier("gundam") RobotEngine robotEngine)
使用@bean(name=“myName”)
或@bean@qualifier(“myName”)
声明bean时,还可以设置自定义名称或限定符。如果没有指定限定符,则可以使用注释@Primary
将其中一个bean设置为“默认”。您还可以创建从限定符继承的自定义注释,使代码更加美观
阅读,特别是部分。您应该会得到一个错误,是的 发件人: 容器中的多个bean定义可能与要自动连接的setter方法或构造函数参数指定的类型匹配。对于数组、集合或映射,这不一定是问题。但是,对于期望单个值的依赖项,这种模糊性不是任意解决的。如果没有唯一的bean定义可用,将引发异常 您应该得到一个运行时异常,错误如下: 原因:org.springframework.beans.factory.nouniquebeandDefinitionException:未定义类型为[…]的限定bean:应为单个匹配bean,但找到2:
你应该得到一个错误,是的 发件人: 容器中的多个bean定义可能与要自动连接的setter方法或构造函数参数指定的类型匹配。对于数组、集合或映射,这不一定是问题。但是,对于期望单个值的依赖项,这种模糊性不是任意解决的。如果没有唯一的bean定义可用,将引发异常 您应该得到一个运行时异常,错误如下: 原因:org.springframework.beans.factory.nouniquebeandDefinitionException:未定义类型为[…]的限定bean:应为单个匹配bean,但找到2:
当我运行代码时:我得到的
null移动量为1000最后一步:1000
它不能为null,如果无法确定要注入哪个bean,您将得到一个异常。如果字段为null
则没有进行注入,基本上您有一个不同的错误。您到底在哪里得到null?当我运行该代码时:我得到这个null移动量为1000最后移动量:1000
它不能为null,如果无法确定要注入哪个bean,您将得到一个异常。如果字段为null
则没有进行注入,基本上您有一个不同的错误。实际上,我试图得到模糊错误。但是当我运行时,我没有得到任何错误。但是我在name
和moveRange
中得到空值。如果Spring在我的代码中检测到歧义,它会抛出一个错误,对吗?@fanjavaid-Ugh,学会更好地陈述你的问题。你应该问“当存在多个相同类型的bean时,我能让Spring抛出异常吗?”哦,对不起,我太担心我当前的结果而不是预期的结果。实际上我试图得到模糊性错误。但是当我运行时,我没有得到任何错误。但是我在name
和moveRange
中得到空值。如果Spring在我的代码中检测到歧义,它会抛出一个错误,对吗?@fanjavaid-Ugh,学会更好地陈述你的问题。您应该问“当存在多个相同类型的bean时,我能让Spring抛出异常吗?”哦,对不起,我太担心我当前的结果而不是预期的结果。