gpt4 book ai didi

java - Spring @Cacheable 不缓存公共(public)方法

转载 作者:行者123 更新时间:2023-11-30 07:14:57 24 4
gpt4 key购买 nike

我有以下方法;

    @Cacheable(value = "psgSiteToMap", key = "'P2M_'.concat(#siteName)")
public Map getSiteDetail(String siteName) {
Map map = new HashMap();
.....
//construct map variable here
.......
return map;
}

项目启动时,无法 Autowiring 该方法所属的类。如果我按以下方式更改上述方法;

    @Cacheable(value = "psgSiteToMap", key = "'P2M_'.concat(#siteName)")
private Map getSiteDetail(String siteName) {
Map map = new HashMap();
.....
//construct map variable here
................
return map;
}

public Map getSiteDetailPublic(String siteName) {
return this.getSiteDetail(siteName);
}

它有效。公共(public)方法的@Cacheable注解有什么限制吗?

提前致谢

最佳答案

默认情况下,Spring AOP 仅适用于公共(public)方法。您需要 AspectJ 和加载时间或编译时编织才能使其适用于私有(private)方法。

所以在您的情况下它有效意味着当您将 @Cacheable 移动到 private 方法时,根本不会创建代理并且有效是 Autowiring ,但不是缓存。

您可能没有在您的 XML 配置或其等效的注释属性中设置 proxy-target-class 属性。您能否添加您正在使用的 Spring 配置和类定义行。我对它是否实现任何接口(interface)感兴趣?然后我会用更多的细节来扩展我的答案。

关于java - Spring @Cacheable 不缓存公共(public)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18185209/

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