inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

Redis를 이용한 방식이 MySQL을 이용한 방식보다 느리지 않나요?

해결됨

재고시스템으로 알아보는 동시성이슈 해결방법

제가 생각하기로는 Redis를 이용한 방식은 서버 -> Redis 서버 -> MySQL 이렇게 두 번 접근하게 되니 네트워크 타는 시간 때문에 당연히 더 느릴 것이라고 생각했거든요 비관적 락을 이용한다면 서버 -> MySQL 이렇게 바로 접근한 후에 lock이 풀릴 때까지 기다렸다가 바로 작업을 수행하니 더 빠르지 않나요?

  • spring
  • java
  • 동시성
shef 댓글 3 좋아요 2 조회수 1153

Circuit breaker와 ErrorDecoder 동시 사용

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

강사님 안녕하세요? 강의 너무 잘 듣고 있습니다. Feign Client 강의에서 ErrorDecoder를 추가하여 try-catch문을 사용하지 않고, HTTP 에러 코드 별 처리 방법을 별도로 분리했었는데요. 이번 강의에서처럼 Circuit breaker를 사용하면 API 호출 시 발생하는 모든 오류 상황에 대해 fallback 값이 전달되기 때문에 ErrorDecoder는 별도로 필요하지 않을 것 같습니다. 외부 API 호출하는 모든 케이스에서 circuit breaker를 사용한다면 ErrorDecoder는 불필요한 것이 맞나요? circuit breaker와 error decoder가 둘 다 필요하다고 한다면, error decoder은 어떤 역할을 할 수 있나요? 항상 감사드립니다.

  • spring-boot
  • architecture
  • JPA
  • spring-cloud
  • Kafka
  • msa
박수현 댓글 1 좋아요 0 조회수 469

일대다 단방향은 무조건 피해야 하나요?

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

일대다 단방향 매핑에서 다음의 두가지 단점이 있다고 말씀해 주셨습니다. 추가적인 update 쿼리의 실행 엔티티가 관리하는 외래 키가 다른 테이블에 있음 그런데 일대다 단방향 매핑을 맺을 때 updatable=false 와 nullable=false 를 추가하면 update 쿼리 없이 한 번에 insert 쿼리만 나가는 것을 확인했습니다. @OneToMany(cascade = {CascadeType.PERSIST, CascadeType.REMOVE}) @JoinColumn(name = "parent_id", nullable = false, updatable = false) private List<Child> children = new ArrayList<>(); 물론 부모 자식간 관계가 변하지 않고 라이프사이클이 완전 동일한 경우에만 활용할 수 있을 듯 합니다. 그럼 update 쿼리가 추가적으로 나가는 것은 해결한 셈인데 이런 경우에도 엔티티가 관리하는 외래키가 다른 테이블에 있다는 단점에 의해 다대일 양방향을 맺어줘야 할까요? 복잡한 실무에서는 그 패러다임 불일치가 많은 영향을 주나요?

  • 연관관계
  • 일대다단방향
  • JPA
  • java
DOES 댓글 1 좋아요 0 조회수 1118

@LoadBalanced 관련 질문입니다.

해결됨

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

@LoadBalanced 를 사용할시에 apigateway를 거치지 않고 user -> order 로 가는것을 확인했는데 제가 궁금한것은 보통 client 단에서 첫 요청이 들어왔을 시에만 api gateway를 거치고 그 이후 비지니스 로직을 처리하기 위해서 ms간에 소통하는것은 api gateway를 거치지 않는것이 일반적인 건가요?

  • JPA
  • spring-boot
  • architecture
  • spring-cloud
  • Kafka
  • msa
임도현 댓글 1 좋아요 1 조회수 511

각 애플리케이션에 랜덤포트를 부여하는 이유

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

