aop 설정 재질문합니다.
- 작성자 :
- 차*성
- 작성일 :
- 2014-04-22 11:18:27
- 조회수 :
- 640
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
답변잘 받아보았습니다. 하지만..
아래에 써주신 답변이 이해가 되질 않습니다.
간략하게 다시 적어서 질문드립니다.
egov2.7 설치후 egovFramework Web Project를 템플릿을 포함하여 생성하였습니다.
기본 템플릿환경에 context-aspect.xml 마지막에 아래의 로직만 추가 하였습니다.
<bean id="loggerManage" class="egovframework.cmm.LoggerManageAspect" />
<aop:config>
<aop:aspect id="logPrintService" ref="loggerManage">
<aop:around pointcut="execution(* egovframework..impl.*Impl.*(..))
or execution(* egovframework..impl.*DAO.*(..))" method="logPrint" />
</aop:aspect>
</aop:config>
위의 로직 추가후 was 구동시 에러가 발생합니다.
Impl 만 pointcut 설정시 잘 구동 됩니다. DAO 부분이 error가 발생합니다.
에러 로그는 아래와 같습니다.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sampleService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'sampleDAO' must be of type [egovframework.example.sample.service.impl.SampleDAO], but was actually of type [com.sun.proxy.$Proxy10]
답변 부탁드립니다.
아래에 써주신 답변이 이해가 되질 않습니다.
간략하게 다시 적어서 질문드립니다.
egov2.7 설치후 egovFramework Web Project를 템플릿을 포함하여 생성하였습니다.
기본 템플릿환경에 context-aspect.xml 마지막에 아래의 로직만 추가 하였습니다.
<bean id="loggerManage" class="egovframework.cmm.LoggerManageAspect" />
<aop:config>
<aop:aspect id="logPrintService" ref="loggerManage">
<aop:around pointcut="execution(* egovframework..impl.*Impl.*(..))
or execution(* egovframework..impl.*DAO.*(..))" method="logPrint" />
</aop:aspect>
</aop:config>
위의 로직 추가후 was 구동시 에러가 발생합니다.
Impl 만 pointcut 설정시 잘 구동 됩니다. DAO 부분이 error가 발생합니다.
에러 로그는 아래와 같습니다.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sampleService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'sampleDAO' must be of type [egovframework.example.sample.service.impl.SampleDAO], but was actually of type [com.sun.proxy.$Proxy10]
답변 부탁드립니다.
A
안녕하세요 프레임워크센터입니다.
이전에 올려주신 자료에는 aop설정에 대한 내용이 없어서 확인을 못했습니다.
일단 기본적으로 AOP는 inteface방식의 클래스에 작동되도록 되어 있습니다.
따라서 impl은 interface를 구현하여서 잘 되는 것이고 DAO는 일반 클래스라서 안되는 것입니다.
이런경우 confg옵션에서
<aop:config proxy-target-class="true">
이런식으로 설정을 한 후 다시 시도해 보시기 바랍니다.
수고하세요.
이전에 올려주신 자료에는 aop설정에 대한 내용이 없어서 확인을 못했습니다.
일단 기본적으로 AOP는 inteface방식의 클래스에 작동되도록 되어 있습니다.
따라서 impl은 interface를 구현하여서 잘 되는 것이고 DAO는 일반 클래스라서 안되는 것입니다.
이런경우 confg옵션에서
<aop:config proxy-target-class="true">
이런식으로 설정을 한 후 다시 시도해 보시기 바랍니다.
수고하세요.