나는 Spring.net에서 ProxyFactoryObject를 통해 객체를 호출하려고하는데 문제가있다. 이제 공장에서 호출하는 객체에는 생성자 주입을 통해 참조로 다른 객체를 가져 오는 하나의 생성자가 있습니다. C# 코드에서 프록시를 호출하면 올바른 대상 객체가 프록시에서 반환되지만 initital 생성자 호출을 통해 무언가로 설정해야하는 내부 항목은 비어 있습니다. 이제 왜 이런 일이 일어나고 있는지 잘 모르겠습니다.Spring.net 생성자 삽입을 사용하는 객체에서 ProxyFactoryObject 사용하기
<objects xmlns="http://www.springframework.net">
<object name="MyMovieLister" id="MyMovieLister" type="SpringTestProgram.Classes.MovieLister, SpringTestProgram" singleton="false">
<!-- using cstor injection... -->
<constructor-arg index="0" ref="MyMovieFinder"/>
<constructor-arg index="1" value="2"/>
</object>
<object name="MyMovieFinder" id="MyMovieFinder" type="SpringTestProgram.Classes.MovieFinder, SpringTestProgram" singleton="false"/>
<object id="MyBeforeAdvisor"
type="Spring.Aop.Support.NameMatchMethodPointcutAdvisor, Spring.Aop">
<property name="Advice">
<object id="myBeforeAdvice"
type="SpringTestProgram.Classes.LoggingAdvice, SpringTestProgram"/>
</property>
<property name="MappedNames">
<list>
<value>FindAll</value>
</list>
</property>
</object>
<object name="MovieWorkerProxy" type="Spring.Aop.Framework.ProxyFactoryObject, Spring.Aop">
<property name="Target" ref="MyMovieLister" />
<!--<property name="TargetSource">
<object type="Spring.Aop.Target.PrototypeTargetSource, Spring.Aop">
<property name="TargetObjectName" value="MyMovieLister" />
</object>
</property>-->
<!--<property name="ObjectNames">
<list>
<value>MyMovieLister</value>
</list>
</property>-->
<property name="interceptorNames">
<list>
<value>MyBeforeAdvisor</value>
</list>
</property>
</object>
</objects>
그리고 아래 내가이 전화를해야 C# 코드는 다음과 같습니다 :
MY의 app.config 섹션은 다음과 같습니다 개체
IApplicationContext ctx = ContextRegistry.GetContext();
MovieLister myMovieLister = ctx.GetObject("MovieWorkerProxy") as MovieLister;
IList<string> myList = myMovieLister.FindMovies();
이제 클래스의 실제 실현하는 것이 정말 아니다 중요하지만 우리가 여기에 정말로 관심있는 유일한 클래스는 다음과 같습니다.
public class MovieLister
{
public MovieLister(IMovieFinder myMovieFinder, int i)
{
number = i;
movieFinder = myMovieFinder;
}
public IList<string> FindMovies()
{
return movieFinder.FindAll();
}
private int number;
private IMovieFinder movieFinder;
}
이제 i '왜 내 프록시 팩토리에서 위의 클래스를 호출 할 때 null로 설정된 유일한 생성자에 의해 설정된 필드 둘 다합니까? 누구든지 도울 수 있습니다 ......