앞장에 이어서 테스트 class를 작성해보았습니다. 일단 이클립스에서 

Class 파일로 TestController를 먼저 만들고 아래와 같이 소스코드를 

입력했습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
@Controller
public class TestController {
 
    @Resource(name="testservice")
    private TestService testservice;
    
    @RequestMapping(value = "/")
    public void home() {    
        String text = testservice.getTestSql();
        System.out.println("result: "+ text);
    }
    
}





여기까지 입력하면 이클립스에서 에러가 출력, Create Interface 간편

하게 인터페이스를 생성해주고 해당 내용을 작성합니다.


1
2
3
4
5
public interface TestService {

    String getTestSql();
}





이제 비즈니스 로직을 입력해줄 Class를 생성해줄건데요, 이는 

ServiceImpl이라고 명명하겠습니다. 그리고 Impl Class는 Interface

TestService를 implements하여 부모의 메소드를 재정의 해줍니다.


1
2
3
4
5
6
7
8
9
10
11
@Service(value="testservice")
public class TestServiceImpl implements TestService{
 
    @Resource(name="testDAO")
    private TestDAO testDAO;
    
    public String getTestSql(){
        return testDAO.getTestSql();
    }        
    
}





다음으로 DAO Class를 작성하여 data access method를 작성합니다.

DAO는 AbstractDAO를 상속 받아 1장에서 작성한 XML 파일에서 

데이터베이스에 액세스하여 쿼리 결과를 출력합니다.


TestDAO ▼

1
2
3
4
5
6
7
8
@Repository(value="testDAO")
public class TestDAO extends AbstractDAO{
 
    public String getTestSql() {
        return (String) selectOne("getTestSql");
    }
 
}



AbstractDAO ▼

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
public class AbstractDAO {
    
    protected Log log = LogFactory.getLog(AbstractDAO.class);
    
    @Autowired
    public SqlSessionTemplate sqlSession;
    
    protected void printQueryId(String queryId) {
        if(log.isDebugEnabled()){
            log.debug("\t QueryId  \t:  " + queryId);
        }
    }
     
    public Object insert(String queryId, Object params){
        printQueryId(queryId);
        return sqlSession.insert(queryId, params);
    }
     
    public Object update(String queryId, Object params){
        printQueryId(queryId);
        return sqlSession.update(queryId, params);
    }
     
    public Object delete(String queryId, Object params){
        printQueryId(queryId);
        return sqlSession.delete(queryId, params);
    }
     
    public Object selectOne(String queryId){
        printQueryId(queryId);
        return sqlSession.selectOne(queryId);
    }
     
    public Object selectOne(String queryId, Object params){
        printQueryId(queryId);
        return sqlSession.selectOne(queryId, params);
    }
     
    @SuppressWarnings("rawtypes")
    public List selectList(String queryId){
        printQueryId(queryId);
        return sqlSession.selectList(queryId);
    }
     
    @SuppressWarnings("rawtypes")
    public List selectList(String queryId, Object params){
        printQueryId(queryId);
        return sqlSession.selectList(queryId,params);
    }
    
}




여기까지 진행하고 톰캣을 재기동하면 result: OK 라는 메시지가 이클립스

Console에 출력됩니다.