Я использую кэширование redis и аннотации весенней загрузки [@Cacheable and @CahePut], я создал транзакцию RedisManager, которая будет использовать внешнюю транзакцию [callee of caching layer]
@Bean
public RedisCacheManager cacheManager() {
RedisCacheManager rcm =
RedisCacheManager.builder(redisConnectionFactory())
.cacheDefaults(cacheConfiguration())
.transactionAware()
.build();
return rcm;
}
при тестировании какниже я использую встроенный redis -:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureTestDatabase
@Transactional
public class RoleServiceImplTest extends TestingProfile {
@Before
public void setup() throws Exception {
//setup server and services
redisServer = new RedisServer(redisPort);
redisServer.start();
}
@Test
public void getUsersForRoleForTemplateRole() {
// call to caching layer methods directly annotated with @Cachable
}
... Оба раза [с @Transactional и без него] пружинные вызовы cache.put(key,result)
без исключения, но они сохраняют значения только в случае без @Transactional.
Не могу найти много в интернете, спасибо любой помощи заранее.