Spring.Net方面可能不適用於Asp.Net控制器嗎?Asp.Net MVC控制器:Spring.Net的聲明式AOP
我想在Controller的Action方法上配置事務,但代理似乎沒有觸發。
<object id="ControllerClassPointcut" type="Spring.Aop.Support.SdkRegularExpressionMethodPointcut, Spring.Aop">
<property name="patterns">
<list>
<value>xxx.Controllers.CompanyController.*</value>
</list>
</property>
</object>
<aop:config>
<aop:advisor pointcut-ref="ControllerClassPointcut" advice-ref="TxAdvice"/>
<!-- TxAdvice taken from ServiceContext -->
</aop:config>
<tx:advice id="TxAdvice" transaction-manager="TransactionManager">
<tx:attributes>
<tx:method name="*" propagation="Required"/>
</tx:attributes>
</tx:advice>
和CompanyController的操作方法是:
[HttpPost]
public virtual ActionResult Create(Guid id, CompanyonViewModel vm)
{
...
}
但我雖然切入點是公認的建議不會生效。如果我選擇另一個班級而不是控制器作爲切入點,它就可以工作。
對於某些方法的建議起作用。例如,用於存儲庫的setter。但Sprint.Net不認識到操作方法「創建」被稱爲
候選人是:'xxx.Controllers.CompanyController.set_CompanyService';模式是'xxx.Controllers.CompanyController。*'; matched = True 候選顧問[DefaultObjectFactoryPointcutAdvisor:pointcut [Spring.Aop.Support.SdkRegularExpressionMethodPointcut];諮詢對象= 'TxAdvice']接受TARGETTYPE [xxx.Controllers.CompanyController]
感謝您的幫助
相關:http://stackoverflow.com/questions/9114762/unobtrusive-aop-with-spring-net/9115510 – Marijn 2012-02-03 13:32:57