안녕하세요!!! 랜덤포트를 부여하는 이점에 대해서 아직도 이해가 잘 안갑니다.ㅜㅜ 마이크로서비스 애플리케이션의 확장성과 랜덤포트를 부여하는게 얼마나 깊은 관계가있나요?? 저는 정해두고 쓰는게 더 편하다고 생각했거든요. 그리고 실무에서도 정말 이렇게 랜덤포트로 사용하나요?

  • Kafka
  • msa
  • spring-cloud
  • JPA
  • architecture
  • spring-boot
goodlucky1215 댓글 1 좋아요 1 조회수 1037

queue를 배우다가 궁금한게 생겨서 질문드립니다.

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

응급실 문제를 풀고 강의를 듣고 왔는데요 큐에서는 왜 get 매서드를 지원하지 않나요? FIFO에 어긋나나요? stack의 경우 vector를 확장해서 쓰기때문에 lifo에 어긋난다라는 글을 본적이 있어서 검색해보니 lifo는 삽입과 삭제의 경우에 해당하는거 같아서요 조회에는 해당하지 않는거 같은데 해당하나요? 아 물론 그냥 얘네가 그렇게 제공을 했다!! 하는거면 그런거겠지만요. 뭔가 그 개념적인? 이유가 있는지 궁금합니다 왜 궁금하냐면!! 어떻게보면 api?에서 제공하지 않는 get을 class를 만들어 편법?적으로 접근하신거같아서 입니다!! 조금 무례한 질문 죄송합니다

  • java
  • 코테 준비 같이 해요!
영환 댓글 1 좋아요 0 조회수 446

cannot resolve property

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

application.yml 파일에서 글로벌 필터의 속성 ( baseMessage, preLogger, postLogger) 는 인식하는데 로깅 필터의 속성은 인식하지 못해 cannot resolve property 에러가 납니다. 왜인지 이유를 알 수 없어 질문드립니다. LoggingFilter.java 파일입니다. package com.todaypills.apigatewayservice.Filter; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.OrderedGatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import org.springframework.core.Ordered; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.stereotype.Component; import reactor.core.publisher.Mono; @Slf4j //for print log @Component /**커스텀 필터의 일종임, 단지 로그를 찍기 위한 필터이므로 이름을 Logging 이라고 지은 것*/ public class LoggingFilter extends AbstractGatewayFilterFactory<LoggingFilter.Config> { public LoggingFilter() { super(Config.class); } @Override public GatewayFilter apply(Config config) { /** * 위쪽 주석부분은 람다 표현식으로 바로 리턴한 것이고 이것은 람다를 사용하지 않고 리턴한 것임, * 따라서 인스턴스부터 만들어주어야 하고 GatewayFilter는 인터페이스이기 때문에 직접 인스턴스를 생성할 수는 없고, OrderedGatewayFilter() 를 이용하여 인스턴스를 만들어주어야함 * */ GatewayFilter filter = new OrderedGatewayFilter(((exchange, chain) -> { /** exchange: request와 response 객체를 얻기 위함 */ ServerHttpRequest request = exchange.getRequest(); ServerHttpResponse response = exchange.getResponse(); log.info("logging filter: request id -> {}", config.getBaseMessage()); if(config.isPreLogger()){ log.info("logging pre filter start: request id -> {}", request.getId()); } return chain.filter(exchange).then(Mono.fromRunnable(() -> { if(config.isPostLogger()){ //Mono 객체: 웹플럭스(스프링5)에서 지원하는 기능으로 비동기방식의 서버에서 단일값을 전달할 때 모노타입으로 전달 log.info("logging post filter end: response code -> {}", response.getStatusCode()); } })); }), Ordered.HIGHEST_PRECEDENCE); //HIGHEST_PRECEDENCE 는 적용할 필터가 여러개일 때 어느것이 먼저 실행될지 우선순위를 부여함 return filter; } @Data // setter getter 함수 생성 (isPreLogger(), isPostLogger() 등) public static class Config{ // 여기에 configuration 이 있다면 삽입 private String baseMessage; private boolean preLogger; private boolean postLogger; } } application.yml 파일입니다. server: port: 8000 eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka spring: application: name: apigateway-service cloud: gateway: default-filters: - name: GlobalFilter args: # 우리가 정의한 변수 baseMessage: 게이트웨이 글로벌 필터입니다. preLogger: true #prefilter의 유무 postLogger: true routes: #FilterConfig의 라우팅 정보를 yml 파일로도 설정할 수 있음 - id: nutrients-service uri: http://localhost:8081/ predicates: - Path=/nutrients-service/** filters: # - AddRequestHeader=nutrients-request, nutrients-request-heaer-value # - AddResponseHeader=nutrients-response, nutrients-response-header-value - name: CustomFilter - name: LoggingFilter args: baseMessage: 커스텀 로깅 필터입니다. preLogger: true postLogger: true

  • architecture
  • spring-cloud
  • spring-boot
  • JPA
  • msa
  • Kafka
