💡 핵심 요약 (TL;DR)
회원관리프로그램예시를 통한 MODEL2방식에서 스프링방식으로 변경의 동작 원리를 이해하고 실제 프로젝트에 적용하기 위한 실무 가이드다.
3. SelectMemberAction 객체 사용을 적용할 수 있다.
회원관리프로그램 순서
회원정보를 DB에서 읽어서 출력하는 동작을 구현해보자
- Action 인터페이스 - execute()
- MemberControllerTest 객체 생성 -> 호출
- SelectMemberAction 객체 사용
- DAO 객체 생성 -> 처리 (출력)
- 의존관계 Select <-> DAO : DAO 객체를 주입
- 객체를 미리 생성(Spring) member.xml 생성
Action.java 인터페이스 생성
1 2 3 4
| public interface 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”); //업캐스팅
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 { System.out.println("M: SelectMemberAction 클래스의 execute메서드실행");
BeanFactory fac = new XmlBeanFactory(new FileSystemResource("member.xml")); MemberDAO mdao = (MemberDAO) fac.getBean("mdao"); List list = mdao.getMemberList(); System.out.println("M: List데이터저장 ["+ list+"]"); System.out.println("M: 페이지이동(View)"); } }
|
MemberDAO.java 인터페이스 생성
1 2 3 4 5 6 7 8
| import java.util.List;
public interface MemberDAO { 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>
|
#TILITWILL(JAVA)