프로그래밍/전자정부프레임워크(eGov)

레프트 메뉴 추가 후 서비스단을 만들어보자! - (2)

Jay22 2017. 1. 22. 14:23
반응형

서비스 폴더를 만들 때 구조를 살펴보자.




java안에 main폴더는 메인화면쪽 파일들을 모아 놓은 것이고 welcomeWeb폴더는 새로만든 페이지에 대한 폴더이다.


그 안에 web폴더를 두고 밑에 컨트롤러를 작성한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Controller
public class WelcomeWebController {
    
    @Resource(name="welcomeWebService")
    private WelcomeWebService welcomeWebService;
    
    @SuppressWarnings("unused")
    @RequestMapping(value = "welcomeWeb.do")
    public String initWelcomeWeb() throws Exception {
      
        @SuppressWarnings("rawtypes")
        List<Map> welcomeWebList = welcomeWebService.selectWelcomeWebServiceList();
 
        return "welcomeWeb/welcomeWeb.tiles";
    }
}
cs



이 컨트롤러는 WelcomeWebService라는 서비스 객체를 가지고 있다. 이것은 이 페이지에서 실행할 기능을 모아둔 것이다. 


@Resource 태그로 이름을 설정해 주었다.

line 4 - 리소스는 어플리케이션에서 필요로 하는 자원을 자동으로 연결시켜준다.


line 9 - 맵핑된 jsp파일에 따른 함수를 만들었다. 컨트롤러가 서비스에게 동작을 시켰다. selectWelcomeServiceList라는 함수를 부르게. 마지막에 그 화면으로 return 해준다.




WelcomeWebService.java를 보자.


1
2
3
4
5
6
7
public interface WelcomeWebService {
 
    @SuppressWarnings("rawtypes")
    List<Map> selectWelcomeWebServiceList() throws Exception;
 
}
 
cs


서비스는 인터페이스로 정의를 해놓는다. 그러기 때문에 함수의 머리부분만 작성해 놓는다.


서비스의 역할을 잠깐 보자.

컨트롤러에 의해 호출되어 실제 비지니스 로직과 트랜잭션을 처리하고, 데이터베이스 CRUD를 맡는 DAO객체를 Spring으로부터 주입 받아서, DAO에게 처리를 위임하고 처리를 받은 것을 다시 컨트롤러에 반환한다.


서비스와 임플을 나눠놓는 이유 : 컨트롤러가 비지니스로직에 종속되지 않는다.



WelcomeWebServiceImpl.java


1
2
3
4
5
6
7
8
9
10
@Service("welcomeWebService")
public class WelcomeWebServiceImpl extends EgovAbstractServiceImpl implements WelcomeWebService {
 
    @SuppressWarnings("rawtypes")
    @Override
    public List<Map> selectWelcomeWebServiceList() throws Exception {
        return null;
    }
 
}
cs


정의한 인터페이스를 구현 받고 안에 있는 메소드를 오버라이딩하는 형태로 작성한다.

아직 기능구현은 하지 않았다.

반응형