Аннотации, когда дело доходит до EJB, известны как выбор неявного подхода среднего класса по явному среднему подходу, когда вы используете аннотацию, которую вы настраиваете, что вам нужно от API , например, вам нужно вызвать транзакцию метод для банковского перевода: без использования аннотаций: код будет
transfer(Account account1, Account account2, long amount)
{
// 1: Call middleware API to perform a security check
// 2: Call middleware API to start a transaction
// 3: Call middleware API to load rows from the database
// 4: Subtract the balance from one account, add to the other
// 5: Call middleware API to store rows in the database
// 6: Call middleware API to end the transaction
}
при использовании аннотации вашего код не содержит громоздкого API не требует использовать средне- посуду услуги. Код чист и ориентирован на бизнес-логике
transfer(Account account1, Account account2, long amount)
{
// 1: Subtract the balance from one account, add to the other
}
Вы можете сделать некоторые действительно злые вещи с аннотациями. Например, если вы знаете Spring Framework и их аннотацию @Transactional, которая запускает транзакцию перед вызовом метода и откатами от исключения/ошибки и совершает успешную транзакцию. Он полностью поддерживает SOC-принцип (разделение озабоченности). Очень чистый ! Правила Java! :-) –
Это выглядит как 3 вопроса для меня. Второй сам по себе слишком широк. – Raedwald
Все аннотации по синтаксису выглядят как интерфейсы. Итак, как компилятор или JVM знает свою цель? Предположим, если мы берем @ Override -> выполняет проверку корректности метода или нет. @ Transactional, как объяснялось выше, выполняет транзакционные операции. Для всех этих аннотаций, где мы можем найти определение/логику? –