Аспект описывает касание и улучшение посредством аннотаций.
1 Требования к среде развития
Поскольку вы хотите использовать аннотации, убедитесь, что вы используете Java 5.0 и выше.
Представьте библиотеку классов, связанных с аспектом:
<Depective> <groupid> org.aspectj </GroupId> <artifactId> AspistJrt </artifactId> <sersion> $ {AspizeJ.version} </version> </dependency> <Dependency> <groupId> org.aspectj </GroupD> <strifactid> Aspectiver </artifactid> <sersion> $ {assivej.version} </version> </deperency> <Dependency> <groupId> org.aspectj </GroupId> <artifactId> AspectJtools </artifactId> <sersion> $ {AspectJ.Version} </version> </vehtifactId> ATMARIFACTID> ATMARIFACTID> ATMARID <sersion> $ {Aspistj.version} </version> </vehyederiation> <dependency> <groupid> aopalliance </GroupId> <artifactid> aopalliance </artifactid> <sersion> $ {aopalliance.version} </version> </jeperment> 2 Методы программирования
@Аспект // идентифицировать аспекты
открытый класс prerentaspect {/*** Enhanced Logic*/@before ("execution (* rent (..))") // Определение тангентных и типов улучшения public void beforerent () {System.out.println ("Начало выполнение действий по аренде"); }}Этот раздел - просто обычный Pojo, но аннотация @Aspepe добавлена.
@Before("execution(* rent(..))") означает, что тип @Before представляет собой предварительное усиление, а его содержание-это точечное выражение @AspectJ. Здесь это означает, что улучшение переплетается на методе Rent () целевого класса. Rent () может содержать любые входящие параметры и любое возвратное значение.
Разве не очень удобно для класса с @Aspect интегрировать касательную точку, тип улучшения и улучшенную логику перекрестного выреза за счет аннотации и кода? O (∩_∩) o ха -ха ~
ЕДИНЦИОННЫЕ Тесты:
AspectJProxyFactory Factory = новый AspistJProxyFactory (); // Установить целевой класс factory.setTarget (new user ()); // Добавить фабрику Facet Class Factory.Addaspect (prerentAspect.class); пользователь proxy = factory.getProxy (); String userId = "001";
Результат вывода:
-Запустите арендное действие-
Пользователь: аренда [Банк питания]
Пользователь: return [Power Bank]
3 Метод конфигурации
<!-Target Class-> <bean id = "user"/> <!-Face Class-> <bean/> <!-Автоматическое создание агента-> <bean/>>
ЕДИНЦИОННЫЕ Тесты:
ApplicationContext context = new ClassPathxMlApplicationContext (Spring.xml "); user user = (user) context.getbean (" user "); string userid =" 001 "; user.rent (userId); user.back (userId);Вывод точно такой же, как программа.
Он также может быть настроен на основе пространства имен схемы:
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: aop = "http://www.springframework.org/schema/aop" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.spramework.orgemabema/spers.4.0.s.5.0.spring-xpring-xpring-xpring-4. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd "> <!-AspectJ Drive-> <aop: AspectJ-autoproxy/> <!-целевой класс-> <Bean J Drive"/"/> <! <bean/> </beans>
Эта конфигурация проще. Фактически, автоматический прокси-режим был принят в пределах <aop:aspectj-atuoproxy/> o (∩_∩) o ха-ха ~
Атрибут proxy-target-class <aop:aspectj-atuoproxy/> по умолчанию является ложным, указывая на то, что улучшение сплетается с использованием технологии DINK Dynamic Dynamic Proxy; Если это значение верно, оно указывает на то, что улучшение переплетается с использованием технологии динамического прокси -сервера CGLIB. Если целевой класс не объявляет интерфейс, даже если proxy-target-class установлен на false, усиленный yo (∩_∩) o ха-ха ~
Для проектов, основанных на Java 5.0+, рекомендуется использовать AspectJ для настройки сокращения точек и улучшения, потому что это проще и прямо.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.