我面对的是Bean(...)没有资格被所有BeanPostProcess处理。我已经将问题缩小到@Configuration类中的@Bean方法,我认为这是罪魁祸首:
配置类
import io.micrometer.core.instrument.MeterRegistry;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.beans.factory.config.BeanPostProcessor;
@Configuration
@RequiredArgsConstructor
public class Config {
private final MeterRegistry meterRegistry;
@Bean
public BeanPostProcessor classABeanPostProcessor() {
return new BeanPostProcessor() {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof ClassA) {
SomeOtherStaticClasss.doSomething(meterRegistry);
}
return bean;
}
}
}
}
据我所知,BeanPostProcessor bean创建得相当快,需要过早地实例化MeterRegistry bean,这使得它不合格(因为BeanPostProcessor正在操作尚未注入的bean)。
我在博客上看到一篇文章,描述了一个非常类似的问题:https://blog.monosoul.dev/2021/04/02/who-stole-my-spring-boot-system-metrics/问题是,我不太理解产生“BadRestTemplateReplace”的@Bean方法是如何工作的,因为MetricsRestTemplateCustomizer(依赖于MeterRegistry Bean实例)也需要注入?
好的,我已经通过简单地使用@Lazy找到了一个解决方案(我还将类ABeanPostProcess定义提取为@Component):
@Component
public static class ClassABeanPostProcessor implements BeanPostProcessor {
private final MeterRegistry meterRegistry;
@Lazy
public ClassABeanPostProcessor(final MeterRegistry meterRegistry) {
this.meterRegistry = meterRegistry;
}
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof ClassA) {
SomeOtherStaticClasss.doSomething(meterRegistry);
}
return bean;
}
}
我有一个@Configuration注释类,它有@Bean注释方法。它们中的大多数只返回没有DI依赖项的新实例,例如: 但是一些bean需要构造函数注入,例如。 我该怎么做?
我已经玩弄了@scope注释(没有用),但我的理解是我不应该这么做。 提前感谢您提供的任何信息!:)
我正在运行一个JUnit测试,嗯,我的Spring启动项目,我是这样写的: 找到依赖项[com.br.suppcomm.ocp.dao.logindao]得[com.br.suppcomm.ocp.dao.logindao]:需要至少1个具有此依赖项自动候选资格得bean.依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(
问题内容: 我有一个发布功能,如下所示: 现在假设在某些时候对Projects进行了更改,结果是上面返回了一个不同的项目,因此Tasks.find将返回其他任务。但是,对项目所做的更改不会重新发布 任务 我已经使用了reactPublish,但事实证明该程序包存在问题(并且也没有任何单元测试)。因此,是否有一种简单的方法可以在项目更改时重新发布此发布功能? 问题答案: 通过调用安装软件包。 添加软
我正在使用spring开发一个程序,我面临着这个问题,它说: 根据我的观察,问题出在我的服务/服务实施中 服务: 和我的ServiceImpl 请帮助我解决问题,并提供您的解决方案,thx提前。
我已经尝试了以下问题中的解决方案,但在我的情况下都不起作用: 错误: XLSHTTPSMessageConverter: