package com.iailab.framework.idempotent.config; import com.iailab.framework.idempotent.core.aop.IdempotentAspect; import com.iailab.framework.idempotent.core.keyresolver.impl.DefaultIdempotentKeyResolver; import com.iailab.framework.idempotent.core.keyresolver.impl.ExpressionIdempotentKeyResolver; import com.iailab.framework.idempotent.core.keyresolver.IdempotentKeyResolver; import com.iailab.framework.idempotent.core.keyresolver.impl.UserIdempotentKeyResolver; import com.iailab.framework.idempotent.core.redis.IdempotentRedisDAO; import org.springframework.boot.autoconfigure.AutoConfiguration; import com.iailab.framework.redis.config.IailabRedisAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.core.StringRedisTemplate; import java.util.List; @AutoConfiguration(after = IailabRedisAutoConfiguration.class) public class IailabIdempotentConfiguration { @Bean public IdempotentAspect idempotentAspect(List keyResolvers, IdempotentRedisDAO idempotentRedisDAO) { return new IdempotentAspect(keyResolvers, idempotentRedisDAO); } @Bean public IdempotentRedisDAO idempotentRedisDAO(StringRedisTemplate stringRedisTemplate) { return new IdempotentRedisDAO(stringRedisTemplate); } // ========== 各种 IdempotentKeyResolver Bean ========== @Bean public DefaultIdempotentKeyResolver defaultIdempotentKeyResolver() { return new DefaultIdempotentKeyResolver(); } @Bean public UserIdempotentKeyResolver userIdempotentKeyResolver() { return new UserIdempotentKeyResolver(); } @Bean public ExpressionIdempotentKeyResolver expressionIdempotentKeyResolver() { return new ExpressionIdempotentKeyResolver(); } }