|
|
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
собственно в документации http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/htmlsingle/spring-framework-reference.html#transaction-declarative-annotations Код: java 1. 2. 3. 4. 5. 6. 7. 8. но если есть классическая архитектура - Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. итд хочется либо в интерфейсе ставить над методами либо в абстрактном классе ... аннотации типа : Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. или все таки только над методами конкретного класса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 11:54 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
Atum1, Для чего в интерфенйсе ?! или абстрактном классе - чтобы декларативно распространить действие транзакций или логирования на всех кто будет использовать имплементацию ... так же как быть с mock объектами в тестах ? если аннотация будет над интерфейсом - то вроде как она будет и когда мы обернем интерфейс mock объектом ... а если в реализации - то нужного эффекта мы не получаем ?! так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 14:29 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
я не считаю себя большим специалистом по архитектуре и проектированию, но имхо транзакционность или кэш - это детали реализации, а не контракта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 14:35 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. http://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html Тут тоже они говорят да можно на интерфейсы ... но при этом нужно понимать какой механизм будет в приложении ... не с каждым будет работать ... согласен полностью что интерфейс это контракт ... и не следует его грузить аннотациями и декларативными обязаностямими . просто получается если аннотация стоит в интерфейсе - то все кто ее реализовал будет иметь некоторое задекларированное поведение ... это удобно - так как описал в одном месте и не забудешь проставить теже транзакции в имплементациях ... ну а тогда если интерфейс не подходит ... остается абстрактный класс ?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 15:09 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
вот тут же их пример : http://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html#cache-annotation-stereotype ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 15:11 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
Atum1просто получается если аннотация стоит в интерфейсе - то все кто ее реализовал будет иметь некоторое задекларированное поведение ... ну т.е. ты обещаешь атомарность на методе save у какого-нибудь FileSystemEntityPersister ;) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 17:28 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
chpasha, @Transactional/@Cacheable/@Post* на класс, @Validate/@Valid на интерфейс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 21:31 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
На интерфейс что должно прийти и что должно уйти, остальное на класс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 21:32 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
Вопросы "Что?" (интерфейс) и "Как?"(класс) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2016, 21:34 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
Atum1, Интересный вы человек. Сам спросил. Сам привел нужные цитаты. Сам ответил. В пору блог завести. Суть в том, что можно и так и так. Если не знаешь как лучше, то ставь на реализацию. Если знаешь что именно в твоем случае лучше на интерфейс и понимаешь последствия, то ставь на интерфейс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 08:19 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAtum1, Интересный вы человек. Сам спросил. Сам привел нужные цитаты. Сам ответил. В пору блог завести. Суть в том, что можно и так и так. Если не знаешь как лучше, то ставь на реализацию. Если знаешь что именно в твоем случае лучше на интерфейс и понимаешь последствия, то ставь на интерфейс. >Мне ответ понравился На интерфейс что должно прийти и что должно уйти, остальное на класс нужны какие то правила разделения , от которых нужно отталкиваться в декларативном программировании ... вот и их и пытаюсь выспросить :) ну т.е. ты обещаешь атомарность на методе save у какого-нибудь FileSystemEntityPersister ;) ? Это я не понял ... я обещаю у всех своих наследников одинаковое поведение ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 11:44 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
Atum1Это я не понял ... я обещаю у всех своих наследников одинаковое поведение ..."Обещать, не значит - жениться" ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 11:50 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovAtum1Это я не понял ... я обещаю у всех своих наследников одинаковое поведение ..."Обещать, не значит - жениться" ... @RolesAllowed({"ROLE_ADMIN"}) например - в интерфейсе лучше смотрится .. если есть некий абстрактный интерфейс - что дает гарантию что никто из программистов не забудет к примеру проставить @RolesAllowed({"ROLE_ADMIN"}) над методом delete ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 12:02 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
Atum1я обещаю у всех своих наследников одинаковое поведение ... Смотри. Есть контракт. Он обещает какое-то поведение. А есть поведение, которое контракт не обещает. Например ACID. В RDBMS он на месте. Но стоит тебе предложить реализацию под NoSQL и файловую систему, весь ACID идёт лесом. Но в контракте его явно нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2016, 12:02 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, можно вопрос? У меня есть класс. Класс проаннотирован как компонент Spring. Нужно ли для каждого такого класса делать интерфейс чтобы "уменьшить связанность?" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 12:17 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
May12можно вопрос? Кто же вам запретит? May12У меня есть класс. Класс проаннотирован как компонент Spring. Нужно ли для каждого такого класса делать интерфейс чтобы "уменьшить связанность?" Нет с таким подходом не нужно. Можно создать интерфейс с ограниченным набором методов, но это тоже не шибко поможет. Просто каждый раз когда у вас один класс использует другой, нужно задуматься, действительно ли эта связь необходима, или есть способ её избежать, переместив реализацию логики в определенный класс. Это трудно объяснять на пальцах. Нужен какой-то пример, который можно было бы исправить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 12:23 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
May12Blazkowicz, можно вопрос? У меня есть класс. Класс проаннотирован как компонент Spring. Нужно ли для каждого такого класса делать интерфейс чтобы "уменьшить связанность?" Да. нужно и это основная проблема при использовании DI паттерна через spring Почему так - потому что Вашего класса в рантайме не будет - будет прокси который будет обернут еще одним прокси итд ... чтобы потом не наступить на грабли WTF - пишите все через интерфейсы , не вы так ваш коллега наступит . тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 14:04 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
Atum1и это основная проблема при использовании DI паттерна через spring О какой версии Spring речь? Atum1Почему так - потому что Вашего класса в рантайме не будет ROFL Atum1 - будет прокси который будет обернут еще одним прокси итд ... Прокси на прокси сидит и интерфейсом погоняет. Классам даже места не нашлось. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 14:31 |
|
||
|
Spring Над чем ставить аннотации Над методами класса или интерфейса ?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAtum1и это основная проблема при использовании DI паттерна через spring О какой версии Spring речь? Atum1Почему так - потому что Вашего класса в рантайме не будет ROFL Atum1 - будет прокси который будет обернут еще одним прокси итд ... Прокси на прокси сидит и интерфейсом погоняет. Классам даже места не нашлось. Так? =) ну в самом простом случае да ) посмотрите к примеру во что превращается обычный enitiy после того как с ним поработает Хибер - сколько в нем всего интересного и ненужного появляется :) Я уже молчу про спринг :) и его BFPP итд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2016, 23:10 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=84&tid=2123572]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
17ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 298ms |

| 0 / 0 |
