<class 값을 통해 유추해라 ★★★>
linked : 중간 삽입/삭제가 수월
Hash : 빠름
Map : key, value
set : 유일
// 의존성 주입 실습
-- person.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="personService" class="com.spring.ex01.PersonServiceImpl">
// bean 태그를 이용해 PersonServiceImpl 객체를 생성한 후 빈id를 personService로 지정.
<property name="name">
<value>홍길동</value>
</property>
// PersonServiceImpl 객체의 속성 name값을 value태그를 이용해 홍길동으로 초기화.
</bean>
</beans>
-- PersonService.java
package com.spring.ex01;
public interface PersonService {
public void sayHello();
}
-- PersonServiceImpl.java
package com.spring.ex01;
public class PersonServiceImpl implements PersonService{
private String name;
private int age;
// value 태그의 값을 setter를 이용해 설정.
public void setName(String name) {
this.name = name;
}
public void sayHello() {
System.out.println("이름 : " + name);
System.out.println("나이 : " + age);
}
}
-- PersonTest.java
package com.spring.ex01;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
public class PersonTest {
public static void main(String[] args) {
// 실행시 person.xml 을 읽어 들여 빈을 생성.
BeanFactory factory = new XmlBeanFactory(new FileSystemResource("person.xml"));
// id가 personService인 빈을 가져옴.
PersonService person = (PersonService)factory.getBean("personService");
// PersonService person = new PersonServiceImpl();
// 더이상 자바코드에서 객체를 직접 생성하지 않아도 되므로 주석처리함.
person.sayHello(); // 생성된 빈을 이용해 name값을 출력.
}
}
------------------------------------------------------------------------
// 회원 기능 이용해 DI 실습하기
-- member.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
// 주입되는 데이터가 기본형이 아닌 참조형인 경우 ref속성으로 설정.
// 빈을 만들면서 setter 주입방식으로 id가 memberDAO인 빈을 자신의 속성에 주입.
<bean id="memberService" class="com.spring.ex03.MemberServiceImpl">
<property name="memberDAO" ref="memberDAO"/>
</bean>
<bean id="memberDAO" class="com.spring.ex03.MemberDAOImpl"/>
</beans>
-- MemberServiceImpl.java
package com.spring.ex03;
public class MemberServiceImpl implements MemberService {
private MemberDAO memberDAO; // 주입되는 빈을 저장할 MemberDAO 타입의 속성을 선언.
// 설정 파일에서 memberDAO 빈을 생성 후 setter로 속성 memberDAO에 주입.
public void setMemberDAO(MemberDAO memberDAO) {
this.memberDAO = memberDAO;
}
@Override
public void listMembers() {
memberDAO.listMembers();
}
}
-- MemberDAOImpl.java
package com.spring.ex03;
public class MemberDAOImpl implements MemberDAO {
@Override
public void listMembers() {
System.out.println("listMembers 메서드 호출");
System.out.println("회원정보를 조회합니다.");
}
}
-- MemberTest1.java
package com.spring.ex03;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
public class MemberTest1 {
public static void main(String[] args) {
// 실행시 member.xml에 설정한 대로 빈을 생성한 후 주입.
BeanFactory factory = new XmlBeanFactory(new FileSystemResource("member.xml"));
// id가 memberService인 빈을 가져옴.
MemberService service = (MemberService) factory.getBean("memberService");
service.listMembers();
}
}
------------------------------------------------------------------------
//
------------------------------------------------------------------------
//
------------------------------------------------------------------------
//