묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
프록시 객체 조회하기
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네[질문 내용]request 스콥인 객체를 DI 할 때, 프록시를 만들어 가짜 객체를 주입하는것으로 이해했습니다.예제에서 LogDemoController에서 위 방법을 사용했으므로, LogDemoController 빈을 컨테이너에 저장할 때 DI 가 진행되어 필드값인 myLogger 에 myLogger의 프록시 객체가 저장되었다 생각했습니다.이후 @PostConstruct 를 통해 해당 필드값을 조회하면(롬복을 적용해 toString 을 사용했습니다) 오류가 발생합니다. 오류메세지에서 myLogger 가 request 스콥이고 아직 request가 없다고 했는데, myLogger에는 프록시 객체가 이미 저장되어있어서 조회가 될 거라 생각했는데 왜 조회가 안될까요?@Controller @RequiredArgsConstructor @ToString public class LogDemoController { private final LogDemoService logDemoService; private final MyLogger myLogger; @PostConstruct public void init() { System.out.println(this.toString()); } }
-
미해결스프링 핵심 원리 - 기본편
policyMap.get(discountCode) 부분이 이해가 되질 않습니다.
public static int discount(Member member, int price, String discountCode) { DiscountPolicy discountPolicy = policyMap.get(discountCode); return discountPolicy.discount(member, price); } 여기서 policyMap 이 Map<String, DiscountPolicy> 라는 것 때문에 키값으로 문자열 "fixDiscountPolicy" 가 들어갔을때, value 값으로 fixDiscountPolicy 가 나오는 이유를 모르겠습니다.
-
미해결스프링 핵심 원리 - 기본편
복습 방법 및 로드맵 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 실무 경험은 1년 6개월 정도 있고,Java와 Spring 프레임워크 사용 경험이 있는 주니어 개발자입니다. 그러나 경력 동안 흔들리는 기초 개념도 많고, 제가 잘하고 있는 것인지 의문이 많이 들어서 얼마 전에 퇴사를 하고, 자바 기본 이론책과 인프런 강의를 수강하고 있는데요. 지금은 인프런 강의에 집중해서 공부를 하고 있습니다. 입문 강의 때부터 강의를 쭉 듣고, 인프런 강의노트에 필요한 이야기들은 받아 적고, 코드를 따라치면서 학습을 해나가고 있습니다. 이해가 안가는 부분들은 강의를 멈추고 검색을 해서 추가적으로 알아보는 부분도 있습니다. 곧 스프링 핵심 원리도 완강을 앞두고 있는데요.뭔가 온전히 제 것이 된 느낌들은 아니어서.. 이걸 조금 더 효율적으로 학습해서 어떻게 제 것으로 더 흡수하면 좋을지가 고민이 됩니다. 1) 완강 이후에 전체적으로 한 번 쭉 복습을 하는 것이 좋을지 궁금합니다.2) 추천하는 복습 방법이 있을까요? 복습 시에도 그대로 코드를 따라치면서 한 번 더 공부를 하는 게 좋을지. 아니면 기존에 학습했던 코드와 강의 자료를 같이 보면서 학습하는 게 좋을까요?3) 현재 개인 프로젝트를 준비 중에 있는데, 로드맵 순서 및 유튜브에 업로드된 로드맵 영상처럼 쭉 수강하면서 프로젝트 구현에 힘을 쓰면 좋을지,아니면 스프링 핵심 원리 강의 수강 이후에 MVC 1편-JPA 활용1 보면서 개인 프로젝트 진행해도 괜찮을지 궁금합니다. 강의 재미있게 잘 보고 있습니다.감사합니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
for-each 중 break, for loop 사용 간 차이
안녕하세요. 강의 잘 듣고 있습니다.쉽게 잘 풀어 설명해주셔서 재미있게 듣고 있습니다!Array Loop 파트 중 궁금증이 생겨 질문 드립니다.for loop를 이용해 배열 순회:순회 범위를 조절하는 경우 유리for-each를 이용해 배열 순회:배열의 처음부터 끝까지 순회하는 경우 유리정도로 우선 이해했는데,만약 for-each를 사용하고 내부에서 조건문을 이용해 break 처리해 반복을 멈출 수도 있다는 생각이 듭니다.두 가지 방법에 유의미한 차이가 있나요?(e.g. 배열이 큰 경우 속도 차이가 있어 성능 문제로 이어질 수 있나요?)두 방법 중 무엇을 사용하든 차이가 없다면 기기 성능이 점점 좋아지기 때문에 무의미해진 건가요? 아니면 단순히 가독성의 문제인가요?위 두 질문 이외에 개발 공부를 하면서 든 궁금한 점이 있어 추가로 질문을 드리고 싶습니다.어떤 문제를 해결하는데 가능한 방법이 여러가지가 있다면 성능 측면에서 더 좋은 해결 방법을 선택하고 싶습니다.어떤 방법이 더 성능이 좋은지(빠르고 부하가 덜한지)를 알려면 어떻게 해야 하나요?
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
입출력 스트림 질문입니다.
안녕하세요.FileOutputStream 객체 생성시 질문이 있어서 글 남깁니다.FileOutputStream fos = new FileOutputStream("output.txt");이후 try() resource 구문을 쓰는 건 문제가 되지 않는데 처음에 변수 초기화를 시켜주지 않고FileOutputStream fos = null;fos = new FileOutputStream("output.txt"); 위와 같이 작성 후 try resource 구문을 작성하면 에러가 나네요. 해당 원인이 무엇인지 궁금합니다.감사합니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
이해가 되었는지 확인차 질문드립니다!!
안녕하세요 강사님 늘 강의 잘보고 있습니다!이번 강의가 어려워서 제 나름대로 정리를 해보았는데제가 정리한게 맞는지 확인이 가능할까하여 이렇게 글 올려봅니다!!convertUSD(USD -> System.out.println(USD + " 달러 = " + (USD * 1400) + " 원"), 1); convertUSD 메소드의 매개변수로 Convertible Interface 와 int 가 있는데 매개변수 Convertible Interface 같은 경우, 오버라이딩 메소드를 자식 클래스에 만들어서 객체를 만들어 인자로 사용하는게 아닌 람다식을 이용해서 해당 Interface의 추상 메소드를 람다식으로 구현하여 사용한다고 이해했습니다.틀린 부분이 있다면 지적해주시면 감사하겠습니다!
-
미해결스프링 핵심 원리 - 기본편
강의 재생 오류 (크롬, 엣지)
안녕하세요.한 30분 전까지만 해도 강의 재생이 잘되었었는데어느 순간부터 흰 바탕화면에 아무런 반응이 없네요쿠키 삭제를 해봐도, 브라우저를 크롬에서 엣지로 바꿔봐도 똑같습니다.. +)개발자 도구로 확인해보니 api 서버 쪽 오류인 것 같기도 한데 확인 부탁드립니다 ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
java: package javax.persistence does not exist 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]springBoot 2.7.1, java 11 버전입니다자바를 동작시킬 때 java: package javax.persistence does not exist 어떻게 해결 하는지 아시나요 ㅠㅠspring-boot-starter-web-2.7.11spring-boot-starter : 2.7.11 package org.springframework.web.bind.annotation does not existpackage org.springframework.web.bind.annotation does not existpackage javax.servlet.http does not existcannot find symbol class HttpServletRequestcannot find symbol class RequestMappingcannot find symbol class ResponseBody 아 맨 밑에꺼 하니까 됏네요 ㅎㅎhttps://www.inflearn.com/questions/291210/%ED%86%B5%ED%95%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-%EA%B3%BC%EC%A0%95%EC%97%90%EC%84%9C-quot-package-javax-persistence-does-not-exist-quot-%EC%97%90%EB%9F%AC%EA%B0%80-%EB%B0%9C%EC%83%9D%ED%95%A9%EB%8B%88%EB%8B%A4 https://hyesun03.github.io/2019/08/27/intellij-cannot-resolve-symbol-error/
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
OOP 란 무엇인가요?
최근 OOP 란 무엇인가요?질문을 받았는대, 어버버한 경험이 있는대, 범위가 너무 광범위하여 답하기가 어렵습니다.
-
미해결스프링 핵심 원리 - 기본편
그림을 잘 이해한건지 모르겠습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]그림이 조금 이해가 인터넷도 찾아보고 했는데도 이게 맞는건가 싶어서 질문을 남겨봅니다.제가 이해한 바로는 스프링 DI 컨테이너 내에서 HTTP request 요청이 발생할 때마다 독립된 request 스코프를 먼저 생성하고, 해당 스코프 내에서 컴포넌트들이 동작하는 것을 나타낸다.각각의 요청은 자신만의 스코프를 가지며, 해당 스코프 내에서 필요한 데이터와 리소스를 공유하며 작업을 수행한다.이를 통해 각 요청이 독립적으로 처리되고, 다른 요청과의 상호작용을 방지할 수 있다.이 정도로 이해했는데 혹시 잘못된 부분이 있는지 질문드립니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
같이 볼만한 자바 교재
나도코딩님 강의 들으면서 참고하거나 공부 할 만한 자바 교재 있을까요?
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)
섹션3 함수와 메서드 부분 오류
안녕하세요 강의 잘 듣고있었는데 섹션3 함수와 메서드 부분부터 재생이 안되고 로딩화면만 뜨네요 ㅠㅠ 그 앞부분은 아무 문제 없었는데..
-
미해결PHP 7+ 프로그래밍: 객체지향
ios환경에서는 어떻게 설치해야 하나요?
안녕하세요. php를 배우고 있는 개발자입니다.제가 맥os를 사용하고 있습니다. m2칩입니다.강의는 윈도우 기준인거 같아, 맥도 설명해 주시면 감사하겠습니다!
-
미해결스프링 핵심 원리 - 기본편
cannot resolve symbol springframework 오류입니다
이런 식으로 에러가 떴는데, 무엇을 잘못 건드렸는지 모르겠어요ㅠㅠgradle을 다시 refresh 해봤는데 똑같습니다+) File > Invalidate Caches / Restart 로 해결했습니다.그 뒤로이렇게 out폴더까지 빨갛게 뜨는데 괜찮나요? 실행은 아직까지는 괜찮은데선생님은 .gradle폴더와 build폴더만 빨갛게 표시되서요
-
미해결스프링 핵심 원리 - 기본편
현재까지 내용에서 개발 순서가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.복습중에 문득 궁금한 점이 생겨서 질문드립니다.강의에서는 각각의 객체를 만든 후 OCP나 DIP등의 문제를 발견하였고 AppConfig를 만들어 이를 해결했습니다.실무에서는 객체를 만든 후 AppConfig를 만드는지 혹은 전체적인 설계도를 작성한 후 객체 간 관계를 파악하여 먼저 AppConfig를 만든 뒤 객체를 채우는지 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
생성자 주입 시 사용하는 @Autowired 에도 required=false 사용가능한가요?
안녕하세요 복습을 하는 중에 궁금한점이 있어서 글을 남깁니다.pdf 정리글 중항상 생성자 주입을 선택, 그리고 가끔 옵션 필요시 수정자 주입 선택.라는 부분이 존재하는데그럼 생성자 주입 때는 required=false를 사용하면 안되는 이유가 있는지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
Request에 따라 다른 bean을 선택하는 법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]OCP관점에서 컨트롤러 설계에 관해 궁금한 것이 있습니다.@Controller public class PaymentController { @PostMapping("/payment") public void pay(@RequestBody PaymentRequest req) { CardPaymentService cardPaymentService = cardPaymentFactory.getType(req.getType()); cardPaymentService.pay(req); } } @Service public class APaymentService implements CardPaymentService {...} @Service public class BPaymentService implements CardPaymentService {...} public class CardPaymentFactory { ... public CardPaymentService getType(CardType type) { CardPaymentService cardPaymentService; switch (type) { case A: cardPaymentService = aCardPaymentService; break; case B: cardPaymentService = bCardPaymentService; break; default: throw new IllegalArgumentException(); } return cardPaymentService; } } 위와 같은 구조가 있다고 할 때저런식으로 switch-case 문으로 설계하면 OCP 원칙에 위배된다고 생각하여 아래 내용이 궁금합니다.CardPaymentService cardPaymentService = cardPaymentFactory.getType(req.getType());(위 코드를 없애는 방법이 궁금합니다)Factory class 없이 Controller에서 req에 따라 자동으로 맞는 service가 주입하는 방법은 없는지? 설계를 다르게 해야하는지?
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)
클래스 내부에서 인스턴스 함수 호출시 문의
안녕하세요.코드 작성하다 질문사항이 있어 글 남깁니다.예를 들어,클래스를 하나 생성하고 거기에 인스턴스를 하나 생성한 다음 그 인스턴스 내부의 메서드 호출 시 오류가 나는 부분이 있어서요.player라는 클래스는 따로 생성하였고 거기에 play라는 메서드를 구현하였습니다. public class TestPlayer{Player player = new Player();player.play(); // 여기서 오류가 발생하는데}위에 언급한 것처럼 Player 클래스에 매서드는 잘 구현을 하였고, 이게 다른 메서드 내부 예를 들어 main method 내부에서는 전혀 문제될 게 없는데위와 같은 경우는 에러가 나네요. 메서드 밖에서는 즉 클래스 변수로 위치할 때에는 함수 호출을 금하도록 규정이 되어 있는게 있을까요 ? 자바를 예전에 공부했어서 복습차원에서 보다가 명쾌하게 궁금증을 해결하고자 문의 드립니다.
-
미해결스프링 핵심 원리 - 기본편
메소드 오버라이딩 오류
OrderServiceImplTest라는 파일로 테스트 하려던 중 createOrder와 관련된 오버라이드 오류가 발생했습니다. OrderServcieImpl 클래스에서는 The method createOrder(Long, String, int) of type OrderServiceImpl must override or implement a supertype method 라는 오류가 발생했고MemberRepository 클래스에서는The field OrderServiceImpl.discountPolicy is not visible 이 발생했습니다.DiscountPolicy 클래스에서는(1) Duplicate method createOrder(OrderServiceImpl, Long, String, int) in type DiscountPolicy(2) The field OrderServiceImpl.memberRepository is not visible(3) Duplicate method createOrder(OrderServiceImpl, Long, String, int) in type DiscountPolicy 이 차례로 발생하였습니다.오버라이드 관련 오류인건 알겠는데, 어디서 어떤 부분을 고쳐야할지 막막하네요 2시간 30분 가량 구글링도 해보고 직접 코드도 수정해봤는데 오히려 먼 산으로 가는 느낌입니다. 도와주세요 ㅜ_ㅜ
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
퀴즈 11 질문 입니다.
아래의 코드를 보시면 에러 1은 퀴즈의 정답대로 처리를 하였고에러 2는 그냥 sout으로 바로 출력을 하였습니다.당연히 퀴즈의 물음은 에러 2처럼 출력을 하는것이 아닌거는 알고있지만 출력 결과는 같습니다.문제의 의도는 예외 객체 생성메시지, 예외 처리 메시지를 각각 만드는 연습을 하는것인건 알겠지만, 출력은 똑같이 나오니 이걸 어떻게 구분하는지, 그냥 sout출력과 무슨 차이인지 잘 모르겠습니다.(굳이 이 문제에서 thow,catch를 써서 처리하는 이유, 아니면 단지 이 문제에서만 이렇지 실무가면 확연하게 차이가 나는 부분인지)아직 너어어어무 초보 수준이라 질문 자체가 두서가 없는거 같고 아마 질문 보시면 헛웃음 나오실거 같긴합니다..package chap_11;// 에러코드// 0 (에러 없음), 1 (판매 시간 아님), 2 (매진)// 0 인 경우? 상품 구매를 완료하였습니다.// 1 인 경우? 상품 구매 가능 시간이 아닙니다. / 상품 구매는 20시부터 가능합니다.// 2 인 경우? 해당 상품은 매진되었습니다. / 다음 기회에 이용해주세요.public class TEST {public static void main(String[] args) {int errorCode = 2; try {if (errorCode == 0) {System.out.println("상품 구매를 완료하였습니다."); } else if (errorCode == 1) {throw new AppleException("상품 구매 가능 시간이 아닙니다."); } else if (errorCode == 2) {System.out.println("해당 상품은 매진되었습니다."); System.out.println("다음 기회에 이용해주세요."); }} catch (AppleException e) {System.out.println(e.getMessage()); System.out.println("상품 구매는 20시부터 가능합니다."); }}}class AppleException extends Exception {public AppleException(String message) {super(message); }}class Banana extends Exception {public Banana(String message) {super(message); }}