2014-02-04 3 views
5

Я начинаю использовать Spring AOP для проекта, и я немного смущен насчет плетения. Я знаю, что Spring AOP имеет зависимость от AspectJweaver.jar, но, как говорится в документации, это не для ткачества, а просто для того, чтобы использовать некоторые из классов из этой банки.Содержит ли Spring AOP компиляцию или ткачество во времени?

Но мой вопрос: если он не использует AspectJ для плетения, имеет ли Spring AOP собственное плетение и выполняется ли оно во время загрузки или времени компиляции?

Соответствующая часть моего файла XML конфигурации Spring является:

<context:annotation-config /> 

<tx:advice id="txAdvice" transaction-manager="transactionManager"> 
    <tx:attributes> 
     <tx:method name="get*" read-only="true" /> 
     <tx:method name="*" /> 
    </tx:attributes> 
</tx:advice> 

<aop:config> 
    <aop:pointcut id="myaop" expression="execution(* my.package.*.*(..))" /> 
    <aop:advisor advice-ref="txAdvice" pointcut-ref="myaop" /> 
</aop:config> 

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
    <property name="dataSource" ref="dataSource" /> 
</bean> 
+0

Честно говоря, я понял это сейчас, но рад услышать ответы на подтверждение. Spring тоже не работает, он использует прокси, которые будут созданы во время выполнения. Звучит ли это правильно? – DaveJohnston

ответ

9

http://docs.spring.io/spring/docs/4.0.1.RELEASE/spring-framework-reference/htmlsingle/#aop-introduction-defn

Под 8.1.1, пункт ткачество, он говорит:

плетение: связывая аспекты с другой типы приложений или объекты до создать рекомендуемый объект. Это можно сделать во время компиляции (например, с помощью компилятора AspectJ), времени загрузки или во время выполнения. Spring AOP, , как и другие чистые Java AOP-структуры, выполняет плетение во время выполнения.

Spring не делает того же типа время загрузки ткачества как AspectJ, но работает на прокси, как описано в другой части документации:

http://docs.spring.io/spring/docs/4.0.1.RELEASE/spring-framework-reference/htmlsingle/#aop-understanding-aop-proxies

Edit: Просто увидел ваше комментарий, вы правы в этом предположении. В документации дается довольно полное объяснение того, как это работает. :)

Смежные вопросы