khss4008 댓글 3 좋아요 0 조회수 2714

윈도우 h2.bat실행시 아무 반응이 없습니다.

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오)예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예 [질문 내용] 여기에 질문 내용을 남겨주세요. h2.bat실행시 아무창도 뜨질 않습니다. 아예 반응이 없습니다. 열심히 구글링하여서 3시간가량 할 수 있는 방법을 동원해보았는데 해결이 되지 않아서 질문남깁니다 ㅜㅜ h2 버전은 강의에서 말씀하신 1.4.200 버전으로 다운로드 받았습니다 아래 해본 방법들을 남깁니다. 모두 결과는 실행하였을 때 반응이 없었습니다. [해본 방법들] cmd창에서 h2.bat 실행 , cmd창에서 "h2.bat" 실행 cmd창에서 h2.sh 실행, cmd창에서 " h2.sh " 실행 cmd창에서 h2w.bat 실행, cmd창에서 "h2w.bat" 실행 다운로드받은 경로 들어가서 마우스로 h2.bat 실행 cmd를 관리자권한으로 실행하여 1,2번 방법 h2파일 재설치 후 1,2,3,4,5 방법 노트북 재부팅 후 1,2,3,4,5 방법 프로젝트 폴더 안에있는 application.properties 파일에서 h2데이터베이스 연동설정(이건 아닌것같지만 혹시나해서해봤습니다.) h2포트번호 확인 후 cmd에서 포트번호 전부 확인해봤지만 사용중인 포트번호가 없어서 h2포트번호를 그냥 바꿔본 후 실행 환경변수 재설정 열심히 검색중에 하단 링크를 보았는데 해결방법을 못찾으신건가요 ㅠ 답변부탁드립니다!! 만약 해결방법이 없다면 Oracle을 연동하여 사용해보겠습니다. 최대한 강의와 비슷하게 진행하고 싶어서 꼭 해결할 수 있었으면 좋겠네요 https://www.inflearn.com/questions/175580

  • h2.bat반응없음
  • MVC
  • java
  • spring
  • spring-boot
최현우 댓글 2 좋아요 0 조회수 1540

'스프링에서 엔티티 매니저와 영속성 컨텍스트가 N:1'의 의미 질문 드립니다.

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 비슷한 질문 있지만 해결 되지 않음 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] '스프링에서 엔티티 매니저와 영속성 컨텍스트가 N:1' 의 의미 질문 드립니다. 강의 4분 1초쯤 스프링에서는 엔티티 매니저와 영속성 컨텍스트가 N:1 이라는 장표가 있는데 아래와 같이 이해했습니다. N개의 EntityManager 객체들은 동일한 PersistenceContext 객체를 참조하고 있음 (싱글톤) 위 내용을 확인 해보고자 본 강의의 소스파일(jpashop-v20210728)을 인텔리제이에서 디버그 실행한 상태에서 다수의 HTTP 요청을 보내서, HTTP 요청마다 생성된 다수의 EntityManager 객체가 하나의 PersistenceContext 객체를 참조하고 있는지 확인했습니다. 확인 결과 EntityManager 객체마다 각각 다른 PersistenceContext 객체를 참조하고 있었습니다. 5번의 HTTP 요청을 보내서 5개의 엔티티매니저 객체와 영속성 컨텍스트 객체가 생성됐습니다. 위 내용만 본다면, 스프링부트 프로젝트인데 J2SE 환경과 마찬가지로 엔티티 매니저와 영속성 컨텍스트가 1:1로 생성되는것으로 보여서, 제가 위 장표를 잘못 이해한것 같아 질문 드립니다. 감사합니다~

  • JPA
  • java
