EAR - Utility Project - dao
- biz
-Dynamic Web Project - service
- controller
대충 이렇게 구현했네요... controller에서 요청 하면 서비스로 보내고, 서비스에서 비즈 , 비즈에서 dao
막상 적고나니 질문에 맞는 대답인지 모르겠네요 ;;ㅎㅎ
해서 가끔생각했던게
'누가 ..좀... 노멀한 구조..구성? ...의 틀을 좀 잡아줬으면 좋겠다'
라는 생각도 했었습니다.
이런 부분에 대한 글이나 ... 읽을만한걸 보신분 있으실까요? (이거 오히려 질문이 되어버렸군요 ㅎㅎㅎ )
On 2월10일, 오후11시23분, 청국장 <kcy0...@naver.com> wrote:
메이븐으로 jar파일 관리하니까 메이븐도 필수인데다가 웹MVC면은 Spring Security도 기본포함이겠네요...
사실 제가 사용하는 구성이 위의 구성이긴한데... 만들 때는 몰라도 테스트 할 때 정말 난감하더라구요.
JUnit과 목오브젝트를 이용해서 테스트환경을 구축해야 하는데
일반 어플리케이션이면 몰라도 웹어플리케이션은 폴더환경이 어지러워서.....
테스트환경이 뒤죽박죽이되곤 합니다;;;
스프링의 장점이 다양성이긴 한데.. 솔직히 비슷한 기능을 하는 리스너들이 너무 많아서 도대체 뭘 써야 할 지 난감할때가 한두번
이 아니죠...;;
프로젝트 마다 다르나 해외의 글들을 보면 기본은 contoller - serivce - dao 인거 같네요. 문제은 화두는 dao단에 받는 모델이나 도메인 객체가 되갰네요. 그객체가 유연하면 실 시스템도 유연해 질수있으니 예로 객체 맵핑 없는 map이나 List가 되겠죠. 운영도 유연해 집니다. 저같은 경우 3.0이상으로 가면서 serivce - repository 로 바꾸었네요 REST 기반으로 가면서 crud controller를 만들어서 crud repository에 받는 객체는 도메인이 받구요 mapper를 따로 둬서 복잡한것을 service단에 처리하도록 하였습니다. mapper라면 mybatis고 repository는 spring data jpa입니다 spring jpa data 쓸만한기능이 좀있네요. 추후 neo4j를 붙여도 되고 클라이언트 집중을 위해
web - service - repository
- mapper 로 정했구요
web 단은 wicket으로 정했습니다. wicket은 표준웹또는 웹앱으로 갈때. web bundle또는 web 자원을 관리가용이 하죵. 보안이라던지. 모바일 등등. 프로제트 오픈 으로 술먹으니 서글퍼 지네요 외국에 나갈까. ㅡㅡ
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.
@Controller
@RequestMapping("/menu")
public class MenuService extends CrudController<Menu, Long, MenuRepository>{
public MenuService() {super(MenuRepository.class);}
@RequestMapping(method = RequestMethod.GET, params = {"page" , "limit"})
public @ResponseBody Object findAll(@RequestParam int page,
@RequestParam int limit) {
return SenchaReturn.ok(repository.findAll(new PageRequest(page - 1, limit)));
}
}
package repository;
public interface MenuRepository extends CrudRepository<Menu, Long> {
Page<Menu> findAll(Pageable pageable);
}
package domain;
@Entity
@Data
@EqualsAndHashCode(callSuper=false)
public class Menu extends AbstractPersistable<Long> {
private static final long serialVersionUID = -393252437253310301L;
@Column(name ="menu_name") private String menuName;
@Column(name ="parent_id") private int parentId;
@Column(name ="menu_link") private String menuLink;
public Menu() {
this(null);
}
public Menu(Long id) {
this.setId(id);
}
}