반응형

Spring Boot (스프링 부트) - Runtime에 WAR파일 내부에서 json파일을 읽어서 class에 static하게 저장

 

<< 환경 >>

Java           Open JDK 1.8

Spring Boot 2.4.2

 

  • WAR 실행과 동시에 json형태 정보를 static하게 가지고 있게 해야할 필요 (DB사용 X)
  • 조건을 충족하는 경우에 해당 정보를 사용할 수 있도록 설정

1. static 정보에 접근

2. 권한 생성하여 권한 조건에 따라 메뉴 정보 포함

 

 

[ ConstantsRole.java ]

 

1
2
3
4
5
6
7
8
9
10
package com.test.readfile.custom;
 
public class ConstantsRole {
 
    public static final String ROLE_HASVIEW = "ROLE_HASVIEW";
    public static final String ROLE_HASLOGIN = "ROLE_HASLOGIN";
    public static final String ROLE_ADMIN = "ROLE_ADMIN";
 
}
 
cs

 

 

[ ReadFileApplicationTests.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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.test.readfile;
 
import com.test.readfile.custom.Menu;
import com.test.readfile.custom.factory.MenusFactory;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
 
import java.util.ArrayList;
 
import static com.test.readfile.custom.ConstantsRole.ROLE_ADMIN;
 
@SpringBootTest
class ReadFileApplicationTests {
 
    Logger log = LoggerFactory.getLogger(ReadFileApplicationTests.class);
 
    @Test
    void contextLoads() {
    }
 
    @Test
    void testMenusFactory() {
        fillMenus();
    }
 
    private void fillMenus() {
 
        ArrayList<Menu> menuArrayList = new ArrayList<Menu>();
 
        if (menuArrayList == null || menuArrayList.size() == 0) {
            menuArrayList = new ArrayList<Menu>();
            if (MenusFactory.getTempMenus().get("menus"!= null) {
                for (Menu menu : MenusFactory.getTempMenus().get("menus")) {
                    log.info("this.parentMenu: " + menu.toString());
                    if (menu.getAuthority().equals(ROLE_ADMIN)) menuArrayList.add(menu);
                }
            }
        }
 
        log.info("-------------------------------------------------");
        log.info("menuArrayList Result: " + menuArrayList.toString());
        log.info("-------------------------------------------------");
    }
 
}
 
cs

 

 

 

반응형