저는 첫 번째 java struts2 webapp에서 작업 중이며 호출되는 임의의 클래스에 빈 매개 변수를 삽입 할 수 있기를 원합니다. 하지만 클래스에서 applicationContext beans를 사용하는 방법은 무엇입니까?
이의 내가 내 applicationContext.xml 파일이 빈 있다고 가정 해 봅시다 ... 난 단지 스트럿 액션 클래스와 함께이 작업을 수행 할 수 있다는 것을 발견 :<bean id="BeanTest" class="BeanTest">
<property name="test" value="someval" />
</bean>
나는 BeanTest라는 스트럿츠의 액션 클래스 설정이있는 경우 (그렇게), setter (public void setTest())를 추가하면 테스트 매개 변수가 설정되고 액세스 할 수 있습니다.
import com.opensymphony.xwork2.ActionSupport;
public class BeanTest extends ActionSupport{
private String test;
public String execute(){
String str = getTest(); // returns "someval"
return "success";
}
public void setTest(String test){
this.test = test;
}
public String getTest(){
return test;
}
}
그러나,이 전과 같이 BeanTest2에 콩을 변경 가정 해 봅시다 :
<bean id="BeanTest2" class="BeanTest2">
<property name="test" value="someval" />
</bean>
그리고 독립 클래스과 같이이 : 나는 BeanTest2의 인스턴스를 만드는 경우
public class BeanTest2{
private test;
public void setTest(String test){
this.test = test;
}
public String getTest(){
return test;
}
}
BeanTest에서 getTest를 호출하면 항상 null을 리턴한다. 나는 임의의 클래스를 가리킬 수 있습니다 그 클래스는 항상 내가 (내가 그들을 위해 setter를 만든 가정) 세트 어떤 콩 매개 변수를 얻을 수 있도록 애플리케이션 컨텍스트 내 bean을 설정하고 싶은 무엇
import com.opensymphony.xwork2.ActionSupport;
public class BeanTest extends ActionSupport{
public String execute(){
BeanTest2 bt = new BeanTest2();
String str = bt.getTest(); //returns null, but I want "someval"
return "success";
}
}
. 불행하게도, struts 액션 클래스 만이 bean 프라퍼티를 얻을 수있다. 모든 것이 설정되지 않습니다.
이 질문은 확실합니까? 나는 콩 작동 방식에 대해 확실한 것을 놓치고있는 것처럼 느껴진다.
BeanTest에 Bean을 설정하고 결과 매개 변수를 BeanTest2 생성자에 전달하는 유일한 방법은 무엇입니까? BeanTest2 (테스트)와 비슷합니다. ? –
@Adam, 그렇게 할 수도 있고 BeanTest2를 직접 BeanTest에 삽입 할 수도 있습니다 (편집 된 답변 참조). ApplicationContext 인스턴스에 대한 참조를 가져 와서 BeanTest2를 직접 가져올 수 있습니다. –
@Juha, BeanTest에 문자열 "beanTest2"를 전달하지 않으시겠습니까? –