김진욱 댓글 2 좋아요 3 조회수 612

jpql의 객체지향 쿼리라는 말이 궁금합니다

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

기본적으로 find를 통한 DB조회를 하여도 각 테이블의 컬럼에 있는 값을 가져오는것인데 jpql을 사용해도 똑같이 DB의 테이블내 컬럼값을 가져오는것이 아닌지 의문입니다. 또한 jpql이 객체지향 쿼리라고 불리는것은 테이블을 기반으로 DB조회를 하는게 아닌 객체를 기반으로 DB조회를 하기때문인가요? 만약 맞다면 모든 DB테이블이 객체로 이루어져 있어야하기때문에 JPQL 단독사용이 불가능한지도 궁금합니다 감사합니다

  • java
  • JPA
댓글 1 좋아요 0 조회수 409

share project가 안 보이는 경우에는 어떡하죠

미해결

만들어 가면서 배우는 JAVA 플레이그라운드

보면서 따라하는 중인데 team을 들어간 다음에 share project가 나와야 되는데 안보이네요. 이 경우에는 어떡해 해야 하는건지 알려주세요

  • java
juho2075 댓글 1 좋아요 0 조회수 422

dataSource 빨간줄 에러나요

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

강의 8:27 부분에서 괄호 안에 dataSource 에러가 납니다. 이런 에러가 나는데요 어떻게 고쳐야 하나요?

  • MVC
  • spring
  • java
  • spring-boot
댓글 1 좋아요 0 조회수 459

Mock test 관련 질문입니다!

해결됨

이펙티브 자바 완벽 공략 1부

안녕하세요 선생님! 제가 이해를 한 내용이 맞는지 질문 드리고자 글을 남기게 되었습니다. (말씀드리기 앞서, 강의 너무 잘 듣고 있습니다 ㅎㅎ 좋은 강의 너무 감사드린다는 말씀 전하고 싶습니다!) 싱글톤 객체를 테스트마다 매번 생성하는게 Mock 객체를 생성하는 것 보다 operation 비용이 많이 든다고 설명해주셨는데요. 제가 이 내용에 대해 테스트 코드 상에서 싱글톤 객체를 생성할 때는 "필요한 모든 필드가 들어가있는 상태인 객체"를 생성하고, Mock객체를 생성할 때는 싱글톤 객체보다 필드가 적어서 상대적으로 비용이 적게 든다 라고 이해를 하고 있습니다. 혹시 이해한 내용이 맞을까요..?? (이해한 내용에 대해서 확실한지 검증하려고 여러 문헌을 찾아봤지만 찾을 수가 없었어요 ㅠㅠ)

  • java
딱구 댓글 1 좋아요 0 조회수 554

gradlew build문제

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 내용] cmd창에 gradlew build를 치면 C:\Study\hello-spring>gradlew build > Task :compileJava FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > invalid source release: 11 * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 1s 1 actionable task: 1 executed 이 에러가 뜨는데 어떻게 해결할 수 있을까요ㅜ

  • spring
  • mvc
  • spring-boot
  • java
스너 댓글 2 좋아요 0 조회수 1070

merge

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

merge는 다음과 같이 동작해요 1. 1차 캐시에서 엔티티를 찾는다 2. 없으면 디비를 조회한다 3. 찾아온 것에 값을 채운다 없으면 새로운 객체를 생성하고 거기에 값을 채운다 4. 그리고 값을 반환한다 근데 merge는 준영속을 영속화시킬때 사용하잖아요 준영속인 개체가 1차캐시에 있을리 없지않나요? 1의 과정을 왜 거치는건가요?

  • JPA
  • java
