我有一个由 Impl
实现的抽象配置类 AbsAbs 有一个bean ImportantBean
我们导入 Imprt 配置。 class to Impl ,我需要在 Imprt
中使用 ImportantBean我该怎么做?
IntelliJ表示它无法自动装配
类似的东西:
@Configuration
@Import(Imprt.class)
public class Impl extends Abs {}
@Configuration
public abstract class Abs{
@Bean
public ImportantBean importantBean(){
return new ImportantBean();}
}
@Configuration
public class Imprt{
@Autowired
private ImportantBean importantBean;
}
答案 0 :(得分:1)
您的Imprt
配置类在自动装配时不知道从哪里获取ImportantBean
。您还无法确保在构建应用程序上下文并且已在Spring容器中加载bean (我假设您使用的是Spring框架)时,ImportantBean
应该在构建{{1}之前已经存在}}
要使配置类Imprt
接收Imprt
,
您需要@Import ImportantBean
类到Impl
,代码应该如下图所示实现 -
Imprt
答案 1 :(得分:0)
@Configuration
@Import(Imprt.class)
public class Impl extends Abs {}
@Configuration
public abstract class Abs{
@Bean
public ImportantBean importantBean(){
return new ImportantBean();}
}
public class Imprt{
@Autowired
private ImportantBean importantBean;
}
尝试删除课程Imprt
中的@Configuration。我不知道Imprt的作用,但如果不是配置,请执行此操作。
答案 2 :(得分:0)
我认为这是因为你创建了重要的Bean作为私有。
如果在Impl类中添加新的@Autowired importantBean,它将会工作,尽管IntelliJ会将其标记为错误。
我不确定,但我认为将私有变更为受保护也应该有效。
答案 3 :(得分:0)
一切正常github.com/vitalieb/springContexts 问题在于Intellij不了解哪个上下文配置用作main。 因此,唯一需要做的就是在Intellij中添加正确的上下文作为主要上下文。