簡體   English   中英

在 Spring Boot 應用程序上下文中找不到 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。 我想保留普通的 POJO 類。

我的 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配置類中實現。

最后,您需要使用@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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM