在spring boot应用程序上下文中找不到bean

r1wp621o  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(487)
@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,我如何使它工作。我想让它保持原汁原味。
我的local.yml文件

promotion:
  appConfig:
    readTImeout: 10
    writeTimeout: 10
a64a0gku

a64a0gku1#

可以在非spring类中静态加载Springbean,如下所示:

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

gxwragnw2#

使用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;
}

相关问题