АОП весной имеет {Советник, Совет, Pointcut, Joinpoint}
Как вы знаете, главная цель АОП развязку сквозными озабоченность логики (Aspect) из кода приложения, чтобы осуществить это весной мы используем (Advice/Advisor)
Pointcut используется для фильтрации, где мы хотим применить этот совет точно так же, как «все методы начинаются со вставки», поэтому исключаются другие методы, поэтому мы имеем в интерфейсе Pointcut {ClassFilter и MethodMatcher}
Итак, совет - это сквозная логическая реализация, а советник - t он советует плюс PointCut, если вы используете только совет, весна будет отображать его советнику и сделать pointcut TRUE, что означает, что вы ничего не блокируете. Вот почему, когда вы используете только совет, он применяется ко всем методам целевого класса, потому что вы их не фильтровали.
Но Joinpoint - это место в программе, вы можете думать об этом как отражение при доступе к объекту Class, а затем вы можете получить объект Method, тогда вы можете вызывать любой метод в этом классе, и именно так работает компилятор, если вы так думаете, вы можете представить себе Объединение.
Подсчет может быть с полем, конструктором или методом, но весной у нас есть точка соединения только с методами, поэтому весной у нас есть (до, после, бросает, вокруг) типы Joinpoint, все они относятся к местоположениям в класс.
Как я уже говорил, у вас может быть совет без pointcut (без фильтра), тогда он будет применяться ко всем методам или вы можете иметь советника, который является [советом + pointcut], который будет применяться к определенным методам, но вы можете " t иметь совет без точки соединения, такой как pointcut, вы должны указать его, поэтому весовые типы советов соответствуют тем же типам, что и точка соединения, поэтому, когда вы выбираете совет, вы неявно выбираете, какую точку соединения.
Чтобы завершить, совет является логикой реализации вашего аспекта для целевого класса, этот совет должен иметь точку соединения, например, перед вызовом, после вызова, после броска или вокруг вызова, тогда вы можете фильтровать, где именно вы хотите применить он использует pointcut для фильтрации методов или без pointcut (без фильтра), поэтому он будет применяться ко всем методам класса.
Awesome. Спасибо, что разделили статью. – Atul
Это должно быть отмечено как правильный ответ. Просто чтобы добавить дополнительную информацию, посмотрите на ответ Криги Уоллс ... http://www.coderanch.com/t/485525/Spring/Difference-Joint-Point-Point-Cut. – Victor
nice link @Victor, я добавляю эту ссылку к своему ответу – Premraj