반응형
Recent Posts
Recent Comments
«   2024/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Real Vectorism. 훨씬 더 입체적으로...

스프링 웹플럭스에서 index.html 파일을 보여주기 본문

Java (based by Spring Boot 2)

스프링 웹플럭스에서 index.html 파일을 보여주기

grast 2022. 7. 12. 01:46
반응형

개뻘짓의 결과로 끝내 깨달음을 얻었다...

 

아무리 스프링 웹플럭스가 반응형으로 데이터를 교환하기 위해 기존의 서블릿이나 mvc과 아예 다른 밑바닥부터 설계가 다른 프레임워크가 되었다고 하더라도 최소한 보여져야 할 웹페이지가 1개가 있는 경우에는 index.html 파일을 구성할 수가 있어야 한다.

 

커스터마이징을 밥먹듯이 하는 병이 있는 경우에는 필자와 같은 개뻘짓에 굉장히 많이 당황스러울 수도 있다.

 

일단, src/main/resources 경로 내부에 index.html와 그 구성파일들을 넣을 수는 있다. 이 때

  • /public
  • /static
  • /resources
  • /META-INF/resources

반드시 경로명을 저 중 하나로 결정을 해야한다.

@EnableWebFlux 어노테이션이 붙는 순간 커스터마이징이 허용되지 않는다.

 

index.html 와 css파일, js파일 등 구성파일들이 모두 저 경로명을 따르는 폴더 안에 모두 들어갔다면 라우터 클래스를 작성한다.

@Configuration
public class GrastRouter {
    @Bean
    public RouterFunction<ServerResponse> index(@Value("classpath:/public/index.html") Resources html) {
        return RouterFunctions.route(
                RequestPredicates.GET("/").and(RequestPredicates.contentType(MediaType.TEXT_HTML)), 
                request -> ServerResponse.ok().contentType(MediaType.TEXT_HTML).bodyValue(html)
        );
    }
}

@Controller 어노테이션이 아닌 @Configuration 어노테이션임에 유의

@RequestMapping(GetMapping, PostMapping) 어노테이션이 아닌 @Bean 어노테이션임에 유의

 

request -> 부터는 보통 핸들러 클래스를 별도로 만들어서 그걸 이용해야하는데 그냥 간단하게 대충 썼음.

 

 

Static Content in Spring WebFlux | Baeldung

Explore how to serve static content in our web applications using Spring WebFlux.

www.baeldung.com

원본내용은 이 페이지에서 제공하고 있지만 한가지 흠이 있다면 

해당 페이지에서는 bodyValue가 아닌 syncBody 메소드를 사용하지만 이 메소드는 deprecated 되었다.

반응형
Comments