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);
}
};
}