묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
단원별 소스코드
안녕하세요.이제 강의를 조금씩 들어보려고 하는데 강의 pdf는 있는데 소스코드는 따로 못본거 같은데 어디서 확인할 수 있을까요? https://github.com/onjsdnjs/spring-security-master/tree/master이거인거 같은데 단원하고 코드하고 연결이 안되어있어서 각 강의 단원별 뭘 봐야되는지 알수가 없어서 너무 많은 시간이 낭비되는거 같습니다.... 체계화가 안되어있어서 시작하기 전 부터 좀 실망스럽고 당황스럽습니다. 맵핑 (단원 - 깃 브랜치) 되어있는 자료가 있으면 좋겠습니다. 감사합니다.
-
미해결스프링 핵심 원리 - 기본편
롬복 @Setter를 써야 하는 상황이 있는건가요?
인텔리제이가 requestURL을 필드에서 @Setter로 바꾸라고 추천을 하던데 강의에서는 직접 Setter를 작성 하시더라구요 롬복 @Setter를 쓰면 좋은 상황이 따로 있는건지 아니면 강의에서 보기 편하라고 setter를 직접 작성하신건지 궁금합니다 private String uuid; private String requestURL; public void setRequestURL(String requestURL) { this.requestURL = requestURL; } ================================= ================================ private String uuid; @Setter private String requestURL;
-
미해결스프링 핵심 원리 - 기본편
빈 등록 메서드의 파라미터가 빈이 아니어도 되나요?
@Configuration public class AppConfig { @Bean public A methodA(B b) { b.xxx(); return A; } }위는 예시 코드에서처럼빈을 수동으로 등록하려할 때, methodA에 전달 받는 B 클래스가 스프링 빈이 아닌 일반 클래스여도 되나요? 만약 아니어도 된다면 어떤 식으로 동작하는걸까요?
-
해결됨[Lv1] 면접에서 '설명할 수 있는' Spring Boot - 경험으로 답변하는 백엔드 개발
postman request url {{baseURL}} 어떻게 하신걸까요?
3-5 강의 14:34 에 요청 URL 을 var 로 선언해두셨는데, 어떻게 하는걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
project JDK is misconfigured
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.뭐가 문제일까요,,
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepositoryTest 실행오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)MemberRepositoryTest가 실행이 안됩니다.실행 시 Execution failed for task ':test'.> There were failing tests. See the report at: file:///C:/%EC%9D%B8%ED%94%84%EB%9F%B0_%EC%8A%A4%ED%94%84%EB%A7%81JPA_%EC%8B%A4%EC%A0%841/jpashop/build/reports/tests/test/index.html* Try:> Run with --scan to get full insights.BUILD FAILED in 2s4 actionable tasks: 1 executed, 3 up-to-date라는 오류가 계속 뜹니다.https://drive.google.com/file/d/1LNpdY4Fqk9nXDHT11tj0hEyGf_zKRgVr/view?usp=sharing
-
미해결[4주 과정] 『부트캠프 백엔드 개발자 편 with 스프링 부트』 완독 챌린지
ProductController 생성 위치
책 99페이지에서 만든 ProductController는 src/test/java 하위에 만들어져있는데, 이곳에 파일을 그대로 둔 채로 책 107페이지 스프링 빈 실습을 진행하면 제대로 진행이 되지 않았습니다.혹시나 하여 test가 아닌 src/main/java 하위로 옮기고 진행하니 책의 결과와 같은 결과가 나왔습니다. 책 어디에도 ProductController의 파일 위치를 옮긴다는 말이 작성되어있지 않은데 옮기고 진행하는 것이 맞는지 궁금합니다!
-
해결됨[실습] 대기업 근무하며 경험한 Redis를 야무지게 사용하기
AsyncPERStrategy 비동기 처리 관련 이슈
안녕하세요! 해당 강의를 통해 redis pipeline과 lua script 활용 법을 눈으로 보고 배울 수 있어서 재밌게 수강하고 있습니다. AsyncPERStrategy() 메서드를 통해 랜덤한 확률로 레디스의 캐시 데이터를 업데이트 하는 것으로 이해하였습니다. 캐시 데이터를 업데이트를 비동기적으로 처리를 위해 프록시 기반 AOP로 동작하는 @Async 어노테이션을 활용하셨는데, 해당 메서드를 내부호출 함으로써 비동기 처리가 안되는 것으로 예상됩니다! 혹시 제가 잘못 알고있을 수도 있으니 확인 부탁드립니다!
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
강의 연장 요청
안녕하세요, 강의 연장 요청드립니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, 강사님! 강의를 듣다가 리포지토리 추상화와 관련하여 실무적인 고민이 생겨 질문드립니다. ( java 학습 전에 안드로이드 kotlin 개발 중에 겪었던 문제)현재 인터페이스를 통해 리포지토리를 추상화하고, 향후 데이터 저장소가 바뀌어도 MemberService 등 비즈니스 로직을 보호하는 설계를 공부하고 있습니다. 그런데 만약 외부 시스템이나 DB의 ID 규격이 바뀌어 데이터 타입 자체가 달라지는 경우에는 어떻게 대처하는 것이 정석인지 궁금합니다.1. 타입 불일치 및 형변환의 한계 예를 들어, 현재 우리 시스템의 도메인(Member) ID는 Long인데, 나중에 도입할 외부 API의 ID가 2131293e-r1232... 같은 UUID(String) 형태라면, 물리적으로 Long으로의 형변환 자체가 불가능합니다.2. 이 경우 어떤 방식이 가장 권장되는 '정석'인가요?방안 A: 도메인 모델은 우리 시스템의 기준(Long)을 유지하고, 리포지토리 구현체 내부에서 외부 ID(String)를 별도의 필드에 매핑(저장)하며 우리만의 PK를 새로 생성한다.방안 B: 인터페이스와 도메인의 ID 타입을 처음부터 가장 범용적인 String으로 변경하여 외부 규격에 맞춘다.방안 C: 기타 실무에서 주로 사용하는 별도의 전략이 있는지 궁금합니다.3. 고민의 요지 구현체 내부에서 '임의로 타입을 가공하거나 재조립'해서 서비스에 넘겨주는 것이 도메인의 순수성을 지키는 올바른 방향인지, 아니면 애초에 이런 타입 변경의 가능성까지 고려하여 인터페이스를 더 유연하게(예: Generic 사용 등) 설계해야 하는 것인지 강사님의 실무 노하우를 듣고 싶습니다!
-
미해결[4주 과정] 『부트캠프 백엔드 개발자 편 with 스프링 부트』 완독 챌린지
스프링공식문서에 어노테이션 페이지가 있나요?
어노테이션 뭐가 있는지 궁금했습니다. 스프링 공식 문서(https://docs.spring.io/spring-framework/reference/index.html)에 Annotation 검색해보니까 여러가지가 나오네요. 어떤 걸 봐야 어노테이션 전체를 볼 수 있나요?어노테이션 페이지가 따로 없나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
단위/통합 테스트 버전충돌 문제
취준생으로서 아주 유용하게 강의를 듣고있습니다. 그런데 테스트코드를 실행할 때 현재상황에서 기본설정된 junit6이 지원되지않는 상황이고 build.gradle 의존성에서 junit5로 지정변경하고 테스트 케이스를 작성하고 실행할때 junit5와 6이 버전충돌해서 테스트코드가 실행이 안됩니다. 어떻게 해결해야 할까요?
-
미해결견고한 결제 시스템 구축
프로그램 아키텍쳐
혹시 프로젝트 아키텍처는 어떤 구성을 위주로 구성하였을까요?제가 보기에는 핵사고날 아키텍처를 일부 차용하여 성향에 맞게 적용한 것 같은데이 아키텍처로 페이먼트서비스를 만든 이유와 장단점 같은 게 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
테스트 속도가 나중에 영향이 있을까요?
전 강의에서 한 "싱글톤 패턴을 적용한 객체 사용" 테스트와 이번 강의에서 한 "스프링 컨테이너와 싱글톤" 테스트의 속도 차이가 꽤 차이 나던데 (제 환경에서는 30ms 대와 300ms대 정도로 10배 차이)이게 나중에 코드가 많아지면 문제가 되는지,이 속도를 빠르게 최적화 하는 방법이 있는지 궁금합니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
private 상수 테스트 관련 질문
안녕하세요, 선생님의 강의 덕에 개인 프로젝트에 테스트를 적용하는 재미를 느끼고있는 수강생입니다. 강의 내용을 참고하여 개인 프로젝트에서 도메인 테스트를 작성하던 중,한 가지 개념적으로 헷갈리는 지점이 있어 질문드립니다. 강의 중“private 메서드는 테스트할 필요도 없고, 해서도 안 된다”라고 말씀 주셨는데, 엔티티 내부에 도메인 정책으로서 private static final 상수와 이를 사용하는 private 검증 로직이 존재하는 경우엔 어떻게 하지...? 라는 궁금증이 생겼습니다.이때 테스트에서는 경계값을 검증해야 하는데,@Entity public class TransactionFile extends BaseEntity { private static final long MAX_FILE_SIZE = 10; // 중략 private static void validateSize(long size) { state(size != 0, "파일 크기는 0보다 커야합니다."); state(size <= MAX_FILE_SIZE*1024*1024, "파일 크기는" + MAX_FILE_SIZE + "MB 이하여야 합니다."); } } 상수가 private 이므로 테스트 코드에서 값을 참조할 수 없습니다.class TransactionFileTest { long fileSize = MAX_FILE_SIZE * 1024 * 1024 - 1; // 테스트에서는 접근 불가 } 결국 궁금한 점은 private 상수를 경계값 테스트 기준으로 사용할 시...□ 단순히 도메인 모델 정책만 지켜지는지 검증하고 경계값 테스트를 안하는게 맞는지 (예 - MIN_VALUE, MAX_VALUE를 써서 그냥 충분히 작은값, 큰값으로 테스트하고 넘기기)□ 아니면 리플렉션을 이용해서 상수 값을 참조해야하는지(강의 중 리플렉션에 대해 부정적으로 말씀해 주셔서, 이런 경우에도 리플렉션을 지양하는 것이 맞는지 아니면 예외적으로 고려할 수 있는 상황인지...) 강의자님의 실무 기준을 듣고싶습니다.
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
이벤트) 백엔드 기술면접 실전문제집
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분어느 부분에서 막히셨나요?코드의 어떤 로직이 이해가 안 되시나요?어떤 개념이 헷갈리시나요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요?에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 안녕하세요. 아직 수강전인데 수강을 해야만 백엔드 기술면접 실전문제집을 받을 수 있는건가요? (혹시 아직 여분이 있는걸까요?!)
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
CustomAuthenticationProvider 추가 관련 문의
첨부한 사진의 소스 상으로 보면 @Bean으로 두개의 customAuthenticationProvider를 등록했습니다. 그러면 @Bean으로 등록했기 때문에 이 두 커스텀 프로바이더는 처음에 parent의 providers에 추가되고,http build 하는 과정에서 빌더에 이 두 커스텀 프로바이더를 추가하니 child 쪽의 providers에도 다시 추가,http.formLogin(Customizer.withDefaults());를 호출하기 때문에 child 쪽에 DaoAuthenticationProvider 추가.최종적으로child - CustomAuthenticationProvider, CustomAuthenticationProvider2, DaoAuthenticationProverparent - CustomAuthenticationProvider, CustomAuthenticationProvider이렇게 추가되어야 하지 않나요?
-
미해결스프링 핵심 원리 - 고급편
Decorator 에서 추상메서드로 뺄때 질문 있습니다.
1) 실제 로직@Slf4j public class TrueComponent implements Component { @Override public String operation() { log.info("TrueComponent 가 실행되었습니다."); return "data"; } }2) 추상클래스@Slf4j public abstract class AbstractorDecorator implements Component { private Component component; public AbstractorDecorator(Component component) { this.component = component; } @Override public String operation() { log.info("AbstractorDecorator.operation() 실행"); String result = component.operation(); log.info("AbstractorDecorator.operation() 종료"); return result; } }2) 자식@Slf4j public class DecoratorTest1 extends AbstractorDecorator { public DecoratorTest1(Component component) { super(component); } @Override public String operation() { log.info("DecoratorTest1.operation() 실행"); super.operation(); log.info("DecoratorTest1.operation() 실행"); return "data"; } }3) 자식 @Slf4j public class DecoratorTest2 extends AbstractorDecorator { public DecoratorTest2(Component component) { super(component); } @Override public String operation() { log.info("DecoratorTest2.operation() 실행"); super.operation(); log.info("DecoratorTest2.operation() 실행"); return "data"; } }4) 테스트 코드@Slf4j public class DecoratorPatternTest2 { @Test void abstractDecorator() { Component trueComponent = new TrueComponent(); DecoratorTest2 decoratorTest2 = new DecoratorTest2(trueComponent); DecoratorTest1 decoratorTest1 = new DecoratorTest1(decoratorTest2); DecoratorPatternClinet decoratorPatternClinet = new DecoratorPatternClinet(decoratorTest1); decoratorPatternClinet.execute(); } }질문))) MessageDecorator, TimeDecorator 의 중복부분인private Component component; public AbstractorDecorator(Component component) { this.component = component; }해당 부분을 줄이기 위해서 추상메서드로 올렸는데추상메서드로 올리고 코드를 실행하면 추상메서드의 log.info("AbstractorDecorator.operation() 실행"); 이부분이 어쩔수 없이 중복으로 호출되는데, 코드를 줄이기 위해서 사용하기 때문이 중복으로 호출되는건 상관이 없는 건가요?
-
미해결[4주 과정] 『부트캠프 백엔드 개발자 편 with 스프링 부트』 완독 챌린지
AnnotationDemo 클래스가 어디있나요?
p107'3주 차 난생 첫 프로젝트, 상품 조회와 등록 API' 내 '4 스프링 IoC & 스프링 빈 등록하기' 내 '@Component를 달아 두면 생기는 일' 질문 입니다. AnnotationDemo 클래스가 어디있는지 모르겠습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
Java JDK 버전 문의의 건
알려주신대로 java jdk 11버전으로 다운받고Gradle 11버전이 없어서 17로 받았는데, 버전 오류가 발생한 것 같습니다. 17버전을 다시 다운받으려고 하는데, 어떤걸 해야하는지 확인 부탁드립니다!