묻고 답해요
144만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 프레임워크 입문
이해
bean인 생성자 내에 bean인 파라미터가 있으면 @Autowired를 생략하고 의존성을 가질 수 있다라고 이해하면 될까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
빌드 및 실행과 테스트 실행을 Gradle로 설정하면 오류가 생겨요!
강사님 200 OK랑 30이 나와야 하는데, 저는 오류가 떠요. 아래 오류는 강사님 코드를 다운받고 실행시킬 처음부터 발생했습니다!500 Internal Server ErrorThe server has encountered a situation it does not know how to handle.{ "timestamp": "2024-09-20T07:29:31.340+00:00", "status": 500, "error": "Internal Server Error", "path": "/add" }위에거는 인텔리제이 코드가 아니라 포스트맨에서 나오는 오류 코드입니다.인텔리제이 빌드.그래들을 실행시키면 아래 오류가 뜹니다. 아래 오류는 설정에서 Build and run using과 Run tests using을 인텔리제이 IDEA로 바꿔야 해결되는데, 그러면 포스트맨에서 코드가 안나옵니다.정답은 30, 200OK가 저는 안나와요!아래 참고 사이트:https://dev-emmababy.tistory.com/86https://velog.io/@blackbean99/Java-finished-with-non-zero-exit-value-1-%EC%97%90%EB%9F%AC-%ED%95%B8%EB%93%A4%EB%A7%81 Execution failed for task ':com.group.library_app.LibraryAppApplication.main()'.> Process 'command 'C:\Users\Student\.jdks\corretto-17.0.12\bin\java.exe'' finished with non-zero exit value 1* 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 2s3 actionable tasks: 1 executed, 2 up-to-date
-
해결됨Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
[Scheduler의 종류 강의] Schedulers.newParallel 메서드에 관한 질문
안녕하세요 강사님 Scheduler의 종류 강의를 수강하고 공부를 하던 와중에 newParallel 메서드에 대해서 궁금증이 생겨서 질문을 하게 됐습니다. 예제 코드에서는 newParallel의 parallelism변수 값을 4를 주셨는데 저는 3을 줘서 테스트를 해봤습니다. 해당 코드로 실행을 하면, 다음과 같은 로그가 나오게 됩니다.public class SchedulersNewParallelExample01 { public static void main(String[] args) { Mono<Integer> flux = Mono .just(1) .publishOn(Schedulers.newParallel("Parallel Thread", 3, true)); //쓰레드 할당 flux.subscribe(data -> { TimeUtils.sleep(5000L); Logger.onNext("subscribe 1", data); }); //쓰레드 할당 flux.subscribe(data -> { TimeUtils.sleep(4000L); Logger.onNext("subscribe 2", data); }); //쓰레드 할당 flux.subscribe(data -> { TimeUtils.sleep(3000L); Logger.onNext("subscribe 3", data); }); //쓰레드 할당 flux.subscribe(data -> { TimeUtils.sleep(2000L); Logger.onNext("subscribe 4", data); }); TimeUtils.sleep(8000L); } } 16:18:03.554 [Parallel Thread-3] INFO com.example.springwebflux.util.Logger -- # subscribe 3 onNext(): 1 16:18:04.548 [Parallel Thread-2] INFO com.example.springwebflux.util.Logger -- # subscribe 2 onNext(): 1 16:18:05.560 [Parallel Thread-1] INFO com.example.springwebflux.util.Logger -- # subscribe 1 onNext(): 1 16:18:07.561 [Parallel Thread-1] INFO com.example.springwebflux.util.Logger -- # subscribe 4 onNext(): 1제가 여기서 여쭤보고 싶은 사항은 다음과 같습니다.Round-Robin 방식을 통해서 각 쓰레드에 작업을 분배하고 더 많은 작업이 들어오면 각 쓰레드의 큐에 작업을 적재하는 것처럼 보이는데요. 작업들을 효율적으로 처리하기 위해서는 먼저 작업이 끝난 Parallel Thread-3에서 남아있는 작업을 가져가서 처리를 하면 좋을 것 같은데 [워크 스틸링(Work Stealing) 같은 처리]Spring WebFlux에서는 해당 기능은 지원하지 않는 것인지 궁금합니다.감사합니다
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
빌드.그래들에서 디펜던시에 값을 붙여넣었는데, 어노테이션에 아무런 변화가 없어요!
빌드.그래들에서 디펜던시에 값을 붙여넣었어요!plugins { id 'java' id 'org.springframework.boot' version '3.3.3' id 'io.spring.dependency-management' version '1.1.6' } group = 'com.group' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' implementation 'org.springframework.boot:spring-boot-starter-web' } tasks.named('test') { useJUnitPlatform() }하지만 어노테이션에 임포트 클래스라는 메뉴가 안떠요! 아무런 변화가 없습니다!https://needneo.tistory.com/272위 링크처럼 임포트 클래스 메뉴가 떠야하는데, 새로고침을 어떻게 하라는 건가요?한글메뉴라서 버튼이름이 다를 수 있어요!파일에서 IDE고치기도 해보고 실행도 해보고 디버그도 해봤어요! 전혀 변화가 없습니다.구체적으로 해결방법을 가르켜주세요!
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
비관적 락 vs 레디스(Lettuce)락 비교 관련 질문
강의를 보고 제 사이드 프로젝트에 그대로 적용해 보았습니다. 리뷰와 리뷰댓글 테이블이 있으면 동시에 1번 리뷰에 대한 리뷰댓글을 100개 썼을때, 리뷰테이블의 리뷰댓글카운트 컬럼에 업데이트를 시키는데, 두 방식 다 성공했습니다.처리시간 평균비관적 락 : 1초레디스 락 : 1.5초 환경은 리뷰테이블에는 데이터 2건, 리뷰댓글테이블에는 10만건 있었습니다.시도해본것레디스 락의 락 유지시간, 재시도 시간을 줄여봄Q1. 그렇다면 어떤 환경에서는 레디스 락이 빠를까요?Q2. 레디스 락이 분산 시스템 환경에서 유리하다는데 그것에 대해서도 설명 부탁드립니다.Q3. 곧 MSA 프로젝트를 하는데 각 마이크로 서비스마다 DB가 있을테고 각 서비스에 DB에 접근할때 비관적 락을 걸어도 문제없을거 같은데 이때에 레디스 락을 쓰는 것에 대한 장점이 있을까요??
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
강사님의 동영상처럼 어노테이션을 입력하면 저는 임포트가 안떠요!
강사님처럼 어노테이션을 입력하면, 임포트가 입력이 안되요. 직접 작성해도 web.에서 오류가 걸려요. 무엇인가 설정이 안되었거나 무엇인가 안깔려있는거 같은데, 어떻게 해결해야하나요? 그리고 임포트 단축키좀 알려주세요. ctrl+O인가요?
-
미해결스프링 핵심 원리 - 기본편
주문과 할인 도메인 개발 3:20초에서 Order 클래스 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]3:20에서 Order라는 클래스를 만들어주는데 클래스안에는 calculatePrice 클래스메서드를 만들어주는데, Order의 경우는 Interface로 만들지 않는 이유는 역할과 구현이 각각 무조건 하나이기때문에 만든걸까요? 아니면 다른이유가 있을까요? 예를들어 interface Order { .... 클래스 변수 및 생성자int calculatePrice() }뭐 이런식으로 역할 인터페이스를 만들고 클래스를 만들면서 구현체를 만들지않는 이유가 궁금합니다!
-
미해결스프링 핵심 원리 - 기본편
스프링 초반 설정이 안되요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네[질문 내용]여기에 질문 내용을 남겨주세요. 해결하기 위해서 인터넷에 쳐서 해봤으나 gradle 관련된 연결된 게 전혀 뜨지 않아서 여쭤봅니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타임리프 기본기능 - 주석
타임리프에서 <!—/*..*/—> 주석과 <!—/*/../*/—> 주석 중에서 전자를 더 많이 사용하는 이유와 사용 예시를 알 수 있을까요..?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
AuthenticationManager 사용 방법 HttpSecurity 사용
AuthenticationManager 사용 방법 HttpSecurity 사용에서@Bean 사용으로 CustomFilter를 빈으로 생성하면 안되는 이유가AutenticationManager가 빈이 아니기 때문에 주입받지 못한다고 하셨는데securityFilterChain(HttpSecurity http)메서드에서 AuthenticationManagerBuilder를 통해build() or getObject()사용으로 AuthenticationManager를 가져오고.addFilterBefore(customFilter(autenticationManager))여기서 넘겨주면 파라미터로 AuthenticationManagerf를 받는게 아닌가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
SaveCheck , UpdateCheck
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.제목에 적은 2개의 클래스는 이번 프로젝트에서는 사용하지않는거 맞나요 ?
-
미해결코드로 배우는 스프링 웹 프로젝트 - Basic
인텔리제이 커뮤니티버젼을 진행해도 되나요?
얼티메이트 버젼은 유료버젼으로 알고있는데요.커뮤니티 버젼으로 진행해도 되나요?
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
개선된 아키텍처의 구조
많은 도움을 얻어가는 취준생입니다. 다름아니라 본 영상(레이어드 아키텍처의 문제점과 해결책) 9분30초의 구조는 DDD라고 볼 수 있나요?감사합니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
db에 저장되는 이름과 객체를 지정하는 이름 스타일 차이는 그냥 관례일까요
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]db의 필드 이름은 item_name 이렇게 지정하고, 객체에서는 itemName이런 형식으로 camelCase 스타일로 지정하는 이유는 그냥 오랜 관례일까요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cmd 빌드 시 test 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]빌드를 하면 다음과 같이 뜨는데요 무시하고 lib 가서 jar 실행하면 실행 되긴 합니다. 이건 어떤 문제인가요?
-
미해결스프링 핵심 원리 - 고급편
수동으로 빈 등록하는 부분에서 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@Slf4j @Configuration @Import({AppV1Config.class, AppV2Config.class}) public class BeanPostProcessorConfig { @Bean public PackageLogTracePostProcessor logTracePostProcessor(LogTrace logTrace) { return new PackageLogTracePostProcessor("hello.proxy.app", getAdvisor(logTrace)); } private Advisor getAdvisor(LogTrace logTrace) { //pointcut NameMatchMethodPointcut pointcut = new NameMatchMethodPointcut(); pointcut.setMappedNames("request*", "order*", "save*"); //advice LogTraceAdvice advice = new LogTraceAdvice(logTrace); return new DefaultPointcutAdvisor(pointcut, advice); }위와 같이 코드를 작성하셨을 때, @Import 코드가 잘 이해가 안됩니다 "AppV1Config와 AppV2Config는 수동으로 스프링 빈으로 등록해야 동작한다" 근데 AppV1Config와AppV2Config 코드를 보면 아래와 같습니다.근데 @Configuration이 붙은 클래스는 컴포넌트 스캔의 대상이 되고, 필드에 있는 @Bean이 붙은 메소드의 반환 값은 빈으로 자동 등록된다라고 이해를 하고있었습니다. 근데, 강사님께서 말씀하신 "@Import로 수동으로 빈으로 등록한다"라는 부분이 잘 이해가 안됩니다. 설명 부탁드립니다 ! @Configuration public class AppV1Config { @Bean public OrderControllerV1 orderControllerV1() { return new OrderControllerV1Impl(orderServiceV1()); } @Bean public OrderServiceV1 orderServiceV1() { return new OrderServiceV1Impl(orderRepositoryV1()); } @Bean public OrderRepositoryV1 orderRepositoryV1() { return new OrderRepositoryV1Impl(); }@Configuration public class AppV2Config { @Bean public OrderControllerV2 orderControllerV2() { return new OrderControllerV2(orderServiceV2()); } @Bean public OrderServiceV2 orderServiceV2() { return new OrderServiceV2(orderRepositoryV2()); } @Bean public OrderRepositoryV2 orderRepositoryV2() { return new OrderRepositoryV2(); }여기에 질문 내용을 남겨주세요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 데이터베이스 연결
h2 데이터베이스 연결이 자꾸 안된다고 뜹니다...Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided)
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
react 소스 부탁드립니다.
강의 너무 잘 보고 있습니다.강의를 진행하면서 그냥 따라하는것보다는이건 이렇게도 해보고 저건 저렇게도 해보면서 배움을 진행 하는게 좋을 것 같아요청 드립니다 ㅎ좋은 강의 감사합니다.jhr7124@naver.com
-
미해결스프링 핵심 원리 - 기본편
웹과관련된부분이 머에여?
여기서 중요한점이 있다. request scope를 사용하지 않고 파라미터로 이 모든 정보를 서비스 계층에 넘긴다면, 파라미터가 많아서 지저분해진다. 더 문제는 requestURL 같은 웹과 관련된 정보가 웹과 관련없는 서비스 계층까 지 넘어가게 된다. 웹과 관련된 부분은 컨트롤러까지만 사용해야 한다. 서비스 계층은 웹 기술에 종속되지 않고, 가급적 순수하게 유지하는 것이 유지보수 관점에서 좋다.request scope의 MyLogger 덕분에 이런 부분을 파라미터로 넘기지 않고, MyLogger의 멤버변수에 저장해서 코드와 계층을 깔끔하게 유지할 수 있다. <-이부분이 이해가 안되여 ㅠ 웹과관련된 정보라는게 머에여? public void logic(String id) { myLogger.log("service id = " + id); 이부분도 웹과관련된부분 아닌가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
@GeneratedValue 전략
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@GeneratedValue 에서 따로 strategy 전략을 안주면 AUTO로 설정되고 jpa에서 pk 순서?를 관리해주는걸로 알고있는데몇번 post man으로 API 요청을 날리다보니 member_id 가 1,2까지 순차적으로 증가하다가 갑자기 52번으로 뛰었어요. 그래서 member_seq 테이블의 값을 3으로 수정해줬는데 다시 api 호출을 해보니 음수로 바뀌었습니다. 이부분이 이해가 안가는데 pk 값을 어떤식으로 동작? 관리 하는지 알려주시면 감사하겠습니다. 그리고 이 방식은 항상 순차적인 값으로 증가가된다는 보장이 없는것 같은데 AUTO 로 사용해도 되는지 궁금합니다.참고로 db는 Mysql 사용했습니다. .