以编程方式设置锁定超时Spring Boot JPA

时间:2018-11-09 18:18:22

标签: java spring spring-boot spring-data-jpa

我有

<button (click)="onClick()">{{stream.name}}</button>

以及

@Transactional(timeout = 600)
@Service
public class CustomerServiceImpl implements CustomerService {

    @Autowired
    private CustomerRepository customerRepository;

    @Override
    public void actOnCustomer(Long customerId) {
    ...

客户行似乎被锁定,并且超时值似乎具有适当的作用。

现在,我希望能够以编程方式和/或使用我的application.properties文件设置超时值。我已经看到一些在传递给public interface CustomerRepository extends CrudRepository<Customer, Long> { @Lock(LockModeType.PESSIMISTIC_WRITE) Optional<Customer> findById(Long id); 的{​​{1}}方法的属性中设置javax.persistence.lock.timeout的示例,但是我不确定如何最好地将EntityManager调用并入一个Spring信息库,似乎应该有更多的Spring-y方法(例如在application.properties中设置find,这似乎不起作用)。

那我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

我最终添加了

@Autowired
private Environment env;

@PostConstruct
public void configureJpaTransactionManager() {
    ((JpaTransactionManager) this.platformTransactionManager).setDefaultTimeout(
                Integer.parseInt(env.getProperty("transaction.timeout", "3")));
}

进入我的@SpringBootApplication注释的主要班级,该班级似乎可以胜任。不确定这是最好的方法。 (“ transaction.timeout”是我组成的属性名称。)