diff --git a/.gitignore b/.gitignore
index c82540bb..a9d47990 100644
--- a/.gitignore
+++ b/.gitignore
@@ -646,3 +646,7 @@ MigrationBackup/
.ionide/
# End of https://www.toptal.com/developers/gitignore/api/intellij,java,react,node,vs
+
+#custom
+db_dev.mv.db
+db_dev.trace.db
diff --git a/BackEnd/src/main/java/com/team5/nbe341team05/common/jpa/entity/BaseInitData.java b/BackEnd/src/main/java/com/team5/nbe341team05/common/jpa/entity/BaseInitData.java
index 67dbec6a..f4fd717a 100644
--- a/BackEnd/src/main/java/com/team5/nbe341team05/common/jpa/entity/BaseInitData.java
+++ b/BackEnd/src/main/java/com/team5/nbe341team05/common/jpa/entity/BaseInitData.java
@@ -11,15 +11,13 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.ResourceLoader;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
-import java.io.File;
import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
@Configuration
@RequiredArgsConstructor
@@ -27,6 +25,8 @@ public class BaseInitData {
private final CartService cartService;
private final MenuService menuService;
private final OrderService orderService;
+ private final ResourceLoader resourceLoader; // ResourceLoader 추가
+
@Value("${upload.path}")
String savePath;
@@ -45,15 +45,18 @@ public ApplicationRunner baseInitDataApplicationRunner() {
public void makeSampleMenus() throws IOException {
if (menuService.count() > 0) return;
- for (int i = 1; i <= 8; i++) {
- String fileName = String.format("menu%d.jpg", i );
- Path filePath = Paths.get(savePath + fileName);
+ for (int i = 1; i <= 35; i++) {
+ int num = ((i-1) % 8) + 1;
+ String fileName = String.format("menu%d.jpg", num);
+
+ // Resource를 사용하여 classpath에서 이미지 파일 읽기
+ Resource resource = resourceLoader.getResource("classpath:static/images/" + fileName);
MultipartFile multipartFile = new MockMultipartFile(
fileName,
fileName,
"image/jpeg",
- Files.readAllBytes(filePath)
+ resource.getInputStream().readAllBytes()
) {
};
@@ -65,28 +68,5 @@ public void makeSampleMenus() throws IOException {
.build();
menuService.create(menuRequestDto, multipartFile);
}
-
-// String[] menuTypes = {"커피", "주스", "스무디", "티", "에이드"};
-// String[] descriptionsTemplate = {
-// "깊고 진한 맛의 ",
-// "상큼하고 달콤한 ",
-// "시원하고 청량한 ",
-// "부드럽고 향긋한 ",
-// "달콤쌉싸름한 "
-// };
-//
-// for (int i = 1; i <= 200; i++) {
-// // 메뉴 종류를 랜덤하게 선택
-// String menuType = menuTypes[i % 5];
-// String description = descriptionsTemplate[i % 5];
-//
-// menuService.create(
-// menuType + " " + i + "호", // 예: "커피 1호", "주스 2호" 등
-// description + menuType + "입니다.", // 예: "깊고 진한 맛의 커피입니다."
-// ((i % 3) + 3) * 1000, // 3000~5000원 범위의 가격
-// 100 + (i % 50), // 100~149개 범위의 재고
-// "menu" + i + ".jpg" // menu1.jpg, menu2.jpg 등
-// );
-// }
}
-}
\ No newline at end of file
+}
diff --git a/BackEnd/src/main/java/com/team5/nbe341team05/common/security/SecurityConfig.java b/BackEnd/src/main/java/com/team5/nbe341team05/common/security/SecurityConfig.java
index 3b3e2e72..509db019 100644
--- a/BackEnd/src/main/java/com/team5/nbe341team05/common/security/SecurityConfig.java
+++ b/BackEnd/src/main/java/com/team5/nbe341team05/common/security/SecurityConfig.java
@@ -17,9 +17,9 @@
import org.springframework.security.web.header.writers.frameoptions.XFrameOptionsHeaderWriter;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
import org.springframework.web.cors.CorsConfiguration;
-import org.springframework.web.cors.CorsConfigurationSource;
-import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-import org.springframework.web.filter.CorsFilter;
+
+import java.util.Collections;
+import java.util.List;
@Configuration
@EnableWebSecurity
@@ -49,7 +49,16 @@ SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
.logoutUrl("/logout")
.logoutSuccessUrl("/") // 로그아웃 성공 후 리다이렉트
)
- .cors(cors -> cors.configurationSource(corsConfigurationSource()));
+ .cors(corsCustomizer -> corsCustomizer.configurationSource(request -> {
+ CorsConfiguration config = new CorsConfiguration();
+ config.setAllowCredentials(true);
+ config.addAllowedOrigin("http://localhost:3000");
+ config.setAllowedOriginPatterns(Collections.singletonList("http://localhost:3000"));
+ config.setAllowedMethods(List.of("GET", "POST", "DELETE", "PATCH", "OPTION", "PUT"));
+ config.setAllowedHeaders(List.of("Authorization", "Content-Type"));
+ return config;
+ }))
+ ;
return http.build();
}
@@ -78,26 +87,4 @@ public UserDetailsService userDetailsService(PasswordEncoder passwordEncoder) {
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
-
- @Bean
- public CorsFilter corsFilter() {
- return new CorsFilter(corsConfigurationSource());
- }
-
- @Bean
- public CorsConfigurationSource corsConfigurationSource() {
- CorsConfiguration configuration = new CorsConfiguration();
-
- configuration.addAllowedOrigin("http://localhost:3000"); // 허용할 주소 설정
- configuration.addAllowedMethod("GET"); // 메서드 허용
- configuration.addAllowedMethod("POST"); // 메서드 허용
- configuration.addAllowedMethod("PUT"); // 메서드 허용
- configuration.addAllowedMethod("DELETE"); // 메서드 허용
- configuration.addAllowedHeader("*"); // 헤더 허용
- configuration.setAllowCredentials(true); // 자격 증명 허용 설정
- UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
- source.registerCorsConfiguration("/**", configuration);
-
- return source;
- }
}
diff --git a/BackEnd/src/main/java/com/team5/nbe341team05/domain/menu/service/MenuService.java b/BackEnd/src/main/java/com/team5/nbe341team05/domain/menu/service/MenuService.java
index a362e22a..c8bd023d 100644
--- a/BackEnd/src/main/java/com/team5/nbe341team05/domain/menu/service/MenuService.java
+++ b/BackEnd/src/main/java/com/team5/nbe341team05/domain/menu/service/MenuService.java
@@ -36,17 +36,6 @@ public Page