Как я могу настроить AOP в ColdSpring 2.0?

Я хотел бы реализовать некоторые советники по методам до и после в Coldspring 2.0, и я хотел бы использовать новую схему для AOP и новую функцию автопроксирования. К сожалению, документация Narwhal для AOP в настоящее время является хитом. Кто-нибудь может привести пример файла конфигурации Coldspring 2.0, в котором используется схема AOP?

2 ответа

Решение

Я только что закончил еще один раздел в документации AOP, но пока приведу несколько примеров того, как начать работу.

Это пример настройки вокруг совета. Он вызывает метод timeMethod для таймера объекта, который соответствует точке execution(public * *(..)), что переводится как: выполнение метода, которое является общедоступным, которое возвращает все, что названо как угодно, и принимает любые аргументы любых типов. По сути, это соответствует всему.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.coldspringframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:aop="http://www.coldspringframework.org/schema/aop" 
    xsi:schemaLocation="http://www.coldspringframework.org/schema/beans http://coldspringframework.org/schema/coldspring-beans-2.0.xsd 
    http://www.coldspringframework.org/schema/aop http://www.coldspringframework.org/schema/coldspring-aop-2.0.xsd"
    >

<!-- AOP configuration -->  
<aop:config>
    <aop:aspect ref="timer">
        <aop:around method="timeMethod"
            pointcut="execution(public * *(..))"/>
    </aop:aspect>
</aop:config>


<bean name="timer" class="05_AOP.Timer" />
<bean name="longTime" class="05_AOP.LongTime" />

</beans>

Важно отметить, что, хотя Time.cfc является просто старым CFC, для того, чтобы он мог сделать общий совет, используемый метод должен принимать MethodInvocation в качестве аргумента, например, так:

public any function timeMethod(required MethodInvocation invocation)
{
     ...
}

Но вот вам пример использования AOP в CS2.

Вы все еще можете использовать MethodInterceptors и тому подобное, но вы будете использовать <aop:advisor> скорее, чем <aop:aspect>,

Но в целом, я сейчас работаю над документацией по CS2 AOP, поэтому она должна быть заполнена на следующий день или около того.

Другие вопросы по тегам