Я был в твёрдой уверенности, что Spring работает через proxy-обёртки (оставим сейчас в стороне CGLIB).
Соответственно, при вызове второго метода, транзакция будет создана в обёртке ровно один раз.
Далее этот метод может в параллель (на ForkJoinPool) создавать ещё потоков, в которых будет вызывать updateDb, но там транзакции, как вы заметили, в ThreadLocal не будет. Поэтому дальше, по логике, updateDb либо свалится с ошибкой, из-за отсутствия транзакции, либо не запишет ничего в базу.
В каком месте и как тут создаётся ещё 100 транзакций? Сам метод update создаёт транзакцию, если её нет в threadLocal? Не встречал такого, можно подробней?
Если не ошибаюсь, спринг не рекомендует больше юзать WebSecurityConfigurerAdapter.configure, а рекомендует переопределять SecurityFilterChain и WebSecurityCustomizer
Я был в твёрдой уверенности, что Spring работает через proxy-обёртки (оставим сейчас в стороне CGLIB).
Соответственно, при вызове второго метода, транзакция будет создана в обёртке ровно один раз.
Далее этот метод может в параллель (на ForkJoinPool) создавать ещё потоков, в которых будет вызывать updateDb, но там транзакции, как вы заметили, в ThreadLocal не будет. Поэтому дальше, по логике, updateDb либо свалится с ошибкой, из-за отсутствия транзакции, либо не запишет ничего в базу.
В каком месте и как тут создаётся ещё 100 транзакций? Сам метод update создаёт транзакцию, если её нет в threadLocal? Не встречал такого, можно подробней?
Если не ошибаюсь, спринг не рекомендует больше юзать WebSecurityConfigurerAdapter.configure, а рекомендует переопределять SecurityFilterChain и
WebSecurityCustomizer
О, вопросы с подвохом ))
А нет, просто автор не в теме))
Холивар, anybody?