Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java IntelliJ Idea将bean标记为无法自动连线参数错误,但代码可以工作_Java_Spring_Spring Boot_Intellij Idea - Fatal编程技术网

Java IntelliJ Idea将bean标记为无法自动连线参数错误,但代码可以工作

Java IntelliJ Idea将bean标记为无法自动连线参数错误,但代码可以工作,java,spring,spring-boot,intellij-idea,Java,Spring,Spring Boot,Intellij Idea,我的项目中有以下类和配置: public class Op { public Op(Comp comp) { // Construct Op } } public interface OpFactory { public Op createOp(Comp comp); } 以及弹簧配置: @Configuration public class OpConfig { @Bean @Scope(SCOPE_PR

我的项目中有以下类和配置:

public class Op {       
    public Op(Comp comp) {
        // Construct Op
    }
}

public interface OpFactory {       
    public Op createOp(Comp comp);
}
以及弹簧配置:

@Configuration
public class OpConfig {

    @Bean
    @Scope(SCOPE_PROTOTYPE)
    Op op(Comp comp) {      // <--- Intellij marks this as error
        return new Op(composition);
    }

    @Bean
    OpFactory opFactory() {
        return new OpFactory() {
            @Override
            public Op createOp(Comp comp) {
                return op(comp);
            }
        };
    }

}

我不需要comp自动连线,事实上我不能让它自动连线,因为我在运行时根据用户输入构建它。

好吧,IntelliJ所说的是正确的,因为你承认你的comp只是一个pojo,你没有自动连线它。因此,当spring尝试根据

@Bean
@Scope(SCOPE_PROTOTYPE)
Op op(Comp comp) {      // <--- Intellij marks this as error
    return new Op(composition);
}
那为什么不工作呢D
主要的问题是您的使用情况,如果您有一个工厂返回任何对象,它就不能返回一个bean。Bean本身是单例的,在这里您的配置应该相应地改变。所以我想你需要类似上面的东西。

查看答案。可能是个傻瓜@是阿布杜拉汗吗?错误本身很好,因为问题说他没有自动连线Comp。@Damith-我已经更新了我的问题,
Comp
不需要(在本用例中不能)自动连线Hanks,我已经更新并澄清了我的问题。还要注意,
Op
prototype
,因此我们可以有多个bean,每个bean都有不同的
comp
@Bean
@Scope(SCOPE_PROTOTYPE)
Op op(Comp comp) {      // <--- Intellij marks this as error
    return new Op(composition);
}
Op op(Comp comp) {     
    return new Op(composition);
}

@Bean
OpFactory opFactory() {
    return new OpFactory() {
        @Override
        public Op createOp(Comp comp) {
            return op(comp);
        }
    };
}