2011-05-12 59 views
1

我在Spring中使用aspectJ類作爲異常處理方面。 我需要從spring bean中定義的屬性文件中讀取值。 目前我正在使用上下文閱讀屬性文件。 有沒有其他的選擇。前面我在使用spring aop時,代理對象自動讀取屬性文件而不通過上下文訪問。使用Spring檢索AspectJ類中的bean

Spring配置文件

<bean id="applicationProperties" 
    class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 
    <property name="location"> 
     <value>classpath:/resources/config/application.properties</value> 
    </property> 
</bean> 

public Properties exceptionProp = null; 

ExceptionHandlingAspect類(我必須使用上下文這裏閱讀化子性質)

public class ExceptionHamdlingAspect{ 

public void setExceptionProp(Properties exceptionProp) { 
    this.exceptionProp=exceptionProp; 
} 

@AfterThrowing(pointcut = "ExceptionHandlingAspect()", throwing = "ex") 
public void logAfterThrowingException(final JoinPoint currentJp, 
     Throwable ex) throws Exception { 

ApplicationContext ctx = AppContext.getApplicationContext(); 
this.exceptionProp=(Properties) ctx.getBean("applicationProperties"); 


PropertyReader.getValueForProperty(ex.getClass().getSimpleName(),exceptionProp); 
System.out.println("error values :"+errorString[0]+ errorString[1]); 


} 

} 

回答

3

您可以使用靜態aspectOf工廠方法線了您的方面(你看不到這種方法,它是由aspectj編譯器添加的)

<bean class="com.YourAspect" factory-method="aspectOf"> 
    <property name="exceptionProp" 
       value="classpath:path/to/propfile.properties" /> 
</bean> 

參考:

+0

感謝一如既往:) – Vish 2011-05-12 10:14:03

+0

@Vish沒有概率:-) – 2011-05-12 10:19:35

+0

我已經添加了新的[問題](HTTP:// stackoverflow.com/questions/6531722/not-able-to-use-request-scope-in​​-the-spring-config-file)。請繼續閱讀 – Vish 2011-06-30 08:07:28