ChamomileGuides 3.0.4 Help

메뉴 모듈 사용 가이드

개요

캐모마일 프레임워크의 Admin 시스템을 통해 등록된 메뉴에 권한을 부여하고 메뉴 리스트를 불러서 활용할 때 사용하는 API를 말한다.

메뉴 API를 만들게 된 목적은 복잡한 권한시스템과 맞물려 메뉴의 계증구조를 가져와야 하는 어려움을 해소는 것이다. 캐모마일 프레임워크를 사용하여 개발을 하는 모든 사용자는 해당 API를 호출하면 메뉴리스트 호츌 시 개발시간을 단축시키고 번거로움을 해소할 수 있다.

관련 클래스

  • MenuService: DB에서 권한 정보와 메뉴 정보를 읽어와 적절한 계층 구조 리스트를 반환하는 관련 기능을 제공하는 클래스이다.

  • QueryProperty: 쿼리에서 사용될 프로퍼티 설정 정보를 담는 클래스이다.

dependency

<dependency> <groupId>net.lotte.chamomile.module</groupId> <artifactId>chamomile-menu</artifactId> </dependency>

사용법

[설정]

메뉴 관련 정보를 application.properties(또는 application.yml)파일에 입력하면 해당 정보를 기반으로 queryProperty와 menuService bean이 자동으로 생성된다.

(※ 정보를 입력하지 않을 경우 default 값으로 생성)

// 설정 관련 소스 @ConfigurationProperties @Getter public class MenuQueryProperties { private String tableName; private String tableName2; private String keyColumn; private String menuLvlColumn; private String menuUriColumn; private String menuNameColumn; private String upperMenuIdColumn; private String menuDescColumn; private String menuSeqColumn; private String leftMenuYnColumn; private String useYnColumn; private String adminMenuYnColumn; private String menuHelpUriColumn; private String menuScriptColumn; private String roleIdColumn; .. }

직접 bean을 생성하고 싶다면 다음과 같이 생성하면 된다.

@EnableConfigurationProperties({MenuQueryProperties.class, ChamomileJdbcProperties.class}) @Configuration public class ChamomileMenuConfiguration { private final MenuQueryProperties menuQueryProperties; @PersistenceContext private EntityManager em; public ChamomileMenuConfiguration(MenuQueryProperties menuQueryProperties) { this.menuQueryProperties = menuQueryProperties; } @Bean @ConditionalOnMissingBean public QueryProperty queryProperty() { QueryProperty queryProperty = QueryProperty.builder() .tableName(menuQueryProperties.getTableName()) .tableName2(menuQueryProperties.getTableName2()) .keyColumn(menuQueryProperties.getKeyColumn()) .menuLvlColumn(menuQueryProperties.getMenuLvlColumn()) .menuUriColumn(menuQueryProperties.getMenuUriColumn()) .menuNameColumn(menuQueryProperties.getMenuNameColumn()) .upperMenuIdColumn(menuQueryProperties.getUpperMenuIdColumn()) .menuDescColumn(menuQueryProperties.getMenuDescColumn()) .menuSeqColumn(menuQueryProperties.getMenuSeqColumn()) .leftMenuYnColumn(menuQueryProperties.getLeftMenuYnColumn()) .useYnColumn(menuQueryProperties.getUseYnColumn()) .adminMenuYnColumn(menuQueryProperties.getAdminMenuYnColumn()) .menuHelpUriColumn(menuQueryProperties.getMenuHelpUriColumn()) .menuScriptColumn(menuQueryProperties.getMenuScriptColumn()) .roleIdColumn(menuQueryProperties.getRoleIdColumn()) .build(); return queryProperty; } @Bean public MenuService menuService(JdbcTemplate jdbcTemplate, MessageSource messageSource) { return new MenuService(jdbcTemplate, messageSource, queryProperty()); } }

메뉴 목록 조회 API

메소드명

파라미터

반환값

설명

findMyMenu

String adminYn, Locale locale

List<Map<String, Object>>

adminYn : MenuService.ADMIN_MENU 또는 MenuService.SERVICE_MENU / locale : 적용하고자하는 언어 정보(null일경우 현재 설정언어)

[예제]

MenuService bean을 이용해 게층 구조의 메뉴 목록을 조회한다.

@RestController @RequiredArgsConstructor @Slf4j public class TestMenuController { private final MenuService menuService; @GetMapping("menu") public List<Map<String, Object>> findMyMenuTest() { List<Map<String, Object>> myMenu = menuService.findMyMenu(MenuService.ADMIN_MENU, null); // locale이 null이면 현재 설정 return myMenu; } }

json형태로 변환시 아래와 같이 데이터가 리턴된다.

[ { "useYnNm":"사용", "useYn":"1", "menuSeq":"10", "menuHelpUri":null, "adminMenuYn":"1", "menuCode" : "menu.data.menu00000001", // 다국어 처리시 사용되는 메뉴 코드 값 "menuId":"menu00000001", // 메뉴아이디 "menuLvlNm":"대메뉴", "menuUri":null, // 메뉴에 지정된 url "upperMenuId":"root", // 부모 메뉴아이디 "leftMenuYn":"1", "menuLvl":"0", // 메뉴레벨(깊이) "menuScript":"<i class='fa fa-cubes ...></b></i>", // 메뉴를 꾸며줄 부가정보(스크립트) "menuDesc":null, "menuName":"자원관리" // 메뉴명 }, .. ]
Last modified: 21 4월 2025