понедельник, 21 сентября 2015 г.

Магический код

Один монах из клана Следа Слона обнаружил, что его новый метод не обновляет базу данных, но и не кидает никаких исключений. Он обратился за помощью у учителю Бавану.

После быстрого изучения Баван заявил: "Автоматически созданный прокси-объект вашей службы не выполняет транзакцию, так как аннотация Transactional указана на закрытом вспомогательном методе, а не на доступном интерфейсном методе, который его вызывает".

"Я не понимаю", - сказал монах, - "что это за 'прокси-объект', о котором Вы говорите?"

Баван посмотрел на монаха с подозрением: "Опишите мне, как выполняются и отменяются транзакции в библиотеке AOP".

Монах пожал плечами: "Они выполняются автоматически".

Баван ударил монаха по голове: "Если бы я спросил Вас, как маг Императора заставляет кроликов исчезать, то Вы бы ответили 'с помощью магии'? Думайте, прежде чем говорить, или я покажу Вам, как можно заставить исчезнуть монаха".

Монах потёр голову: "Выходит, что сторонние библиотеки не освобождают нас от необходимости знать, как они устроены внутри? А как насчёт принципа Чёрного Ящика?"

Баван протянул руку за левое ухо монаха, достал из воздуха деревянную ложку и опять ударил ей монаха: "Когда кролика кладут в Чёрный Ящик и он там исчезает по команде, то у зрителей есть привилегия просто охать и ахать в изумлении. Но мы, стоя на сцене, должны знать, как выполняется фокус. Ценой аплодисментов является потеря наивности".

Original: The Magician's Code