Я подключил к проекту кэширование через Spring Cache.
Сначала я добавил аннотацию:
@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableAsync
@EnableScheduling
@EnableTransactionManagement
@EnableJpaRepositories(repositoryFactoryBeanClass = MultiSelectJpaRepositoryFactoryBean.class)
@EnableCaching //Spring Cache
public class Application {
Потом создал бин:
@Bean("authCacheManager")
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager() {
@Override
protected Cache createConcurrentMapCache(String name) {
return new ConcurrentMapCache(
name,
CacheBuilder.newBuilder().expireAfterWrite(1, TimeUnit.DAYS).build().asMap(),
false
);
}
};
}
Я задал в бине время жизни кэша (1 день). Далее, я повесил аннотацию над нужным методом:
@Cacheable(value = "ldap", key = "#username")
public Authentication authenticateByLdap(String username, String password, User userDetails) {
Как я понял, при попытке повторно аутентифицироваться с совпадающим параметром username метод должен был вернуть закешированные данные. Но данные приложение по-прежнему входит в метод (это видно по логам).
Подскажите, что не так?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей