반응형

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. 권한 생성하여 권한 조건에 따라 메뉴 정보 포함

 

 

stream 활용하여 테스트

 

 

[ 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
package com.test.readfile;
 
import com.test.readfile.custom.Menu;
import com.test.readfile.custom.factory.MenusFactory;
import jdk.nashorn.internal.ir.annotations.Ignore;
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 java.util.Objects;
import java.util.stream.Collectors;
 
import static com.test.readfile.custom.ConstantsRole.ROLE_ADMIN;
 
@SpringBootTest
class ReadFileApplicationTests {
 
    Logger log = LoggerFactory.getLogger(ReadFileApplicationTests.class);
 
    @Test
    void contextLoads() {
    }
 
    @Test
    void testMenusFactoryWithStream() {
        fillMenusWithStream();
    }
 
    private void fillMenusWithStream() {
 
        ArrayList<Menu> menuArrayList = new ArrayList<>();
 
        if (menuArrayList == null || menuArrayList.size() == 0) {
            menuArrayList = (ArrayList<Menu>) MenusFactory.getTempMenus().get("menus").stream()
                    .filter(menu -> Objects.nonNull(menu))
                    .filter(menu -> menu.authority.equals(ROLE_ADMIN))
                    .collect(Collectors.toList());
        }
        log.info("-------------------------------------------------");
        log.info("menuArrayList Result: " + menuArrayList.toString());
        log.info("-------------------------------------------------");
    }
 
}
 
cs

 

 

 

반응형