diff --git a/src/backend/stock_server/.gitignore b/src/backend/stock_server/.gitignore index 45fe6a0b..28e8ace3 100644 --- a/src/backend/stock_server/.gitignore +++ b/src/backend/stock_server/.gitignore @@ -259,6 +259,7 @@ $RECYCLE.BIN/ *.lnk # env file +dev.env *.env # End of https://www.toptal.com/developers/gitignore/api/windows,macos,intellij,visualstudiocode,java,linux diff --git a/src/backend/stock_server/build.gradle b/src/backend/stock_server/build.gradle index 2cc98d68..42deb36a 100644 --- a/src/backend/stock_server/build.gradle +++ b/src/backend/stock_server/build.gradle @@ -28,6 +28,7 @@ ext { } dependencies { + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' diff --git a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/advice/StockCaller.java b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/advice/StockCaller.java index 0279f89c..8ffde041 100644 --- a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/advice/StockCaller.java +++ b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/advice/StockCaller.java @@ -1,7 +1,7 @@ package com.jootalkpia.stock_server.stocks.advice; import com.jootalkpia.stock_server.stocks.dto.request.TokenRequestBody; -import com.jootalkpia.stock_server.stocks.dto.response.MinutePriceResponse; +import com.jootalkpia.stock_server.stocks.dto.response.MinutePriceDetailedResponse; import com.jootalkpia.stock_server.stocks.dto.response.TokenResponse; import com.jootalkpia.stock_server.support.config.FeignConfig; import org.springframework.cloud.openfeign.FeignClient; @@ -13,14 +13,14 @@ public interface StockCaller { TokenResponse getToken(@RequestBody TokenRequestBody tokenRequestBody); @GetMapping(name = "MinutePriceAPI", value = "${feign.minute-price.path}") - MinutePriceResponse getMinutePrice(@RequestHeader(name = "authorization") String token, - @RequestHeader(name = "appkey") String appKey, - @RequestHeader(name = "appsecret") String appSecret, - @RequestHeader(name = "tr_id") String trId, - @RequestHeader(name = "custtype") String custType, - @RequestParam("FID_ETC_CLS_CODE") String etcClsCode, - @RequestParam("FID_COND_MRKT_DIV_CODE") String marketDivCode, - @RequestParam("FID_INPUT_ISCD") String itemCode, - @RequestParam("FID_INPUT_HOUR_1") String inputHour, - @RequestParam("FID_PW_DATA_INCU_YN") String pwDataIncuYn); + MinutePriceDetailedResponse getMinutePrice(@RequestHeader(name = "authorization") String token, + @RequestHeader(name = "appkey") String appKey, + @RequestHeader(name = "appsecret") String appSecret, + @RequestHeader(name = "tr_id") String trId, + @RequestHeader(name = "custtype") String custType, + @RequestParam("FID_ETC_CLS_CODE") String etcClsCode, + @RequestParam("FID_COND_MRKT_DIV_CODE") String marketDivCode, + @RequestParam("FID_INPUT_ISCD") String itemCode, + @RequestParam("FID_INPUT_HOUR_1") String inputHour, + @RequestParam("FID_PW_DATA_INCU_YN") String pwDataIncuYn); } diff --git a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/controller/StockController.java b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/controller/StockController.java index eec047bb..a7320a2b 100644 --- a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/controller/StockController.java +++ b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/controller/StockController.java @@ -1,21 +1,22 @@ package com.jootalkpia.stock_server.stocks.controller; -import com.jootalkpia.stock_server.stocks.dto.response.MinutePriceSimpleResponse; +import com.jootalkpia.stock_server.stocks.dto.response.CandlePriceHistoryResponse; import com.jootalkpia.stock_server.stocks.service.StockService; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Pageable; +import org.springframework.data.web.PageableDefault; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; -@Slf4j @RequiredArgsConstructor @RestController public class StockController { private final StockService stockService; - @GetMapping("") - public ResponseEntity handleMinutePrice() { - return ResponseEntity.ok("hi"); + @GetMapping("/api/v1/stock/candlesticks/{stock_code}") + public ResponseEntity handleCandlePriceHistory(@PathVariable("stock_code") String code, @PageableDefault(size = 180) Pageable pageable) { + return ResponseEntity.ok(stockService.getCandlePriceHistoryByCode(pageable, code)); } } diff --git a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/domain/Schedule.java b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/domain/Schedule.java index 0f2ea7d0..5193bcad 100644 --- a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/domain/Schedule.java +++ b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/domain/Schedule.java @@ -1,7 +1,7 @@ package com.jootalkpia.stock_server.stocks.domain; public enum Schedule { - MORNING("0 33-59 23 * * MON-FRI"), + MORNING("0 1-59 9 * * MON-FRI"), TRADING_HOURS("0 * 10-14 * * MON-FRI"), CLOSING("0 0-31 16 * * MON-FRI"), MIDNIGHT("0 0 0 * * MON-FRI"); diff --git a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/domain/StockCode.java b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/domain/StockCode.java index 36b27134..f9eaefa3 100644 --- a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/domain/StockCode.java +++ b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/domain/StockCode.java @@ -1,19 +1,39 @@ package com.jootalkpia.stock_server.stocks.domain; +import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; + public enum StockCode { - SAMSUNG_ELECTRONICS("005930"), - KAKAO("035720"), - SK_HYNIX("000660"), - NAVER("035420"), - HANWHA_AEROSPACE("012450"); + SAMSUNG_ELECTRONICS("005930", "삼성전자"), + KAKAO("035720", "카카오"), + SK_HYNIX("000660", "SK하이닉스"), + NAVER("035420", "네이버"), + HANWHA_AEROSPACE("012450", "한화에어로스페이스"); private final String code; + private final String name; + + private static final Map CODE_TO_NAME_MAP = Arrays.stream(values()) + .collect(Collectors.toMap( + StockCode::getCode, + StockCode::getName + )); - StockCode(String code) { + StockCode(String code, String name) { this.code = code; + this.name = name; } public String getCode() { return code; } + + public String getName() { + return name; + } + + public static String getNameByCode(String code) { + return CODE_TO_NAME_MAP.get(code); + } } diff --git a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/MinutePrice.java b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/MinutePrice.java new file mode 100644 index 00000000..a0d98585 --- /dev/null +++ b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/MinutePrice.java @@ -0,0 +1,99 @@ +package com.jootalkpia.stock_server.stocks.dto; + +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import lombok.Getter; +import org.bson.types.ObjectId; +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.index.Indexed; +import org.springframework.data.mongodb.core.mapping.Document; +import org.springframework.data.mongodb.core.mapping.Field; + +@Getter +@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) +@Document(collection = "minute_price") +public class MinutePrice { + @Id + private ObjectId minutePriceId; + + @Indexed(background = true) + private String code; + + @Field("stock_name") + private String stockName; + + @Field("business_date") + private String businessDate; + + @Field("trading_time") + private String tradingTime; + + @Field("current_price") + private String currentPrice; + + @Field("open_price") + private String openPrice; + + @Field("high_price") + private String highPrice; + + @Field("low_price") + private String lowPrice; + + @Field("trading_volume") + private String tradingVolume; + + @Field("total_trade_amount") + private String totalTradeAmount; + + protected MinutePrice() { + } + + private MinutePrice( + String code, + String htsKorIsnm, + String stckBsopDate, + String stckCntgHour, + String stckPrpr, + String stckOprc, + String stckHgpr, + String stckLwpr, + String cntgVol, + String acmlTrPbmn) { + this.code = code; + this.stockName = htsKorIsnm; + this.businessDate = stckBsopDate; + this.tradingTime = stckCntgHour; + this.currentPrice = stckPrpr; + this.openPrice = stckOprc; + this.highPrice = stckHgpr; + this.lowPrice = stckLwpr; + this.tradingVolume = cntgVol; + this.totalTradeAmount = acmlTrPbmn; + } + + public static MinutePrice of( + String code, + String htsKorIsnm, + String stckBsopDate, + String stckCntgHour, + String stckPrpr, + String stckOprc, + String stckHgpr, + String stckLwpr, + String cntgVol, + String acmlTrPbmn) { + return new MinutePrice( + code, + htsKorIsnm, + stckBsopDate, + stckCntgHour, + stckPrpr, + stckOprc, + stckHgpr, + stckLwpr, + cntgVol, + acmlTrPbmn + ); + } +} diff --git a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/response/CandlePriceHistoryResponse.java b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/response/CandlePriceHistoryResponse.java new file mode 100644 index 00000000..dd4ee73b --- /dev/null +++ b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/response/CandlePriceHistoryResponse.java @@ -0,0 +1,51 @@ +package com.jootalkpia.stock_server.stocks.dto.response; + +import com.jootalkpia.stock_server.stocks.domain.StockCode; +import com.jootalkpia.stock_server.stocks.dto.MinutePrice; +import org.springframework.data.domain.Page; + +import java.util.List; + +public record CandlePriceHistoryResponse( + String code, + String stockName, + List output, + long totalCount +) { + + public static CandlePriceHistoryResponse of(Page minutePricePage, String code) { + return new CandlePriceHistoryResponse( + code, + StockCode.getNameByCode(code), + minutePricePage.getContent().stream() + .map(Output::of) + .toList(), + minutePricePage.getTotalElements() + ); + } + + public record Output( + String businessDate, + String tradingTime, + String currentPrice, + String openPrice, + String highPrice, + String lowPrice, + String tradingVolume, + String totalTradeAmount + ) { + + public static Output of(MinutePrice minutePrice) { + return new Output( + minutePrice.getBusinessDate(), + minutePrice.getTradingTime(), + minutePrice.getCurrentPrice(), + minutePrice.getOpenPrice(), + minutePrice.getHighPrice(), + minutePrice.getLowPrice(), + minutePrice.getTradingVolume(), + minutePrice.getTotalTradeAmount() + ); + } + } +} diff --git a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/response/MinutePriceResponse.java b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/response/MinutePriceDetailedResponse.java similarity index 62% rename from src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/response/MinutePriceResponse.java rename to src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/response/MinutePriceDetailedResponse.java index 5ae7e5be..d5f8d0be 100644 --- a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/response/MinutePriceResponse.java +++ b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/response/MinutePriceDetailedResponse.java @@ -1,14 +1,19 @@ package com.jootalkpia.stock_server.stocks.dto.response; -import java.util.ArrayList; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; -public record MinutePriceResponse( +import java.util.List; + +@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) +public record MinutePriceDetailedResponse( Output1 output1, - ArrayList output2, + List output2, String rtCd, String msgCd, String msg1 ) { + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) public record Output1( String prdyVrss, String prdyVrssSign, @@ -20,6 +25,7 @@ public record Output1( String stckPrpr ) {} + @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) public record Output2( String stckBsopDate, String stckCntgHour, diff --git a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/response/MinutePriceSimpleResponse.java b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/response/MinutePriceSimpleResponse.java index cb23c677..a322d542 100644 --- a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/response/MinutePriceSimpleResponse.java +++ b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/dto/response/MinutePriceSimpleResponse.java @@ -1,5 +1,7 @@ package com.jootalkpia.stock_server.stocks.dto.response; +import com.jootalkpia.stock_server.stocks.dto.MinutePrice; + public record MinutePriceSimpleResponse( String code, String htsKorIsnm, @@ -13,7 +15,7 @@ public record MinutePriceSimpleResponse( String acmlTrPbmn ) { - public static MinutePriceSimpleResponse from(MinutePriceResponse minutePriceDto, String code) { + public static MinutePriceSimpleResponse from(MinutePriceDetailedResponse minutePriceDto, String code) { return new MinutePriceSimpleResponse( code, minutePriceDto.output1().htsKorIsnm(), @@ -27,4 +29,19 @@ public static MinutePriceSimpleResponse from(MinutePriceResponse minutePriceDto, minutePriceDto.output2().get(1).acmlTrPbmn() ); } + + public MinutePrice toDocument() { + return MinutePrice.of( + code, + htsKorIsnm, + stckBsopDate, + stckCntgHour, + stckPrpr, + stckOprc, + stckHgpr, + stckLwpr, + cntgVol, + acmlTrPbmn + ); + } } diff --git a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/repository/MinutePriceRepository.java b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/repository/MinutePriceRepository.java new file mode 100644 index 00000000..eebc3b0b --- /dev/null +++ b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/repository/MinutePriceRepository.java @@ -0,0 +1,10 @@ +package com.jootalkpia.stock_server.stocks.repository; + +import com.jootalkpia.stock_server.stocks.dto.MinutePrice; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.mongodb.repository.MongoRepository; + +public interface MinutePriceRepository extends MongoRepository { + Page findAllByCode(Pageable pageable, String code); +} diff --git a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/service/StockService.java b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/service/StockService.java index 4cffcdfa..db76296d 100644 --- a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/service/StockService.java +++ b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/stocks/service/StockService.java @@ -3,10 +3,13 @@ import com.jootalkpia.stock_server.stocks.advice.StockCaller; import com.jootalkpia.stock_server.stocks.domain.Schedule; import com.jootalkpia.stock_server.stocks.domain.StockCode; +import com.jootalkpia.stock_server.stocks.dto.MinutePrice; import com.jootalkpia.stock_server.stocks.dto.request.TokenRequestBody; -import com.jootalkpia.stock_server.stocks.dto.response.MinutePriceResponse; +import com.jootalkpia.stock_server.stocks.dto.response.CandlePriceHistoryResponse; +import com.jootalkpia.stock_server.stocks.dto.response.MinutePriceDetailedResponse; import com.jootalkpia.stock_server.stocks.dto.response.MinutePriceSimpleResponse; import com.jootalkpia.stock_server.stocks.dto.response.TokenResponse; +import com.jootalkpia.stock_server.stocks.repository.MinutePriceRepository; import com.jootalkpia.stock_server.support.config.TaskSchedulerConfiguration; import com.jootalkpia.stock_server.support.property.BaseProperties; import com.jootalkpia.stock_server.support.property.MinutePriceProperties; @@ -14,6 +17,8 @@ import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.scheduling.config.CronTask; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import org.springframework.stereotype.Service; @@ -29,14 +34,12 @@ public class StockService { private String token; - //테스트용, 토큰 1일 발급 횟수 제한 - private String fakeToken = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0b2tlbiIsImF1ZCI6ImE5YzBlOTQ2LTdkYjMtNDBiNS1iYzRmLTViNGI2NzM3MzBlMyIsInByZHRfY2QiOiIiLCJpc3MiOiJ1bm9ndyIsImV4cCI6MTczNzYwNTY4MiwiaWF0IjoxNzM3NTE5MjgyLCJqdGkiOiJQU3B2NHhVejRpNkZzZzRhWENyTlY3VDJhN3JiZWdldmJKTDgifQ.8rnxngtudIEBBZLKiIM4Iq83fHnoxSnjpdxQRDOgvQ_1mPaNbRdo7PReDcJHiQsE34ltOU-g9Rvea9eElWwTcQ"; - private final StockCaller stockCaller; private final BaseProperties baseProperties; private final MinutePriceProperties minutePriceProperties; private final TokenProperties tokenProperties; private final TaskSchedulerConfiguration taskSchedulerConfiguration; + private final MinutePriceRepository minutePriceRepository; @PostConstruct public void initScheduledTasks() { @@ -44,32 +47,36 @@ public void initScheduledTasks() { taskSchedulerConfiguration.configureTasks(taskRegistrar); taskRegistrar.addCronTask(new CronTask(this::refreshToken, Schedule.MIDNIGHT.getTime())); + registerMinutePriceSchedulers(taskRegistrar); + + taskRegistrar.afterPropertiesSet(); + } + + @PostConstruct + private void refreshToken() { + TokenResponse tokenResponse = stockCaller.getToken(TokenRequestBody.from(baseProperties, tokenProperties)); + token = tokenResponse.tokenType() + TOKEN_SEPARATOR + tokenResponse.accessToken(); + } + private void registerMinutePriceSchedulers(ScheduledTaskRegistrar taskRegistrar) { for (StockCode stockCode : StockCode.values()) { createMinutePriceTask(stockCode, taskRegistrar); } - - taskRegistrar.afterPropertiesSet(); } private void createMinutePriceTask(StockCode stockCode, ScheduledTaskRegistrar taskRegistrar) { for (Schedule schedule : Schedule.values()) { - taskRegistrar.addCronTask(new CronTask(() -> getStockPrice(stockCode.getCode()), schedule.getTime())); + taskRegistrar.addCronTask(new CronTask(() -> + minutePriceRepository.save(getStockPrice(stockCode.getCode()).toDocument()), schedule.getTime())); } } - @PostConstruct - private void refreshToken() { - TokenResponse tokenResponse = stockCaller.getToken(TokenRequestBody.from(baseProperties, tokenProperties)); - token = tokenResponse.tokenType() + TOKEN_SEPARATOR + tokenResponse.accessToken(); - } - private MinutePriceSimpleResponse getStockPrice(String code) { LocalDateTime now = LocalDateTime.now(); String currentTime = now.format(DateTimeFormatter.ofPattern("HHmmss")); - MinutePriceResponse response = stockCaller.getMinutePrice( - fakeToken, + MinutePriceDetailedResponse response = stockCaller.getMinutePrice( + token, baseProperties.appKey(), baseProperties.appSecret(), minutePriceProperties.trId(), @@ -83,4 +90,9 @@ private MinutePriceSimpleResponse getStockPrice(String code) { return MinutePriceSimpleResponse.from(response, code); } + + public CandlePriceHistoryResponse getCandlePriceHistoryByCode(Pageable pageable, String code) { + Page minutePricePage = minutePriceRepository.findAllByCode(pageable, code); + return CandlePriceHistoryResponse.of(minutePricePage, code); + } } diff --git a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/support/config/FeignConfig.java b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/support/config/FeignConfig.java index 1c6c44d2..99dd4608 100644 --- a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/support/config/FeignConfig.java +++ b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/support/config/FeignConfig.java @@ -1,7 +1,5 @@ package com.jootalkpia.stock_server.support.config; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.PropertyNamingStrategy; import feign.Logger; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Bean; @@ -14,11 +12,4 @@ public class FeignConfig { public feign.Logger.Level feignLoggerLevel() { return Logger.Level.FULL; } - - @Bean - public ObjectMapper objectMapper() { - ObjectMapper mapper = new ObjectMapper(); - mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); - return mapper; - } } diff --git a/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/support/config/MongoConfig.java b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/support/config/MongoConfig.java new file mode 100644 index 00000000..c2a10dfd --- /dev/null +++ b/src/backend/stock_server/src/main/java/com/jootalkpia/stock_server/support/config/MongoConfig.java @@ -0,0 +1,21 @@ +package com.jootalkpia.stock_server.support.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.mongodb.MongoDatabaseFactory; +import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper; +import org.springframework.data.mongodb.core.convert.MappingMongoConverter; +import org.springframework.data.mongodb.core.mapping.MongoMappingContext; + +@Configuration +public class MongoConfig { + @Bean + public MappingMongoConverter mappingMongoConverter( + MongoDatabaseFactory databaseFactory, + MongoMappingContext mappingContext + ) { + MappingMongoConverter converter = new MappingMongoConverter(databaseFactory, mappingContext); + converter.setTypeMapper(new DefaultMongoTypeMapper(null)); + return converter; + } +} diff --git a/src/backend/stock_server/src/main/resources/application.yml b/src/backend/stock_server/src/main/resources/application.yml index 6fcc7bf9..d7a4bd98 100644 --- a/src/backend/stock_server/src/main/resources/application.yml +++ b/src/backend/stock_server/src/main/resources/application.yml @@ -2,10 +2,21 @@ spring: config: import: - optional:file:env/dev-db.env[.properties] + autoconfigure: + exclude: + - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration + data: + mongodb: + port: ${DB_PORT} + host: ${DB_HOST} + database: ${DB_NAME} + jackson: + property-naming-strategy: LOWER_CAMEL_CASE logging: level: com.jootalkpia.stock_server: debug + org.springframework.data.mongodb: debug org.springframework.web.servlet : debug feign: