|
|
|
Почему такое поведение транзакции?
|
|||
|---|---|---|---|
|
#18+
Используется Spring. Есть два класса, контроллер и сервис. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Почему если переставить аннотацию на метод testMethod, транзакция не начинается? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 11:14:46 |
|
||
|
Почему такое поведение транзакции?
|
|||
|---|---|---|---|
|
#18+
rdmПочему если переставить аннотацию на метод testMethod, транзакция не начинается? ) Уже обсуждали десяток раз. Вызов service.method(); идёт через Proxy. Proxy смотрит аннотацию, и начинает транзакцию. Если аннотации нет, то и транзакция не начинается. Вызов testMethod() идёт напрямую, без Proxy. Поэтому некому проверить аннотацию и начать транзакцию. Срочно читать Spring AOP. Варианта решения три. 1) Не делать так. Сделать иначе. Самый простой способ. 2) Заменить AOP через прокси на AOP через непосредственное инструментирование методов. Не помню умеет ли так Spring, надо читать. 3) Вместо this.testMethod() вызывать getMyProxy().testMethod(). Но это достаточно геморно сделать через Spring, так как нужно заинъектить в класс ссылку на самого себя (точнее на свой прокси). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 11:51:54 |
|
||
|
Почему такое поведение транзакции?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczrdmПочему если переставить аннотацию на метод testMethod, транзакция не начинается? ) Уже обсуждали десяток раз. Вызов service.method(); идёт через Proxy. Proxy смотрит аннотацию, и начинает транзакцию. Если аннотации нет, то и транзакция не начинается. Вызов testMethod() идёт напрямую, без Proxy. Поэтому некому проверить аннотацию и начать транзакцию. Срочно читать Spring AOP. Варианта решения три. 1) Не делать так. Сделать иначе. Самый простой способ. 2) Заменить AOP через прокси на AOP через непосредственное инструментирование методов. Не помню умеет ли так Spring, надо читать. 3) Вместо this.testMethod() вызывать getMyProxy().testMethod(). Но это достаточно геморно сделать через Spring, так как нужно заинъектить в класс ссылку на самого себя (точнее на свой прокси). Спасибо, я так и думал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2013, 12:57:01 |
|
||
|
Почему такое поведение транзакции?
|
|||
|---|---|---|---|
|
#18+
rdm, http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/index.html 9.6.1 Understanding AOP proxies Сделаю пометку для себя ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2013, 21:58:43 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38189497&tid=2129700]: |
0ms |
get settings: |
18ms |
get forum list: |
26ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
73ms |
get topic data: |
26ms |
get forum data: |
6ms |
get page messages: |
103ms |
get tp. blocked users: |
3ms |
| others: | 322ms |
| total: | 593ms |

| 0 / 0 |
