<bean>
태그를 이용해 객체의 생성 및 의존성을 설정.<constructor-arg>
와 <property>
로 생성자와 세터 주입을 설정.@Component
, @Autowired
)을 활용하여 객체를 생성하고 의존성을 관리.BoardTO to = new BoardTO();
WriteAction action = new WriteAction(to);
<bean id="to" class="org.example.di.BoardTO"/>
<bean id="action" class="org.example.di.WriteAction">
<constructor-arg ref="to"/>
</bean>
BoardTO to = new BoardTO();
to.setSeq(1);
to.setSubject("제목");
<bean id="to" class="org.example.di02.BoardTO">
<property name="seq" value="1"/>
<property name="subject" value="제목"/>
</bean>
Prototype:
ctx.getBean("id")
호출 시마다 새로운 객체 반환.Singleton (기본값):
ctx.getBean("id")
호출 시 동일한 참조 반환.ArrayList<String> userList = new ArrayList<>();
userList.add("admin");
userList.add("user");
<bean id="listTo" class="org.example.di03.BoardListTO">
<property name="userList">
<list>
<value>홍길동</value>
<value>박문수</value>
</list>
</property>
</bean>
HashMap<String, String> userMap = new HashMap<>();
userMap.put("user", "홍길동");
userMap.put("admin", "박문수");
<bean id="mapTo" class="org.example.map.BoardMapTo">
<property name="userMap">
<map>
<entry key="user" value="홍길동"/>
<entry key="admin" value="박문수"/>
</map>
</property>
</bean>
객체를 리스트나 맵 안에 포함하여 복합적으로 활용.
리스트에 사용자 정의 클래스 포함:
<bean id="to1" class="org.example.map.BoardTO">
<property name="seq" value="1"/>
<property name="subject" value="제목 1"/>
</bean>
<bean id="to2" class="org.example.map.BoardTO">
<property name="seq" value="2"/>
<property name="subject" value="제목 2"/>
</bean>
<bean id="listTo" class="org.example.di03.BoardListTO">
<property name="boardList">
<list>
<ref bean="to1"/>
<ref bean="to2"/>
</list>
</property>
</bean>
맵에 사용자 정의 클래스 포함:
<bean id="mapTo" class="org.example.map.BoardMapTo">
<property name="boardMap">
<map>
<entry key="1" ref="to1"/>
<entry key="2" ref="to2"/>
</map>
</property>
</bean>
SpringContext 사용:
GenericXmlApplicationContext
로 XML 설정 파일 불러오기.GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:context.xml");
BoardTO to = (BoardTO) ctx.getBean("to");
ctx.close();
// BoardTO to = ctx.getBean("boardTo", BoardTo.class);