sample03.xml
depends-on을 사용하면, 특정 객체를 먼저 생성할 수 있습니다.
bean b 코드를 먼저 작성했지만 depends-on을 a로 설정하였기 때문에, 생성은 a -> b 순서가 됩니다.
GlobalObject.java
package com.example.spring.basic02; public final class GlobalObject { private static Object value = null; //Class A, Class B의 String 값을 저장 private GlobalObject() { } public synchronized static void setValue(Object o) { value = o; } public static Object getValue() { return value; } }
GlobalObject Class에는 모든 인스턴스들이 공유하는 static 멤버변수와 set/get 함수가 있습니다.
A.java
package com.example.spring.basic02; public class A { public A() { GlobalObject.setValue("Undetermined"); //GlobalObject의 Object형식의 "Undetermined" String이 저장됨 } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("A"); //Undetermined sb.append("{}"); sb.append("GlobalObject.getValue()=").append(GlobalObject.getValue()).append("}"); return sb.toString(); } }
GlobalObject의 Object value 변수에 "Undetermined"라는 String 값을 저장합니다.
B.java
package com.example.spring.basic02; public class B { public B() { GlobalObject.setValue("Completed"); //GlobalObject의 Object형식의 "Completed" String이 저장됨 } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("B"); sb.append("{}"); sb.append("GlobalObject.getValue()=").append(GlobalObject.getValue()).append("}"); return sb.toString(); } }
GlobalObject의 Object value 변수에 "Completed"라는 String 값을 저장합니다.
Sample03.java
package com.example.spring.basic02; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; public class Sample03 { public static void main(String[] args) { XmlBeanFactory bf = new XmlBeanFactory(new ClassPathResource("basic02/sample03.xml")); B b = (B) bf.getBean("b"); //xml에서 depends-on="a"이기 때문에 A객체가 먼저 생성됨(Undetermined) A a = (A) bf.getBean("a"); System.out.println(b); System.out.println(a); } }
B b = (B)bf.getBean("b") 코드를 통해 B객체를 불러왔지만,
b는 xml에서 depends-on을 a로 설정하였기 때문에 a가 먼저 생성됩니다.
즉, a -> b 순서로 객체가 생성됩니다.
GlobalObject의 value변수에 "Undetermined"가 저장됩니다.
GlobalObject의 value변수에 "Completed"가 저장되어 덮어씌워지게됩니다.
출력결과
B{}GlobalObject.getValue()=Completed} A{}GlobalObject.getValue()=Completed} |
'Back-End > Java' 카테고리의 다른 글
[Spring] 로그인 여부에 따라 페이지 다르게 보여주기 (0) | 2017.12.18 |
---|---|
[Spring] 웹에서 파라미터 전달받아 출력하기 (0) | 2017.12.14 |
[Spring] name, alias 사용하기 (0) | 2017.12.12 |
[JAVA] 년도와 월을 입력받아 달력 출력하기 (1) | 2017.09.20 |
[JAVA] 배열 출력하기(toString, deepToString) (0) | 2017.09.19 |