묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Java TPC 실전프로젝트 (Java API 활용)
선생님 javaTPC API편 PDF파일이 안보여서요~
Issues여기 탭에 있는 것 아닌가요??++++++++++maven repository에 paho api 다운로드가 다 notFound 되어 있는데다른 방법 없을까요?++++++++++https://www.inflearn.com/questions/873916/%EC%84%A0%EC%83%9D%EB%8B%98-api%EC%99%80-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EA%B0%80-%EC%9E%98-%EC%9D%B4%ED%95%B4%EA%B0%80-%EA%B0%80%EC%A7%80-%EC%95%8A%EB%8A%94%EB%8D%B0%EC%9A%94위 링크 질문 답글에 답글 혹시 부탁드려도 될까요??ㅜㅜㅜ
-
해결됨스프링 핵심 원리 - 기본편
@RequiredArgsConstructor이 작동하지 않음
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]위와 같이 @RequiredArgsConstructor 설정해주었지만 해당 생성자가 없다고 에러가 납니다.lombok설치 자체는 HelloLobok은 에러없이 돌아가는 것으로 보아 정상 설치 된 거 같습니다.위와 같이 getter, setter 없이 잘 동작합니다.
-
미해결스프링 핵심 원리 - 기본편
의존 관계 자동 주입 시 아직 등록되지 않은 빈이 어떻게 들어가는지 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 강의를 듣고 이해하던 중에 궁금한 점이 생겼습니다. 먼저 결과 이미지입니다.위 결과를 보면 memberServiceImpl의 인스턴스가 먼저 생성이되고 등록되는 거 같아보입니다.그런데 여기서 제가 궁금한 것은 바로 밑에 memoryMemberRepository가 등록되는데 제가 생각하기로는 두 객체의 인스턴스가 반대 순서로 등록이 되어야 아닌가 하는 생각이 들었습니다.그 이유는 다음 코드를 봐주시면 감사하겠습니다.위 코드처럼 MemberServiceImpl은 생성될 때, MemberRepository를 넣어서 생성합니다. 그렇다면 MemoryMemberRepository 빈이 등록되지 않은 상태에서 MemberServiceImpl의 빈이 만들어진다면 객체가 만들어진 후에 넣을 수 있어야 말이 된다고 생각했습니다. 하지만 현재 제 코드에서는 private final MemberRepository이기 때문에 후에 setter나 다른 메서드로는 넣을 수 없는 걸로 알고 있습니다. 또한 MemberRepository를 넣을 수 있는 setter나 다른 메서드들 또한 없습니다.그렇다고 했을 때, 어째서 MemberServiceImpl 빈이 먼저 만들어지는데도 불구하고 에러가 나지 않는지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
실무에서 RequiredArgsConstructor를 사용할 때의 Annotation 사용 유무
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요. Lombok의 RequiredArgsConstructor를 https://www.inflearn.com/questions/71872/requiredargsconstructor%EA%B3%BC-qualifier%EC%A7%88%EB%AC%B8저와 비슷한 질문이 있을까봐 질문 게시판을 찾다가 위의 글을 익어보았습니다. 실무에서도 저렇게 Lombok 설정을 바꾼 다음에 Primary, Qualifier, 혹은 사용자 정의 Annotation을 필드 앞에 적는 방식을 주로 사용하나요? 저러면 개발 팀 전체의 Lombok 설정이 바뀌는 것인데, 보통 저걸 합의하고 저렇게 바꾸는지 여쭤보고 싶습니다.아니면 실무에서는 Primary, Qualifier, 혹은 사용자 정의 Annotation을 사용하지 않고Discountpolicy rateDiscountPolicy;위와 같이 필드명(패러미터명)을 바꿔서 사용하는 방식이 일반적인지 여쭤보고 싶습니다. 강의에서는 위와 같은 방식을 별로 강조하지 않으셔서, 의문점이 남습니다. 또한 제가 생각하기에도 바람직한 방법은 아닌 것 같은게, package hello.core.order; import hello.core.discount.DiscountPolicy; import hello.core.member.Member; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberRepository; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component @RequiredArgsConstructor public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy rateDiscountPolicy; @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); int discountPrice = rateDiscountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPrice); } }위와 같이 rateDiscountPolicy를 필드명으로 선언하면 createOrder에서도 rateDiscountPolicy로 사용해야 하는 불상사가 일어나지 않나요? 긴 글 읽어봐주셔서 감사합니다.
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
_11_Continue 에서 증감연산자 질문있습니다!
package chap_04; public class _11_Continue { public static void main(String[] args) { int max = 20; // 최대 음료 판매 수량 int sold = 0; // 현재 음료 판매 수량 int noShow = 17; // 대기번호 17번 손님이 노쇼 for(int i = 0; i <= 50; i++) { System.out.println(i + "번 손님, 주문하신 음료 나왔습니다."); sold++; System.out.println(sold); // ++sold, sold++ 값이 같게 출력됨??? if(sold == max) { System.out.println("금일 재료가 모두 소진되었습니다."); break; } } System.out.println("금일 영업을 종료합니다."); } }안녕하세요!증감 연산자 관련하여 질문 드립니다.강의에서 sold++ 후위 연산자를 사용하셨는데요."System.out.println(i + "번 손님, 주문하신 음료 나왔습니다.");" 다음에현재 음료 판매 수량을 증가시키기 위해 전위 연산자 ++sold 를 사용해야 된다고 생각했었는데요.강사님께서는 왜 전위 연산자인를 사용하지 않고 후위 연산자를 사용하셨는지 이유가 궁금합니다."System.out.println(i + "번 손님, 주문하신 음료 나왔습니다.");" 다음에++sold 를 입력해도 결과 값이 같게 나오던데, 왜 전위 연산자와 후위 연산자 결과 값이 동일하게 출력되는지 이유를 모르겠습니다. 😢
-
해결됨스프링 핵심 원리 - 기본편
OCP의 대해서 질문이 있습니다.
OCP에 대해서 궁금한 점이 있습니다. 제가 이해하기로는 OCP란 기능을 확장을 했을 때, 구성 영역인 AppConfig와 확장된 기능에 대한 코드 말고 클라이언트 코드(사용 영역)의 변경이 없어야 된다고 이해했습니다. 그런데 만약에 여기서 기능의 확장을 하면서 메서드 명이 바뀐다거나 메서드의 인자가 추가된다고 했을 때는 결국 OCP를 지킬 수 없다고 생각을 합니다. 다음은 제가 생각한 예시입니다.예시 1 인자추가 또는 변경 => 강의에서 사용하신 discount에서 상품에 분류에 따라 할인률이 바뀐다고 한다면 결국 public int discount(Member member, int price) 해당 메서드에서 상품에 가격뿐만 아니라 상품의 종류를 나타낼 인자 혹은 상품이라는 객체를 만들면서 인자를 변경해야 합니다.예시 2 메서드명의 변경=> MemberRepository의 save라는 메서드명을 regist로 바꾼다고 하면 결국 MemberServiceImpl의 코드도 save에서 regist로 변경해야 합니다.결국 두 예시 모두 변경에 닫혀있지 않게 되는데 그렇다고 해서 OCP가 위반되었다고 볼 수 있는 건가요? 이런 모든 경우를 따진다면 사실 OCP는 지킬 수 없는 원칙이라 생각되는데 막상 친구가 저런 반박을 했을 때 딱히 할 말이 없었습니다. 이런 경우에 위반인지 아닌지와 이유에 대해서도 설명해주시면 감사하겠습니다.
-
미해결스프링 핵심 원리 - 기본편
CoreApplication.java 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 마지막에 앱실행 하는 부분에서 이 에러가 발생합니다.포트번호를 이미쓰고 있다고 말하는거 같은데 핸들링을 못하겠습니다. 혹시 방안 제시 해주실수 있을까요 ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
IntelliJ 질문드립니다.
안녕하세요 인텔리제이에 대해 잘 알지못해 질문드립니다.강의가 intellij 무료버전으로 진행이 되는데 유료버전을 사용해도 환경설정 등 동일하게 강의 수강하며 코딩하는데 지장이 없는지 궁금합니다.
-
미해결모든 개발자의 실무를 위한 올인원 기본기 클래스
강의 자료 링크
강의 자료 링크가 동작이 안되는데 확인 부탁 드립니다!
-
미해결그림으로 배우는 자바, 파트2: 객체지향!
출력값이 다르다고 나오네요!
클라우드 스터딩에서 실행은 되는데 오류 없이 출력값이 다르다고 나오네요강의에서 알려주신 코드가 아니라 제 마음대로 코드를 짜서 그런가요? 코드 최대한 안따라하고 혼자 해보려고 했는데 잘못된 부분많을까요?ㅠ public class Starcraft {public static void main(String[] args) {// 객체 생성Marine ma = new Marine("레이너", 80);Medic me = new Medic("모랄레스", 60, 60);// 마린의 스팀팩!ma.steam();// 메딕의 힐!me.heal(ma);}}// 정보 클래스class Marine {String name;int hp;Marine(String name, int hp) {this.name = name;this.hp = hp;}void steam() {System.out.printf("[%s]의 스팀팩! Hp: %d -> %d\n", name, hp, hp-10);hp = hp-10;}}class Medic {String name;int hp;int mp;Medic(String name, int hp, int mp) {this.name = name;this.hp = hp;this.mp = mp;}void heal(Marine ma) {System.out.printf("[%s]의 치유! => [%s] Hp(%d -> %d)", name, ma.name, ma.hp, ma.hp+10);ma.hp = ma.hp + 10;}}
-
해결됨그림으로 배우는 자바, 파트2: 객체지향!
연습문제 이클립스에서는 되는데요
public class SongTest { public static void main(String[] args) { Artist h1 = new Artist("유재하", "별헤는밤"); Artist h2 = new Artist("임재범", "비상"); Artist h3 = new Artist("박완규", "비밀"); Artist them[] = {h1, h2, h3}; for(int i=0; i<them.length; i++) { them[i].printStr(); } }}class Song { String singer; String song; Artist(String singer, String song) { this.singer = singer; this.song = song; } void printStr() { System.out.println("Song { name: " + singer + ", " + "song: " + song + " }"); }} 이거 이클립스에서는 컴파일오류 없이 돌아가는데클라우드 스터딩 사이트에서는 오류가 나네요뭐가 문제일까요? /root/var/tmp/2023_05_13_08_49_23_350d34e1/SongTest.java:21: error: invalid method declaration; return type requiredArtist(String singer, String song) {^1 error
-
해결됨스프링 핵심 원리 - 기본편
프로세스흐름도를 그릴때 보통 어떤프로그램을 많이 사용하나요? 대ㅐ중화된 프로그램이 있을까요? 아니면 그냥 PPT 를 활용해서 캡쳐해서 사용하는식인가요? 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) Y2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 모름3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) Y[질문 내용]안녕하세요. 강의를 듣고 있는 학 직장인입니다. 20초에 나오는 설계 그림중 프로세스 흐름도를 그리신 자료가 있는데요. 개발자들이 보통 구조도나 프로세스흐름도를 그릴때 사용하는 프로그램이 어떤 프로그램을 많이 사용하는지 궁금합니다. (대중적인게있는지요.)질문자체가 좀 뜬구름 잡는 질문일 수 있지만 순수하게 궁금하여 물어보는 점 양해부탁드립니다.
-
미해결스프링 핵심 원리 - 기본편
단일책임 원칙에 대해 질문이 있습니다.
요청과 응답에 대한 DTO클래스를 생성할때 이너클래스를 사용해도 될까요?@Getter @Setter @NoArgsConstructor public class Member { @Getter public static class Request { private String name; } @Getter public static class Response { private Long id; private String name; } }이런식으로 하나의 클래스안에 두개의 책임을 가지게 되면 SRP에 위배되는 거니까 요청과 응답에 대한 DTO를 모두 만들어 두는게 더 좋은걸까요? 그렇게 하면 DTO클래스들이 너무 늘어날까봐 좋지 않을것 같고..질문을 요약하자면 DTO를 많이 생성하더라고 SRP를 지키는게 좋은 선택일까요?
-
미해결스프링 핵심 원리 - 기본편
프록시 객체 조회하기
[질문 템플릿]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 서버 쪽 오류인 것 같기도 한데 확인 부탁드립니다 ㅠㅠ