김민지 댓글 2 좋아요 1 조회수 405

Book.java Kotlin으로 변경 후 오류 문의

미해결

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

안녕하세요. 12강 에서 처럼 Book.java를 Book.kt kotlin 코드로 변경하고 나서 테스트코드 수행하면 아래와 같은 오류가 발생합니다. 확인해야 될 사항이 뭐가 있을까요. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bookRepository' defined in com.group.libraryapp.domain.book.BookRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not a managed type: class com.group.librayapp.domain.book.Book

  • java
  • spring
  • kotlin
  • spring-boot
  • refactoring
jipps 댓글 4 좋아요 1 조회수 746

Kafka sink connector를 통해서 단일 데이터베이스 저장을 했을 때 장점?

미해결

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

안녕하세요. Kafka Connect 를 활용한 단일 데이터베이스를 사용 파트를 듣고 있는데요. Multiple Order Service가 같은 DB URL을 가지고, JPA를 통해서 데이터 저장을 하면 될 것 같은데, 굳이 Kafka Sink Connector를 통해서 데이터 저장을 하는 이유가 따로 있을까요? JPA를 쓰면 Persistence Manager가 제공하는 여러 장점을 이용할 수 있을 것 같은데, Kafka sink connector는 그런 장점을 이용할 수 없을 것 같아서요.. 실제 현업에서 많이 사용되는 테크닉인지 궁금하고, 만약 사용한다면 장점은 무엇인지 궁금합니다!

  • JPA
  • spring-boot
  • spring-cloud
  • architecture
  • Kafka
  • msa
채병훈 댓글 3 좋아요 4 조회수 640

addlogouthandler에서요 ~

미해결

스프링 시큐리티

안녕하세요 선생님 !! addlogouthandler여기서 세션무효화, 토큰 삭제 외에 추가작업을 한다고 하셨는데 여기서 제가 만들 핸들러를 집어넣으면 1)세션 무효화 ,토큰 삭제 + 알파로 제가 만든 기능이 추가된다는 건가요?? 2)그냥 제가 만든 기능만 추가된다는 것인가요?? 그래서 따로 무효화와 토큰을 구현해줘야 한다는 ....? 1번과 2번중에 어떤거죠??

  • Spring Security
  • spring-boot
  • java
youjin_419 댓글 1 좋아요 0 조회수 293

M1 mac 에서 gradle로 빌드하시려는 분들께 공유 하고싶어 글을 남겨요!

미해결

스프링과 JPA 기반 웹 애플리케이션 개발

