在 Spring 引导应用程序上下文中未找到 Bean

No Bean Found in Spring Boot application context

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@Configuration
@ConfigurationProperties("promotion")
public class PromotionConfig {
    private AppClientConfig appConfig;
}


@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AppClientConfig {
   private int readTImeout;
   private int writeTimeout;
}

当我尝试执行 @Autowire PromotionConfig 时抛出一个错误,指出没有找到 AppClientConfig 的合格 bean。

我知道会出现此错误,因为我在 AppClientConfig 中没有 @Component。

如何在不在 AppClientConfig 中添加 @Component 的情况下使其工作。我想保留它 Plain POJO class.

我的local.yml文件

promotion:
  appConfig:
    readTImeout: 10
    writeTimeout: 10

使用 Spring 您还有另一种方法:使用 Bean 配置:

@Bean
public AppClientConfig configureAppClientConfig(){
   return new AppClientConfig(); // You can use your own way to create the instance
}

注意:上面的bean配置应该在Spring配置中实现class.

最后,您需要调用 @Autowired:

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@Configuration
@ConfigurationProperties("promotion")
public class PromotionConfig {
    @Autowired
    private AppClientConfig appConfig;
}

您可以在非 spring 类 中静态加载 spring bean,如:

PromotionConfig PromotionConfig = ApplicationInitializer.getAppContext().getBean(PromotionConfig.class);