powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
18 сообщений из 18, страница 1 из 1
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39216176
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из доки(второго спринг)
авторThe Spring team's recommendation is that you only annotate concrete classes with the @Transactional annotation, as opposed to annotating interfaces. You certainly can place the @Transactional annotation on an interface (or an interface method), but this will only work as you would expect it to if you are using interface-based proxies. The fact that annotations are not inherited means that if you are using class-based proxies then the transaction settings will not be recognised by the class-based proxying infrastructure and the object will not be wrapped in a transactional proxy (which would be decidedly bad). So please do take the Spring team's advice and only annotate concrete classes (and the methods of concrete classes) with the @Transactional annotation.

Note: Since this mechanism is based on proxies, only 'external' method calls coming in through the proxy will be intercepted. This means that 'self-invocation', i.e. a method within the target object calling some other method of the target object, won't lead to an actual transaction at runtime even if the invoked method is marked with @Transactional!

Я не понял фразы

The fact that annotations are not inherited means that if you are using class-based proxies then the transaction settings will not be recognised by the class-based proxying infrastructure and the object will not be wrapped in a transactional proxy (which would be decidedly bad)

Аннотации не наследуются; это значит, что если ты используешь class-based прокси, то @Transactional не будет прочитан.

Не осознал причинно следственной связи. Помогите осознать
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39216181
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Ты бы ещепервый спринг изучал :)
2) Попробуй написать свой процессор аннотаций, где навесь аннотацию на интерфейс, и попробуй получить ее в наследнике
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39216190
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник1) Ты бы ещепервый спринг изучал :)


Да просто заинтересовался вопросом а нагуглил только для второго. не думаю, что кардинально что-то поменялось
забыл ник2) Попробуй написать свой процессор аннотаций, где навесь аннотацию на интерфейс, и попробуй получить ее в наследнике
в имплементаторе всмысле?
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39216193
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@Annotated
interface A {}
class B implements A {}

class C {
      main(){
           //Попробуй через рефлекшн узнать есть ли у класса B аннотация Annotated
      }
}
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39216194
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@Annotated
interface A {}
class B implements A {}

class C {
      main(){
           //Попробуй через рефлекшн узнать есть ли у класса B аннотация Annotated
      }
}



Ну у класса B и нет, это я понимаю.
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39216196
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник,

всё равно не понятно
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39216216
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@Annotated
interface A {}
class B implements A {}

class C {
      main(){
           //Попробуй через рефлекшн узнать есть ли у класса B аннотация Annotated
      }
}



Взять все интерфейсы и прочитать?

С другой стороны тот факт, что метод требует транзакцию- детали реализации, а не контракта!
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39216320
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Tomin
С другой стороны тот факт, что метод требует транзакцию- детали реализации, а не контракта!

по-моему в доке по другому написано.
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39216421
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я заметил что на новичков очень сильное впечатление производят Java-annotations.
Столкнувшись с этой технологией 1 раз они верят в нее как в черную магию и
пытаются тулить эти заклинания в те проекты, где Spring и любой другой
фреймворк даже рядом не был.
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39216863
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это в каком это спринге аннторировались классы транзакшнл? вродь методы ща аннотируются только? если в контексте транзакшнл речь идет разумеется.
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39216922
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonЯ заметил что на новичков очень сильное впечатление производят Java-annotations.
Столкнувшись с этой технологией 1 раз они верят в нее как в черную магию и
пытаются тулить эти заклинания в те проекты, где Spring и любой другой
фреймворк даже рядом не был.

Заметил, что умничать все горазды, а ответить никто не может.
Вопрос не ясен разве?
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39216924
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lor2это в каком это спринге аннторировались классы транзакшнл? вродь методы ща аннотируются только? если в контексте транзакшнл речь идет разумеется.
в 2-ом, 3-ем, 4-ом на данный момент)

в первом хз
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39216926
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39217063
lor2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и в чем скрытый смысл аннотировать транзакцией КЛАСС? ну это так вопрос, в целях самообразования.
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39217094
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lor2и в чем скрытый смысл аннотировать транзакцией КЛАСС? ну это так вопрос, в целях самообразования.

Это всего лишь shortcut того, что все методы будут транзакционными
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39217122
rdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник, а как @Validated на интерфейсе работает?
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39217441
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
up
...
Рейтинг: 0 / 0
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
    #39217725
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть базовый вопрос : по написанию метода equals

Josh Bloch on Design
https://www.artima.com/intv/bloch17.html

есть instanceof versus getClass in equals Methods

есть спринг в котором есть понятие прокси

YouTube Video
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]