gpt4 book ai didi

java - Spring 启动: The bean 'auditLogDao' could not be injected as a 'AuditLogDao' because it is a JDK dynamic proxy

转载 作者:行者123 更新时间:2023-12-02 09:22:15 24 4
gpt4 key购买 nike

我在我工作的 Spring Boot 项目中遇到以下错误:

The bean 'auditLogDao' could not be injected as a '{redactedpathwithcorporatename}.AuditLogDao' because it is a JDK dynamic proxy that implements: org.springframework.data.jpa.repository.JpaRepository

Action:

Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies by setting proxyTargetClass=true on @EnableAsync and/or @EnableCaching.

我在 StackOverflow 上尝试了多种解决方案,但都没有成功,具体来说:

  1. Checking that I am indeed calling the interface, not the implementation.

  2. 将@Component添加到SwitchUserFilter顶部

  3. 将@Resource 更改为@Autowired。

AuditLogDao.java

public interface AuditLogDao extends JpaRepository<AuditLog, String> {}

AuditLogService.java

public interface AuditLogService {
AuditLog save(final AuditLog auditLog);
}

AuditLogServiceImplementation.java

public class AuditLogServiceImplementation implements AuditLogService{

@Resource private AuditLogDao auditLogDao;

@Override
public AuditLog save(AuditLog auditLog) {
return auditLogDao.save(auditLog);
}
}

我实际想要使用该服务保存信息的文件

SwitchuserFilter.java

public class SwitchUserFilter
extends org.springframework.security.web.authentication.switchuser.SwitchUserFilter {
@Resource AuditLogService logService;
'''
logService.save(auditLog);
'''
}

我对 Spring Boot 比较陌生,因此如果能解释一下它解决问题的原因,我们将不胜感激。

最佳答案

我相信下面的代码可以解决您的问题。将其添加到 AuditLogServiceImplementation 并从auditLogDao 中删除@Resource 注释。

@Autowired
private ListableBeanFactory beanFactory;

@EventListener({ContextRefreshedEvent.class})
void contextRefreshedEvent() {
auditLogDao = beanFactory.getBean(AuditLogDao.class);
}

您也可以在过滤器中执行类似的技巧,只要您觉得更舒服即可。

我不知道确切的问题是什么,但这是某种类似循环依赖的问题。因此,通过手动导入在此循环中受影响的任何 bean,您可以解决该循环。您将在 Spring 创建所有其他 bean 之后设置这一特定依赖项。

关于java - Spring 启动: The bean 'auditLogDao' could not be injected as a 'AuditLogDao' because it is a JDK dynamic proxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58615334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com