Requirements static/node_module로 package.json에 선언된 의존성을 다운로드 받아야한다 gradle build 시 package.json에 선언된 의존성을 확인하고 다시 다운로드 받아야 한다. 뭔가 간단하게 끝내고 싶다 !!! Action https://github.com/node-gradle/gradle-node-plugin/blob/master/docs/usage.md 다양한 관련 플러그인 들이 있지만, 위의 플러그인을 설치 했습니다. 2번의 요구사항은 gradle의 증분 컴파일(?)이 해주는 것 같습니다. (정확하지 않음 추측이에요) 3번은 관련 자료를 찾던 도중 processResources 를 발견했고, Copies production resources into the production resources directory. 라고 설명 되어 있습니다.(공식 홈페이지) 따라서, npm install 시 node_module 파일을 static 이하로 떨어 뜨리면 되겠구나! 그리고 processResources를 "npm install 동작을하는 " Task를 의존하게 하면 되겠구나! -- 주석이 많아 가독성이 떨어지지만, 한번 읽어보시면 더 도움이 될거라 생각해서 위의 깃헙에 있는 주석 그대로 복사 붙여넣기 합니다. 수정한 부분은 nodeProjectDir 부분과processResources.dependsOn 부분 입니다. 추가로 package.json 도 아래분이 잘 정리 해주셔서 함께 복사 붙여넣기 합니다.(고맙습니다!!) -인텔리제이 빌드시(gradle로 설정안했을 경우 동작안해요!) -gradle 탭 누르셔서 npm Task 들어오는지 확인해주세요! { "name": "static", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "@yaireo/tagify": "^3.5.1", "bootstrap": "^4.4.1", "cropper": "^4.1.0", "font-awesome": "^4.7.0", "jdenticon": "^2.2.0", "jquery": "^3.4.1", "jquery-cropper": "^1.0.1", "mark.js": "^8.11.1", "moment": "^2.24.0", "summernote": "^0.8.16" } } plugins { id "com.github.node-gradle.node" version "3.5.0" id 'org.springframework.boot' version '2.7.5' id 'io.spring.dependency-management' version '1.0.15.RELEASE' id 'java' } group = 'me.studyOlle' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } node { // Whether to download and install a specific Node.js version or not // If false, it will use the globally installed Node.js // If true, it will download node using above parameters // Note that npm is bundled with Node.js download = true // Version of node to download and install (only used if download is true) // It will be unpacked in the workDir version = "16.14.0" // Version of npm to use // If specified, installs it in the npmWorkDir // If empty, the plugin will use the npm command bundled with Node.js npmVersion = "" // Version of Yarn to use // Any Yarn task first installs Yarn in the yarnWorkDir // It uses the specified version if defined and the latest version otherwise (by default) yarnVersion = "" // Base URL for fetching node distributions // Only used if download is true // Change it if you want to use a mirror // Or set to null if you want to add the repository on your own. distBaseUrl = "https://nodejs.org/dist" // Specifies whether it is acceptable to communicate with the Node.js repository over an insecure HTTP connection. // Only used if download is true // Change it to true if you use a mirror that uses HTTP rather than HTTPS // Or set to null if you want to use Gradle's default behaviour. allowInsecureProtocol = null // The npm command executed by the npmInstall task // By default it is install but it can be changed to ci npmInstallCommand = "install" // The directory where Node.js is unpacked (when download is true) workDir = file("${project.projectDir}/.gradle/nodejs") // The directory where npm is installed (when a specific version is defined) npmWorkDir = file("${project.projectDir}/.gradle/npm") // The directory where yarn is installed (when a Yarn task is used) yarnWorkDir = file("${project.projectDir}/.gradle/yarn") // The Node.js project directory location // This is where the package.json file and node_modules directory are located // By default it is at the root of the current project nodeProjectDir = file("${project.projectDir}/src/main/resources/static") // Whether the plugin automatically should add the proxy configuration to npm and yarn commands // according the proxy configuration defined for Gradle // Disable this option if you want to configure the proxy for npm or yarn on your own // (in the .npmrc file for instance) nodeProxySettings = ProxySettings.SMART } dependencies { // View Template Engine implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' // Security implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5' //Web implementation 'org.springframework.boot:spring-boot-starter-mail' implementation 'org.springframework.boot:spring-boot-starter-web' implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation', version: '2.7.5' //Persistence implementation 'org.springframework.boot:spring-boot-starter-data-jpa' runtimeOnly 'com.h2database:h2' runtimeOnly 'com.mysql:mysql-connector-j' // LomBok compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' // Dev developmentOnly 'org.springframework.boot:spring-boot-devtools' annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' //Test Implementation testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' } tasks.named('test') { useJUnitPlatform() } processResources.dependsOn('npmInstall')

  • gradle
  • node
  • JPA
  • spring
  • npm
  • spring-boot
  • thymeleaf
  • java
asdf 댓글 1 좋아요 1 조회수 1635

redis를 단순히 락 용도로 사용하지 않고..

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

redis를 단순히 락 용도로 사용하지 않고 redis에 재고수량을 저장 후 관리하는 방법도 사용하는 걸로 알고 있는데요. 이런 방법은 별로인가요?

  • 동시성
  • spring
  • java
hwajo0 댓글 1 좋아요 0 조회수 383

인기 태그

인프런 TOP Writers

주간 인기글