반응형
@Configuration
public class CacheServiceConfiguration {
@Bean
@ConditionalOnExpression("'${cache.type}'=='local'")
public LocalCache localCache() {
return new LocalCache();
}
@Bean
@ConditionalOnBean(LocalCache.class)
public TokenRepository tokenLocalRepository(){
return new TokenLocalRepository(localCache());
}
@Bean
@ConditionalOnMissingBean(LocalCache.class)
public TokenRepository tokenRedisRepository(StringRedisTemplate stringRedisTemplate){
return new TokenRedisRepository(stringRedisTemplate);
}
@Bean
@ConditionalOnBean(LocalCache.class)
public RateLimitRepository rateLimitLocalRepository(){
return new RateLimitLocalRepository(localCache().getStringLong());
}
@Bean
@ConditionalOnMissingBean(LocalCache.class)
public RateLimitRepository rateLimitRedisRepository(){
return new RateLimitRedisRepository(new RedisTemplate<>());
}
}
@ConditionalOnBean(.class)
- 괄호안의 클래스 타입의 빈이 이미 생성되어 있는 경우, 해당 빈을 등록
@ConditionalOnMissingBean(.class)
- 괄호안의 클래스 타입의 빈이 없을 경우, 해당 빈을 등록
@ConditionalOnExpression(SpEL)
- SpEL 조건이 충족되면 빈 등록
반응형