Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.springframework.scheduling.annotation.Async;
- import org.springframework.scheduling.annotation.AsyncResult;
- import org.springframework.stereotype.Component;
- import org.springframework.transaction.annotation.Propagation;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.concurrent.Future;
- import java.util.function.*;
- @Component
- public class TransactionalMethodSupport {
- @Transactional
- public void execute(Runnable runnable) {
- runnable.run();
- }
- @Transactional
- public <T> T execute(Supplier<T> supplier) {
- return supplier.get();
- }
- @Transactional
- public <T> void execute(Consumer<T> consumer, T var1) {
- consumer.accept(var1);
- }
- @Transactional
- public <T, R> void execute(BiConsumer<T, R> consumer, T var1, R var2) {
- consumer.accept(var1, var2);
- }
- @Transactional
- public <T, R> R execute(Function<T, R> function, T var1) {
- return function.apply(var1);
- }
- @Transactional
- public <T, U, R> R execute(BiFunction<T, U, R> function, T var1, U var2) {
- return function.apply(var1, var2);
- }
- @Transactional(propagation = Propagation.REQUIRES_NEW)
- public void executeNew(Runnable runnable) {
- runnable.run();
- }
- @Transactional(propagation = Propagation.REQUIRES_NEW)
- public <T> T executeNew(Supplier<T> supplier) {
- return supplier.get();
- }
- @Transactional(propagation = Propagation.REQUIRES_NEW)
- public <T> void executeNew(Consumer<T> consumer, T var1) {
- consumer.accept(var1);
- }
- @Transactional(propagation = Propagation.REQUIRES_NEW)
- public <T, R> void executeNew(BiConsumer<T, R> consumer, T var1, R var2) {
- consumer.accept(var1, var2);
- }
- @Transactional(propagation = Propagation.REQUIRES_NEW)
- public <T, R> R executeNew(Function<T, R> function, T var1) {
- return function.apply(var1);
- }
- @Transactional(propagation = Propagation.REQUIRES_NEW)
- public <T, U, R> R executeNew(BiFunction<T, U, R> function, T var1, U var2) {
- return function.apply(var1, var2);
- }
- @Async
- @Transactional
- public void executeAsync(Runnable runnable) {
- runnable.run();
- }
- @Async
- @Transactional
- public <T> Future<T> executeAsync(Supplier<T> supplier) {
- return new AsyncResult<>(supplier.get());
- }
- @Async
- @Transactional
- public <T> void executeAsync(Consumer<T> consumer, T var1) {
- consumer.accept(var1);
- }
- @Async
- @Transactional
- public <T, R> void executeAsync(BiConsumer<T, R> consumer, T var1, R var2) {
- consumer.accept(var1, var2);
- }
- @Async
- @Transactional
- public <T, R> Future<R> executeAsync(Function<T, R> function, T var1) {
- return new AsyncResult<>(function.apply(var1));
- }
- @Async
- @Transactional
- public <T, U, R> Future<R> executeAsync(BiFunction<T, U, R> function, T var1, U var2) {
- return new AsyncResult<>(function.apply(var1, var2));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement