[스프링SPRING]회원관리프로그램예시를 통한 MODEL2방식에서 스프링방식으로 변경

회원관리프로그램 순서

회원정보를 DB에서 읽어서 출력하는 동작을 구현해보자

  1. Action 인터페이스 - execute()
  2. MemberControllerTest 객체 생성 -> 호출
  3. SelectMemberAction 객체 사용
  4. DAO 객체 생성 -> 처리 (출력)
    • 의존관계 Select <-> DAO : DAO 객체를 주입
    • 객체를 미리 생성(Spring) member.xml 생성




Action.java 인터페이스 생성

1
2
3
4
public interface Action {
// Action 페이지의 동작을 미리 선언해서 사용
public void execute() throws Exception;
}




MemberControllerTest.java 코드 생성

  • 기존 모델2 방법 : Action action = new SelectMemberAction();
  • 스프링 방법 :
    • SelectMemberAction로도 가능하지만 Action처럼 업캐스팅통한 표현이 약한 결합을 띄고있다는 것을 표현하는 것이기때문에 Action처럼 업캐스팅방식이 더 많이 사용한다
    • BeanFactory fac = new XmlBeanFactory(new FileSystemResource("member.xml"));
      //SelectMemberAction action = (SelectMemberAction) fac.getBean("action");
      Action action = (Action) fac.getBean("action"); //업캐스팅
      <!--1-->
      




SelectMemberAction.java 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class SelectMemberAction implements Action{

@Override
public void execute() throws Exception {
// Action 인퍼테이스를 사용하여 다형성구현
System.out.println("M: SelectMemberAction 클래스의 execute메서드실행");

/* 예를 들어
* 1.파라미터 저장하기
* 2.세션아이디체크
*/

//모델2방식
//3.DB접근 -> DAO객체 생성
//MemberDAO mdao = new MemberDAOImpl();

//의존주입(DI)방식
//3.DB접근 -> DAO객체 생성
BeanFactory fac = new XmlBeanFactory(new FileSystemResource("member.xml"));
MemberDAO mdao = (MemberDAO) fac.getBean("mdao");

//4.메서드
List list = mdao.getMemberList();
System.out.println("M: List데이터저장 ["+ list+"]");

//5.페이지이동
System.out.println("M: 페이지이동(View)");
}
}




MemberDAO.java 인터페이스 생성

1
2
3
4
5
6
7
8
import java.util.List;

public interface MemberDAO {
//DAO역할을 하는 객체로 사용됨

//회원목록가져오기
public List getMemberList();
}




MemberDAOImpl.java 생성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MemberDAOImpl implements MemberDAO{

//디비연결메서드
//자원해제메서드

@Override
public List getMemberList() {
System.out.println("DAO: 디비연결");
System.out.println("DAO: sql작성 & pstmt객체생성 & ?입력 & sql쿼리구문실행 & rs에 가져온 정보를 List저장");
System.out.println("DAO: 자원해제");
List list = new ArrayList<>();
list.add("빽다방");
list.add("더벤티");
return list;
}
}




member.xml 인터페이스 생성

  • 파라미터가 없으므로 bean태그만 생성. 안에 <property name="">를 사용하지않아도 됨
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>

<!-- DTD -->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<!-- Controller_Action -->
<bean id="action" class="com.itwill.member.SelectMemberAction">
<!-- 파라미터가 없으므로 bean태그만 생성 -->
</bean>

<!-- DAO -->
<bean id="mdao" class="com.itwill.member.db.MemberDAOImpl">
<!-- 파라미터가 없으므로 bean태그만 생성 -->
<property name=""></property>
</bean>
</beans>

Comments