묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
ObjectProvider를 Singleton으로 사용하지 않는가?
ObjectProvider 를 이용해 request scope 빈과 관련된 문제를 해결하는 과정에서 궁금한 것이 생겨 질문드립니다.교안에서 LogDemoController 와 LogDemoService 는 각각 필드로 ObjectProvider<MyLogger> 를 갖고 있는데요.실제로 애플리케이션을 동작시켜 출력해보니, LogDemoController 와 LogDemoService가 서로 다른 ObjectProvider 객체를 사용하고 있었습니다.ObjectProvider<MyLogger> 를 싱글톤으로 사용하지 않는 이유가 있을까요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
public, class, static, void 언제 어떻게 조합해서 쓰는건지
현재 챕터07 접근제어자(후반전) 까지 강의를 들었고 퀴즈도 다 풀어냈습니다.그런데 public, class, static, void 등을 조합해서 코드 앞부분에 쓰는데 언제 어떻게 왜 조합해서 저것들을 붙이는 건지 정확한 개념을 잘 모르겠습니다. 이럴때는 강의를 다시 돌려보며 개념을 알고 가야하나요? 아니면 그냥 강의 쭉 들으면서 서서히 익히면 되는건가요유튜브 영상으로 9시간 다 보고 인프런 결제했는데 갑자기 진행속도가 너무 빨라진 듯한 느낌이 듭니다. 유튜브 기초 9시간때는 이해하면서 잘 들었는데 지금은 코드 따라적기 바쁘네요ㅠㅠ
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
강사님, 아무래도 제 개념의 혼동 때문에 그러는 것 같은데요..!
if (factoryCam instanceof FactoryCam) { (FactoryCam)factoryCam; }이 구문에 혼동이 생겨서 질문드립니다! if 안에 조건문의 내용이 " factoryCam 이 FactoryCam 클래스의 인스턴스가 맞다면 " 이라고 설명을 해주셨는데요 (8분 27초경) 만약에 factoryCam 이 FactoryCam 클래스의 인스턴스가 맞다면 형변환이 필요 없는거 아닌가요? 또 헷갈린거 하나 더 문의드립니다. 다형성에 대한 예시를 위해 작성해주셨던 코드 내용인데요.Camera factorycCam = new FactoryCam();만약에 위 코드로 작성한게 부모클래스인 " Camera" 로 객체를 생성한 거라면, factoryCam 의 참조 클래스는 Camera 인 것 같은데요. (그러니까 FatoryCam 의 인스턴스 메서드를 불러왔을 때 에러가 나는 것으로 보이구요.) 근데 이 설명과 "factoryCam instanceof FactoryCam" 이 구문이 " factoryCam 이 FactoryCam 클래스의 인스턴스가 맞다면 " 이라고 설명을 해주시니 상충되는 내용이 아닌가 싶어 혼동이 옵니다. 내용 요약factoryCam 은 부모 클래스로 만들어진 객체라서 FactoryCam 의 인스턴스 메서드를 사용할 수가 없다고 설명을 해주셨습니다!헌데 if 조건문은 "factoryCam 이 FactoryCam 클래스에 포함되어 있다면 " 이라고 설명해주신 부분이 상충되지 않나 하여 헷갈립니다.그리고 2번에 내용처럼 만약 factoryCam 이 FactoryCam 클래스에 이미 포함되어 있다면, 굳이 형변환을 하지 않고도 detectFire 메서드를 호출할 수 있어야 하지 않는지..?제가 개념을 잘못 이해하고 있을 것 같은데, 혹시 설명을 좀 부탁드려도 될까요?이 부분에 자꾸 혼동이 생겨서 다음으로 넘어가기가 어렵네요 🤣ps. 이전에 강사님 파이썬 강의로 난생 처음 태어나 클래스란 개념을 이해했던 수강생으로써, 이번 자바편도 개인적으로 큰 도움되고 있습니다. 감사합니다!
-
미해결스프링 핵심 원리 - 기본편
프로젝트 생성 관련 질문있습니다.
안녕하세요. 혹시 스프링 프로젝트를 새로 만들 때마다 initializer로 매번 generate을 해서 라이브러리를 매번 다운 받아야 하는 걸까요???
-
미해결스프링 핵심 원리 - 기본편
memberRepository가 다른 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]memberRepository가 다르게 나와서 다른 분들의 질문 답변을 보고 해결했습니다.Appconfig의 memberRepository가 static으로 선언되어 있기 때문이더라구요. 그래서 궁금한점이, 왜 static으로 선언되면 singleton이 되지 않나요?항상 친절한 답변 감사드립니다^^!ㅎㅎ
-
미해결스프링 핵심 원리 - 기본편
스코프와 프록시 scope request 관련 질문입니다.
안녕하세요.MyLogger와 같은 기능을 현업에 적용 해보려고 합니다.각 서비스는 물론 클라이언트의 요청을 구분하기 위해 MyLogger가 필요하지만, 모든 서비스에서 MyLogger 라는 서비스를 선언을 해주는게 맞을까? 의문이 들었습니다.혹시 다른분들의 질문이 있나 찾아보던 중 https://www.inflearn.com/questions/288770/%EC%8B%A4%EB%AC%B4%EC%97%90%EC%84%9C-scope-request-%EB%A5%BC-%EB%A7%8E%EC%9D%B4-%EC%82%AC%EC%9A%A9%ED%95%98%EB%82%98%EC%9A%94더 나은 방법이 있다는걸 알게 되었습니다.해당 방법이 AOP 와 프록시를 이용한 기술인지 궁금하여, 질문드립니다.
-
미해결스프링 핵심 원리 - 기본편
NoSuchBeanDefinitionException 오류
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.order.OrderServiceImpl' available오류가 나온다면 AutoAppConfig에서 @ComponentScan( basePackages = "hello.core.member", <- 이 부분을 지우면 된다!! // memeber를 포함한 하위 패키지를 기준으로 찾기 때문에 // order에 대한 것 NoSuchDefiniton이 나오게된다. excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) )
-
해결됨스프링 핵심 원리 - 기본편
3분 경 필드 명을 빈 이름으로 변경하였을 경우에 대한 설명
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]3분 10초 경 강의 중에 생성자의 파라미터를 rateDiscountPolicy로 변경하고 필드 명을 빈 이름으로 변경하는 예시를 설명 중 필드명을 생성자의 파라미터 이름과 다르면 오류가 나온다고 하였는데 실제로 보니 fix로 바꾸어서 확인해보았는데 따로 오류는 나지 않더라구요.그래서 생각해보았는데 일단 순서상 생성자 주입이 먼저 일어나니 이 때 파라미터명을 보고 rateDiscountPolicy가 주입이 일어나고 이후 3번째 필드 주입된 곳은 앞서 주입했던 rateDiscountPolicy가 다시 들어간 것인가요?콘솔을 보니 fixDiscountPolicy는 의존 주입이 일어나지 않아서 이렇게 생각해보았습니다.
-
해결됨스프링 핵심 원리 - 기본편
스프링빈을 만드는 방법
수업중에 스프링 빈을 만드는방법에 대하여 설명해 주셨는데 스프링빈을 만드는 방법직접 등록하는 방법 (Xml) factoryBean을 통해서 등록하는 방법 (일반적으로 자바 config를 사용하는 것)이렇게 이해하면 될까요??
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
코루틴의 대한 질문이 있습니다.
강사님, 강의 내용에는 코루틴이 없어 학습중에 궁금한 점이 있어서 문의드립니다.아래 코드의 실행 순서를 제가 정리 해봤습니다.제가 코루틴의 suspend, resume을 잘 이해한게 맞나 궁금해서요.물어볼 곳이 없어서, 죄송스럽게도 강사님께 문의를 하게 되었습니다.강의 내용과는 관련이 없어 답변을 해주시면 감사하겠지만, 답변이 안달리다도 괜찮습니다.감사합니다. println("Coroutine Outer") 이 실행된다.A 코루틴에서 delay를 만나, B 코루틴으로 실행권을 넘겨간다.B 코루틴도 delay를 만나, A 코루틴으로 실행권을 넘겨준다.1초가 지나고 A코루틴의 println("Coroutine A, Si")을 실행한다.반복문에 의하여 A코루틴의 2번째 delay를 만나, 다시 B 코루틴으로 실행권을 넘겨준다.B 코루틴도 1초가 지난 상태여서, 바로 println("Coroutine B, Si")을 실행한다.반복문에 의하여 B코루틴의 2번째 delay를 만나, 다시 A 코루틴으로 실행권을 넘겨준다.그 다음 4~7을 반복문이 끝날 때 까지 반복 후 코루틴이 종료된다.fun main() = runBlocking { // A 코루틴 launch { repeat(5) { i -> delay(1000L) println("Coroutine A") } } // B 코루틴 launch { repeat(5) { i -> delay(1000L) println("Coroutine B") } } println("Coroutine Outer") } fun <T> println(msg: T) { kotlin.io.println("$msg [${Thread.currentThread().name}]") }
-
해결됨스프링 핵심 원리 - 기본편
람다식 질문입니다.
@Test @DisplayName("빈 이름으로 조회X") void findBeanByNameX(){ //MemberService xxxx = ac.getBean("xxxx", MemberService.class); assertThrows(NoSuchBeanDefinitionException.class, () -> ac.getBean("xxxxx", MemberService.class)); }위에 코드 () -> ac.getBean("xxxxx", MemberService.class)의 ()는 어떤 인터페이스의 추상메서드를 오버라이딩하는건지 궁금합니다.MemberService인터페이스에는 인자없는 추상메서드가 없어서 거기로 가진않았다고 생각이 드는데...public interface MemberService { void join(Member member); Member findMember(Long memberId); } () -> ac.getBean("xxxxx", MemberService.class) 람다식을 해석해주시면 정말 감사하겠습니다.
-
해결됨스프링 핵심 원리 - 기본편
getBean 함수 질문
getBean() 함수와 관련하여 궁금점이 생겨 질문합니다.applicationContext.getBean("memberService", MemberService.class);위의 코드에서 스프링 컨테이너에 bean이 등록될 때,key = 메서드명, value = 메서드에 의해 반환되는 객체(인스턴스) 라고 설명해주셨었는데요.위의 함수에서 MemberService.class 가 하는 역할이 어떤 것인지 궁금합니다. + MemberService는 interface 인데, 인터페이스.class 가 문법적으로 하는 기능이 궁금합니다.
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
void의 정확한 의미를 모르겠어요
안녕하세요 챕터 6 부분을 공부하고 있는데 void를 쓰는 경우와 안쓰는 경우의 차이가 잘 와닫지 않습니다. 리턴값이 없으면 void를 쓰고, 리턴값이 있으면 void를 안쓴다고 알고 있는데 리턴값부터 이해가 잘 가지 않네요!예를 들어서// 호텔 주소 public static String getAdress() { return "서울시 어딘가"; }과셋째 줄에 sout "서울시 어딘가" 를 쓰는 것은 무엇이 다른건지요?감사합니다 :)
-
미해결스프링 핵심 원리 - 기본편
@Configuration 유무 질문
안녕하세요, @Bean이 있더라도,@Configuration이 있어야만, 싱글톤이 보장된다(프록시,,,)고 알고 있습니다... 그러나 강의 중에 보면 Class TestConfig에 @Configuration이 없어도 싱글톤 처럼 작동을 하네요,,(statefulService1 = hello.core.singleton.StatefulService@d78795statefulService2 = hello.core.singleton.StatefulService@d78795) 해당 부분은 왜 그런지 자세한 설명 요청드립니다... public class StatefulServiceTest { @Test void statefulServiceSingleton() { ApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); StatefulService statefulService1 = ac.getBean("statefulService", StatefulService.class); StatefulService statefulService2 = ac.getBean("statefulService", StatefulService.class); System.out.println("statefulService1 = " + statefulService1); System.out.println("statefulService2 = " + statefulService2); //ThreadA: A사용자 10000원 주문 statefulService1.order("userA", 10000); //ThreadB: B사용자 20000원 주문 statefulService2.order("userB", 20000); //ThreadA: 사용자A 주문 금액 조회 int price = statefulService1.getPrice(); //ThreadA: 사용자A는 10000원을 기대했지만, 기대와 다르게 20000원 출력 System.out.println("price = " + price); Assertions.assertThat(statefulService1.getPrice()).isEqualTo(20000); } // @Configuration static class TestConfig { @Bean public StatefulService statefulService() { return new StatefulService(); } } }
-
미해결스프링 핵심 원리 - 기본편
@beforeEach 사용하는 이유가 궁금합니다.
@beforeEach 를 사용하면 모든 테스트는 자신이 실행되기 전에 이 작업을 수행한다 라고 되어있는데 MemberServiceTest 부분에서 @beforeEach를 안쓰고MemberService memberService; AppConfig appConfig = new AppConfig(); memberService = appConfig.memberService();위와같이 쓰니 오류(Unknown class: 'memberService')가 났습니다.MemberService memberService; @BeforeEach public void beforeEach(){ AppConfig appConfig = new AppConfig(); memberService = appConfig.memberService(); }위의 코드처럼 @BeforeEach 사용해야 appConfig와 memberService를 정의 할 수 있는 이유가 궁금하며 @BeforeEach가 없으면 왜 오류가 나는지 궁금합니다.답변주시면 정말 감사하겠습니다.
-
미해결스프링 핵심 원리 - 기본편
스프링 빈 호출시 질문있어요 !!
스프링 부트 쓸때는 그냥 편하게 스프링 빈 가져왔는데 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); DiscountPolicy rateDiscountPolicy = ac.getBean("rateDiscountPolicy",DiscountPolicy.class);본 강의에서는 이처럼 ac 객체만들고 ac.getBean()해서 들고오는 이유가 뭐죠 ?? 제 생각에는 클래스 2개가 둘다 스프링 빈 등록시 그냥 편하게 가져와서 쓰면 된다. 하지만 만일 A클래스는 스프링빈 등록 x, B클래스는 스프링 빈 등록 시A에서 B객체를 들고 올때는 강의와 마찬가지로 ac.getBean()으로 들고와야 한다 혹시 맞나요 ??
-
해결됨스프링 핵심 원리 - 기본편
junit not found 에러
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]테스트를 run 하니깐 갑자기 jupiter does not exist 라고 뜹니다.
-
해결됨스프링 핵심 원리 - 기본편
리팩터링 단축키를 누르면 Extract Method 창이 안나오네요..
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]여기에 질문 내용을 남겨주세요.AppConfig 리팩터링 1분38초에 영상에선 ctrl+alt+M 하면 Extract Method 창이 뜬느데 이런식으로 뜨네요 여기서 막혔는데 어떻게 해야할가요.. 게시판 검색해보고 구글도 검색해봤는데 가능한 방법 전부 다해봤는데도 저렇게 떠요단축키 확인도 해봤는데 이상없었습니다.단축키 다른곳에서 선점 또한 이상없었습니다.단축키 변경도 해봤는데 마찬가지입니다..ㅜㅜ
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
추상클래스, 인터페이스에 대해 질문이 있습니다!
제가 정리한 내용은 추상클래스는 new 클래스를 통해 직접 객체를 생성할 수 없으며, 상속을 위한 클래스이고인터페이스는 구현체에 대한 메소드를 오버라이드 하는 것으로 이해하였는데.. 첫번째 질문은 두 개의 역할이 중복되는 것이 아닌지에 대한 질문입니다. 두 개의 역할 모두 구현체에게 메소드를 주입하는 것인데 굳이 구분한 것인지에 대한 질문입니다.두번째 질문은 일반 클래스의 상속이 있는데 굳이 추상클래스를 사용 하는 점 입니다. 제 생각으로는 부모 객체의 사용을 막기 위해 추상클래스로 변경을 한 것인지? 아니면 다른 이유가 있는 것인지에 대해서도 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
인텔리제이 ide 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.. 스프링부트 강의를 열심히 수강중인 학생입니다. 강의 내용과는 외람된 질문이지만.. 인텔리제이로 알고리즘문제를 풀기위해 파이썬 SDK 설정을 한번했었는데 그 이후로 부터 자바가 실행이 안되더라구요.. 단축키 같은것도 안되구요.. (@Before, @Test 등 한글자만 쳐도 바로 밑에 쫘르륵 뜨는 내용들이요) 어떻게 해야할까요 ㅠㅠ... 사진들도 같이 올리겠습니다..