2013-04-04 4 views
4

스프링 xml 구성 파일에서 다음 기능을 구현할 수있는 간단한 방법이 있습니까? 대신새 객체를 만들고 메소드 스프링 구성을 호출하십시오.

Object obj = new MyObject(); 
obj.getData(); 

new MyObject().getData() 

나는 두번째 경우에 그것을 할 방법을 알고있다.

<bean id="obj" class="MyObject" /> 

<bean id="data" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
     <property name="targetObject"><ref local="obj" /></property> 
     <property name="targetMethod"><value>getData</value></property> 
</bean> 

단일 정의에서이 작업을 수행하는 방법이 있어야합니다. 제발 제안 해주세요.

답변

7

은 사용으로 간주 가지고 당신은 spring reference manual (54 페이지)에서 더 많은 정보를 찾을 수있는이

public class MyClass { 

     @Autowire 
     MyObject myObject; 

     pubic void myMethodofMyClass(){ 
     myObject.oneMethodOfMyObject(); 
     } 

} 

같은 것을 사용할 수 있습니다 익명의 콩은 MethodInvokingFactoryBean에 있습니까?

<bean id="data" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetObject"><bean class="MyObject" /></property> 
    <property name="targetMethod"><value>getData</value></property> 
</bean> 

이것은 중간 bean 정의가 없다는 것을 제외하면 기본적으로 가지고있는 것과 같습니다. MyObject 인스턴스가 사용자의 ApplicationContext에 있는지 여부는 확실하지 않으므로 거기에 필요하다면 살펴볼 수 있습니다.

+0

이것이 작동하는 경우 이것이 내가 찾고있는 것입니다. 나는 봄에 새로운 사람이다. 나는이 객체가 ApplicationContext에서 나에게 필요 없다고 생각한다. 그러나, 단지 후속 질문입니다, 실제로 ApplicationContext에 있다면, 어떻게 접근 할 수 있습니까? – sravanreddy001

+0

글쎄,'id'가 없으므로 이름으로 액세스 할 수 없습니다. 그것에 접근 할 수 있다면, autowiring을 입력하거나 클래스 이름으로 bean에 대한'ApplicationContext'를 요청해야합니다. –

+0

나는 그것이 작동하는지 확인했다. – sravanreddy001

1

@Autowire으로 시도해 볼 수 있습니다.

그래서 당신이 을 MyObject 빈을 필요로하는 클래스에서, 당신은

+0

가능하면 XML 정의를 단일로 병합하려고합니다. Java Object를 사용하고 싶지 않습니다. 나는 autowire 싶지 않아요. 이것이 가능한가? – sravanreddy001

관련 문제