Size: a a a

2020 February 05

DS

Dmitriy Shilnikov in learn.java
А то тут две проблемы будет - как в тестах аспекты включить и работает ли аспект в принципе
источник

DS

Dmitriy Shilnikov in learn.java
Запусти в CommandLineRunner такое и проверь вначале
источник

Ю

Юрий in learn.java
Dmitriy Shilnikov
Ну ты можешь это всё в конфигурации этого теста сделать. По-моему, должно сработать.
заработало, а как теперь сделать так чтобы вызов метода в аспекте игнорировался?
источник

Ю

Юрий in learn.java
null возвращать?
источник

DS

Dmitriy Shilnikov in learn.java
Да
источник

Ю

Юрий in learn.java
кроме того что вызывался не прокси метод, а реальный помимо этого я забыл пометить аннотацией компонент аспект
источник

DS

Dmitriy Shilnikov in learn.java
Юрий
кроме того что вызывался не прокси метод, а реальный помимо этого я забыл пометить аннотацией компонент аспект
Ты же написал, что работает уже?
источник

Ю

Юрий in learn.java
Да , все работает ))))
источник

Ю

Юрий in learn.java
Dmitriy Shilnikov
Ты же написал, что работает уже?
@Override
   @Transactional
   public void message(...) {

если я из этого метода вызову в этом же классе метод с моей аннотацией, он так же вызовет реальный метод а не проксированный?
источник

Ю

Юрий in learn.java
а как вызвать именно проксированный метод?
источник

DS

Dmitriy Shilnikov in learn.java
Он проксированый вызовет.  Вообще твой подход с @Transactional работать не будет, насколько я понимаю
источник

DS

Dmitriy Shilnikov in learn.java
Т.е. так нельзя делать.
источник

Ю

Юрий in learn.java
почему?
источник

DS

Dmitriy Shilnikov in learn.java
Ну во-первых, ты же не знаешь, что раньше отработает @Transactional или твой аспект.
источник

DS

Dmitriy Shilnikov in learn.java
Во вторых, ты в отдельном потоке метод вызываешь, он там может и не найти транзакцию
источник

DS

Dmitriy Shilnikov in learn.java
Т.е. то, что ты делаешь, оно опасно )
источник

Ю

Юрий in learn.java
транзакция полюбому должна быть потому что идет сохранение объекта в бд (2 раза)
источник

DS

Dmitriy Shilnikov in learn.java
Ну начать транзакцию же не только через @Transactional можно
источник

Ю

Юрий in learn.java
а как?
источник

DS

Dmitriy Shilnikov in learn.java
Есть всякие TransactionTemplate. Но я вообще не знаю чего порекомендовать в данном случае. Насколько я знаю, у хибернейта всё сильно к потоку привязано. Во всяком случае, когда я пытался из разных потоков писать в хибернейт, у меня всё очень плохо работало.
источник