Beanの1つに@Cacheable注釈付きメソッドがあり、現在ログインしているユーザーIDをキャッシュのキーとして使用したいと思います。ただし、Spring Securityを使用しており、このBeanのインスタンス変数としてInjectedサービスがあり、SecurityContextHolder.getContext()。getAuthentication()を呼び出してユーザーIDを返します。したがって、@Cacheableメソッドに引数なしのコンストラクターがあります。注入されたサービスのメソッドから返されたユーザーIDをキャッシュのキーとして使用する方法はありますか?
@Service
public class MyServiceImpl implements MyService {
@Inject
private UserContextService userContextService;
@Override
@Cacheable("myCache")
public String getInformation() {
//use this as the key for the cache entry
String userId = userContextService.getCurrentUser();
return "something";
}
}
UserContextServiceの実装:
@Service
public class UserContextServiceImpl implements UserContextService {
public String getCurrentUser() {
return SecurityContextHolder.getContext().getAuthentication().getName();
}
}
この質問を見つけましたが、やりたいこととは少し異なります。この機能は静的メソッドでは不可能だと思います。