考虑注入bean作为其接口之一,或者通过在@enableAsync和/或@enablecaching上设置ProxyTargetClass=true强制使用基于CGLIB的代理。
我尝试了多种关于StackOverflow的解决方案,但都没有成功,特别是:
>
检查我是否确实调用了接口,而不是实现。
将@Component添加到SwitchUserFilter的顶部
将@resource更改为@autowired。
public interface AuditLogDao extends JpaRepository<AuditLog, String> {}
public interface AuditLogService {
AuditLog save(final AuditLog auditLog);
}
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引导,所以解释为什么它修复了问题将是赞赏的。
相信下面的代码会解决你的问题。将其添加到AuditLogServiceImplementation
中,并从AuditLogDAO中删除@resource
注释。
@Autowired
private ListableBeanFactory beanFactory;
@EventListener({ContextRefreshedEvent.class})
void contextRefreshedEvent() {
auditLogDao = beanFactory.getBean(AuditLogDao.class);
}
你也可以在过滤器中做一个类似的把戏,只要你觉得更舒服。
我不知道确切的问题是什么,但它是某种类似于循环依赖的问题。因此,通过手动导入该循环中受影响的任何bean,您可以解析该循环。您将在Spring创建所有其他bean之后设置这个特定的依赖项。
我用的是angular2 beta 15,在我的一个模板中我做到了: 但是,我得到了这个例外 因此,如何解决?有什么想法?
我正在尝试将AGM Angular谷歌地图(https://github.com/SebastianM/angular-google-maps)添加到我的Angular4项目中 指南是:https://github.com/SebastianM/angu 当我访问带有agm组件的页面时遇到的错误: 我已经确定/尝试过; 我的模块导入 在我的模块中向架构添加了CUSTOM_ELEMENTS_SCHE
问题内容: JDK Proxy类仅在工厂方法newProxyInstance()中接受接口。 是否有可用的解决方法或替代实施?如果我必须将方法提取到接口以使其能够与代理一起使用,则用例是有限的。我想包装它们以在运行时应用基于注释的动作。 问题答案: 您可以像这样使用cglib: 例如,这使您可以使用默认的实现方法来构建抽象类。但是您可以将增强器更改为所需的增强器。
本文向大家介绍一个简单JDK版动态代理,包括了一个简单JDK版动态代理的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了手动实现的一个简单JDK版动态代理,供大家参考,具体内容如下 一.实现步骤 1.根据目标类的接口类型生成代理类的java文件。 2.编译代理类java文件为.class字节码文件。 3.将编译好的字节码文件加载到jvm中。 4.生成代理类对象并返回。 二.代码实现 1
我升级我的混凝土5.7网站从PHP 5.6. x到7.0.4,并得到以下错误 触发这一点的函数本身就是一个具体的5函数。 我能做些什么来解决这个问题? PHP7.0。12-1黛布。苏里。org~trusty 1(cli)(NTS)版权所有(c)1997-2016 PHP Group Zend Engine v3。0.0,版权所有(c)1998-2016 Zend Technologies与Zend
我的系统是Linux Mint 18.3 Cinnamon 64位。 我已经使用软件管理器安装了IntelliJ-IDEA和Default-jdk(openjdk-8-jdk)。 甚至不确定如何使用从命令行启动IDEA,例如,测试问题是否与权限相关,因为它显然是通过FlatPak代理启动的。 看来这应该很简单。我不确定我做错了什么。