728x90
![[SpringBoot] 따로 개발한 springboot와 vue 합치기 [SpringBoot] 따로 개발한 springboot와 vue 합치기](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
스프링부트와 뷰에서 작업이 모두 끝났다면 뷰 파일을 스프링 static 폴더에 넣어 함께 실행시킬 수 있다.
1. vue 프로젝트 build
터미널에 다음 명령어를 입력하면 dist폴더에 프로젝트를 바로 실행할 수 있는 index.html파일과 css, js파일이 만들어진다.
npm run build
2. dist 파일 spring으로 이동시키기
src/main/resources/static 위치에 dist 속 파일을 모두 넣으면 된다.
![[SpringBoot] 따로 개발한 springboot와 vue 합치기 - 2. dist 파일 spring으로 이동시키기 [SpringBoot] 따로 개발한 springboot와 vue 합치기 - 2. dist 파일 spring으로 이동시키기](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
3. WebConfig 설정하기
내 config는 src/main/java/com/_____/_____/config/WebConfig.java에 있다. 따라서 그 클래스의 addResourceHandler 메서드에 다음을 추가한다. (코드는 나중에 헷갈리지 않기 위해 전부 첨부했다.)
"/**/*" root context 아래 모든 주소는 static 폴더 내에서 찾으면 된다는 코드다.
addResolver에 해당 url이 없는경우 index.html로 가는 PathResourceResolver를 추가한다.
package com.___.____.config; import java.io.IOException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.resource.PathResourceResolver; import com.ssafy.happyhouse.interceptor.JwtInterceptor; @Configuration public class WebConfig implements WebMvcConfigurer { private static final String[] EXCLUDE_PATHS = { "/user/**", "/error/**" }; @Autowired private JwtInterceptor jwtInterceptor; @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowedOrigins("*") .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .maxAge(6000); } //이 부분 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**/*") .addResourceLocations("classpath:/static/") .resourceChain(true) .addResolver(new PathResourceResolver() { @Override protected Resource getResource(String resourcePath,Resource location) throws IOException { Resource requestedResource = location.createRelative(resourcePath); return requestedResource.exists() && requestedResource.isReadable()? requestedResource:new ClassPathResource("/static/index.html"); } }); } }
'기록 > BACKEND' 카테고리의 다른 글
[SpringBoot] 비밀번호 암호화하기 (0) | 2022.07.23 |
---|---|
[SpringBoot] 자바 메일 보내기 (0) | 2022.07.21 |
[SpringBoot] Swagger 3.x 적용 (0) | 2022.05.10 |
[SpringBoot] MySql & MyBatis 설정하기 (0) | 2022.05.09 |
[Spring] Annotation 정리 (0) | 2022.05.03 |
댓글