묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
강의가 잘못 업로드 되어 있습니다.
안녕하세요, 강의를 잘 수강하고 있는데 입출력 스트림 파트의 여러가지 보조 스트림 클래스들 강의가 해당 내용이 아닌 큐 구현하기 강의가 업로드 되어있어 수정 요청드립니다.
-
미해결스프링 핵심 원리 - 기본편
autowired와 접근 제어자에 대해서 질문이 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]"수정자 주입을 사용하면, setXxx 메서드를 public으로 열어두어야 한다."라고 하셨는데 객체가 생성되고 autowired 수정자메소드를 실행시키기 때문에... 즉, 외부에서 메소드를 호출하기 때문에 public를 열어두어야 하는 것인가요?위에 내용이 맞다면 autowired를 사용할 때는 전부 public으로 두어야하는게 맞을까요?
-
해결됨스프링 핵심 원리 - 기본편
구체 타입?
안녕하세요!findBeanByName2 테스트 케이스를 '구체 타입으로 조회'라고 하셨는데 '구체'라는 의미가 '구현체'인가요? 아니면 '구체적'이라는 의미일까요...?
-
해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)
블로그 정리 질문합니다
개인 블로그에 배운 내용 올려도 될까요?
-
미해결스프링 핵심 원리 - 기본편
"필드 주입은 외부에서 변경이 불가능해 테스트하기 힘들다는 치명적인 단점이 있다"에 대한 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 영한님~ 강의 잘 듣고 있는 학생입니다.의존성 주입의 여러 방법 중 필드 주입에 대한 질문이 있습니다. 필드 주입에서 설명해주신 것처럼 생성자를 제거하고 필드 주입을 하니 NPE가 발생하고, 정말 DI 프레임워크가 없다면 테스트하기 힘듦을 느꼈습니다.그런데 앞의 "외부에서 변경이 불가능해" 라는 말은 어떤 의미인가요? OrderServiceImpl의 예시처럼 OrderServiceImpl이 memberRepository와 discountPolicy를 의존하고 있고, 이 코드를 테스트하려면 결국 setter 메서드를 열어줘야 하는데 결국 그러면 다형성을 이용해 변경이 가능한 것 아닌가요?
-
해결됨자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
run의 사용 방법에 대해 궁금한 점이 있습니다
안녕하세요 강사님. 완강하고 코틀린을 계속 공부하다가 궁금한 점이 생겨 질문 드립니다. run의 경우에는 아래와 같이 확장함수가 아닌 일반적인 메소드의 형태로 정의된 것이 있는 것을 발견했습니다.그래서 메소드를 작성할 때 run을 사용해서 작성할 수도 있겠다는 생각이 들더라구요. 예시로 Int의 확장함수로 거듭제곱을 수행하는 pow()라는 메소드를 작성할 때 보통은 다음과 같이 작성하겠죠.fun Int.pow(n: Int): Long { var result = 1L repeat(n) { result *= this } return result }그런데 위의 run을 사용해서 아래처럼 작성할 수도 있었고 두 경우 모두 같은 결과를 반환하는 것을 볼 수 있었습니다.fun Int.pow(n: Int) = run { var result = 1L repeat(n) { result *= this } result } 그러면 메소드를 작성할 때 두가지 방법 모두 사용할 수 있다고 생각되는데, 어느쪽을 사용하는 것이 좋은 방법일지 강사님의 의견을 듣고싶어서 질문 남겨봅니다.
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
코드 파일 런 버튼 비활성화
선생님 안녕하세요~제가 작성한 코드 파일을 실행하려는데 어떤 파일은 오른쪽 상단의 세모버튼(run 버튼)이 비활성화되어있더라고요..그래서 상단메뉴에서 run을 클릭하면 Run 0 Edit Configurations라는 팝업창이 뜨는데요.이럴 때는 어떻게 하면 좋을까요?
-
미해결스프링 핵심 원리 - 기본편
롬복 라이브러리 등록
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) y2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) y3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) y[질문 내용]여기에 질문 내용을 남겨주세요.강의자료대로 작성하였는데 오류가 떠요..!두번째 사진은 오류코드입니다 !!
-
미해결스프링 핵심 원리 - 기본편
프록시 객체 조회
교안에 "ac.getBean("myLogger", MyLogger.class) 로 조회해도 프록시 객체가 조회되는 것을 확인할 수 있다."라고 나와 있어서 한번 만들어 봤는데 잘 안 되네요. ac.getBean을 다른 곳에서 해야 할까요? 어떻게 해야 확인할 수 있을까요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
강의 내용 블로그 정리방법
선생님 안녕하세요, 백앤드를 희망하며 독학 중인 학생입니다.다름이 아니라 선생님 강의를 일단 1회독을 가볍게 보고 따라치면서 자바가 어떤건지 이해하고 2회독을 하면서 그땐 블로그에 정리도 함께 하고자 합니다. 그래서 여쭤보고 싶은 부분은, 많은 분들이 블로그에 공부를 정리한 용도로 많이 올리시는데저 역시 선생님 강의를 제가 배운 내용을 토대로 올리고자 하지만(출처 밝힘)어떤식으로 어떻게 올려야 할지는 감이 안와서요..막상 배운 내용을 그대로 따라 올리는건 복사 붙여넣기밖에 안될 것 같고빈 백지 상태에서 배운 코드를 하나씩 쳐보자니 시간이 많이 걸릴 것 같고 (이 단계까진 시간이 많이 걸릴 것 같습니다)강의 내용에 관한 궁금증과 별개이지만 배운 내용을 블로그에 정리하는 팁?을 알려주시면 감사하겠습니다!!
-
해결됨스프링 핵심 원리 - 기본편
@Scope("singleton")을 넣지 않았는데도 싱글톤으로 동작
위에 코드와 같이 ClientBean 위에 @Scope("singleton")을 넣지 않았는데도 싱글톤으로 동작하는것 같습니다.그 이유가 new AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class);에 있는 ClientBean.class 때문에 스프링 컨테이너에 등록 되어서 싱글톤으로 동작하는 것이 맞을까요?
-
미해결Java TPC 실전프로젝트 (Java API 활용)
TPC강의 모두 수강 후 현재 실전프로젝트 강의중 질문입니다.
안녕하세요. 자바 TPC 첫번째 강의를 모두 수강하고, 실전 프로 젝트를 수강해서 듣고있습니다. 위도,경도 추출_실습하는 강의를 들어서 주소입력하면 네이버에서 제공받은 내용을 받아오는건 했는데 그냥 따라쳐서 된 상황이라 원리도 모르겠고, 어렵게만 느껴지는데 이럴때는 어떻게 해야할까요? 계속 들었을때 도움이 될지 몰라서 질문드립니다.
-
미해결스프링 핵심 원리 - 기본편
프로토타입 스코프 10분 56초
@Autowired 하니깐 저는 빨간색으로 줄쳐지는데 이거 왜이런건가요?
-
미해결스프링 핵심 원리 - 기본편
런타임 구현객체 결정에 대하여
안녕하세요 영한강사님! 매번 큰 도움을 받고있습니다.이번 질문은 '객체 지향 설계와 스프링' 챕터의 마지막 소 챕터인 '객체 지향 설계와 스프링'의 4:40초 대 언급하신 말씀에 대한 질문입니다.말씀하신 바로는 런타임에 클라이언트가 의존하는 인터페이스의 구현체가 바뀔 수 있다고 하셨는데, 문맥에 따라서 구현객체가 바뀔 수 있다는 뜻인가요? 예를 들어주신 MemoryMemberRepository와 JdbcMemberRepository도 런타임에 바뀌어서 들어갈 수 있다고 하셨는데, 저는 컴파일 시점에 구현체가 결정되야 한다고 생각했거든요. 아니면 제가 런타임에 대해 오해를 하고 있는걸까요?항상 감사합니다 ^^
-
해결됨자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
setOf,mutableSetOf 기본 구현체가 LinkedHashSet이면
HashSet은 순서를 보장하지않고LinkedHashSet은 node로 순서를 보장하는걸로 알고 있습니다. 코틀린에서 타고 들어가면@SinceKotlin("1.1") public actual typealias LinkedHashSet<E> = java.util.LinkedHashSet<E>이렇게 나와서 그대로 사용하는 거 같더라구요 그래서 setOf 나 mutableSetOf는순서를 보장하는 Set이라고 생각해도 될까요?
-
미해결스프링 핵심 원리 - 기본편
김영한님 효율적인 로드맵이 뭔가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 지금 다음으로 강의에서는 기본편인 여기까지만 듣고 바로 JPA로 넘어가서 야생형으로 학습하시는걸 추천하셨는데, 유튜브 영상을 보면 고급전까지 스프링 강의를 다 들은다음에 JPA로 넘어가라고하시네요? 제가 이해를 잘못한건가요? 아니면 말씀이 달라지신건지요
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
입출력 파트
선생님 혹시 고급편 입출력 파트만 먼저 수강해도 되나요? 만약 입출력파트 이해를 위해 앞의 파트 수강이 필요하다면 어느 파트를 먼저 수강해야할까요? 오늘 유튭으로 기본편 모두 완강했고 고급편도 결제했습니다!
-
미해결스프링 핵심 원리 - 기본편
컴포넌트 스캔 - 필터 수강 중 질문
안녕하세요. 스프링 핵심 원리 기본편 중 컴포넌트 스캔의 필터 강의를 수강하던 중 에러가 생겼습니다. 에러는 해결했지만 궁금한 점이 생겨 질문 드립니다. 구분선을 기준으로 안에 있는 말들은 모두 상황의 이해를 돕기 위한 말들이니 질문만 보고 싶으시면 구분선 밖 마지막 말만 보셔도 괜찮으실 거라 생각합니다. 제가 작성한 코드는 다음과 같고 강의의 제목과 같이 컴포넌트 스캔의 필터 부분을 학습하기 위한 예제 코드입니다. package hello.core.scan.filter; import java.lang.annotation.*; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyIncludeComponent { }MyIncludeComponent라는 애노테이션을 생성하고 package hello.core.scan.filter; import org.springframework.stereotype.Component; @MyIncludeComponent public class BeanA { }위와 같이 해당 애노테이션이 붙는 클래스 BeanB를 생성하고 package hello.core.scan.filter; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import static org.assertj.core.api.Assertions.*; import static org.springframework.context.annotation.ComponentScan.*; public class ComponentFilterAppConfigTest { @Test void filterScan(){ ApplicationContext ac = new AnnotationConfigApplicationContext(ComponentFilterAppConfig.class); BeanA beanA = ac.getBean("beanA", BeanA.class); assertThat(beanA).isNotNull(); // BeanB beanB = ac.getBean("beanB", BeanB.class); } @Configuration @ComponentScan( includeFilters = @Filter(type = FilterType.ANNOTATION, classes = MyIncludeComponent.class), excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = MyExcludeComponent.class) ) static class ComponentFilterAppConfig{ } }위와 같이 테스트 코드를 만들어 실행하였습니다.ComponenScan을 이용해 MyIncludeComponent 애노테이션이 붙은 클래스를 자동으로 빈으로 등록시키고 조회하는 테스트 코드입니다.(MyExcludeComponent 애노테이션이나 해당 애노테이션을 붙힌 BeanB 클래스는 현재 질문과 관계가 없다고 판단해 코드를 생략하였습니다.)그런데 해당 테스트 코드를 실행하니 beanA라는 이름의 빈을 컨테이너에서 찾을 수 없다는 에러가 떴습니다.여러 방법으로 찾아보던 중 @ComponentScan 애노테이션의 includeFilters 속성과 @MyIncludeComponent 애노테이션을 올바르게 사용하여도, BeanA 클래스가 스프링 컨테이너에 등록되지 않는 경우가 생길 수 있고 이를 해결하기 위해선 @Component 애노테이션이나 @Service, @Repository 등과 같은 스프링이 제공하는 스테레오 타입 애노테이션 중 하나를 BeanA 클래스에 추가하여 해당 클래스를 스프링 빈으로 등록해야 한다는 해결책을 발견했고 그대로 따라했습니다. BeanA 클래스에 @Component 애노테이션을 붙혀 테스트 코드를 그대로 다시 실행하였고 에러는 해결이 되었습니다. 그래서 BeanA 클래스의 @Component 애노테이션을 다시 제거한 후 테스트 코드를 돌렸는데 성공하였습니다. 이런 일이 왜 발생하는지 제대로 이해가 안 되어서 질문 드립니다.@ComponentScan 애노테이션의 includeFilters 속성과 @MyIncludeComponent 애노테이션을 올바르게 사용하여도, BeanA 클래스가 스프링 컨테이너에 등록되지 않는 경우가 생길 수 있는 것인가요? 또 어떤 원리로 이렇게 등록이 안 되는 경우가 생기는지가 궁금합니다!
-
해결됨스프링 핵심 원리 - 기본편
LogDemoService 의 필요 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요! 좋은 강의 잘 보고 있습니다. 감사합니다.LogDemoController 에서 MyLogger 의 log 함수를 통해 로그를 잘 출력하는 부분은 이해하였습니다. 다만 LogDemoService 가 왜 필요한지는 잘 모르겠더라구요. (제가 Spring 초보라서 그런듯합니다만 ^^;;)@Controller @RequiredArgsConstructor public class LogDemoController { private final LogDemoService logDemoService; private final MyLogger myLogger; @RequestMapping("log-demo") @ResponseBody public String logDemo(HttpServletRequest request) { String requestURL = request.getRequestURL().toString(); myLogger.setRequestURL(requestURL); myLogger.log("controller test"); logDemoService.logic("testId"); return "OK"; } }
-
해결됨스프링 핵심 원리 - 기본편
중복 타입 조회
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. "타입으로 조회시 같은 타입이 둘 이상 있으면, 중복 오류가 발생한다" 예제의 경우 memberRepository1()과 memberRepository2()에 return 값이 둘다 MemmoryMemberRepository()여서(둘다 타입이 memberRepository여서) 타입 중복이 된것으로 이해했는데 맞을까요? 2. "특정 타입을 모두 조회하기"에서 key값은 빈 이름이고, value값인 beansOfType.get(key)값은 빈 객체가 맞을까요?