묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
람다식 질문입니다.
@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 가 문법적으로 하는 기능이 궁금합니다.
-
해결됨스프링 핵심 원리 - 기본편
구글 드라이브 링크 올립니다 !!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]https://www.inflearn.com/questions/754068/junit-not-found-%EC%97%90%EB%9F%AC?re_comment_id=236576위 링크의 질문에 대한 아래 링크입니다 .!! https://drive.google.com/file/d/1tz3wamqddAz_yTDk7krX2Q1dYps8w1se/view?usp=sharing
-
해결됨스프링 핵심 원리 - 기본편
AppConfig 리팩터링 관련 질문
강의를 듣던중 궁금한 것이 생겨서 질문합니다.AppConfig를 리팩터링하는 과정에서 아래와 같은 과정을 보았는데요.1. new MemoryMemberRepository() 2. private MemberRepository memberRepository() { return new MemoryMemberRepository(); } 1에서 2로 변환하는 과정에서 2번의 리턴값의 타입을 MemoryMemberRepository(구현 클래스)가 아닌 MemberRepository(인터페이스)로 해주어야한다고 하셨는데요. 사실 지금 이 상황에서는 구현 클래스로 지정해주어도 프로그램이 돌아가는데는 문제가 없을 것 같은데, 인터페이스로 지정한 이유는 추후에 MemberRepository의 구현 클래스를 변경할 여지가 있기 때문인가요?
-
해결됨스프링 핵심 원리 - 기본편
@Configuration과 싱글톤 memberRepository1,2 다른값
memberRepository1,2 다른값으로 나와가지고 다른 질문글에 답해주신 것처럼AppConfig에서@Bean public static MemberRepository memberRepository() { return new MemoryMemberRepository(); }static을 빼서 해결은 했는데 static붙고 안붙고 어떤차이 때문에 결과가 다르게 나오는건지 이해가 안돼서 질문드립니다!
-
미해결스프링 핵심 원리 - 기본편
SingletonService 호출 관련 질문
안녕하세요. 강의 너무 잘 듣고 있습니다.싱글톤 패턴을 사용하는 테스트 코드에서SingletonService.getInstance(); 로 SingletonService 객체를 받는데 그 전에 private static final SingletonServiceinstance = new SingletonService(); 가 호출되고 그 다음getInstance()가 호출되어야 이 객체를 받을 수 있는 것아닌가요??private static final SingletonServiceinstance = new SingletonService(); 이 부분은 언제 호출되어서 정상적으로 객체가 반환되는지 알고 싶습니다..!
-
해결됨스프링 핵심 원리 - 기본편
isSameAs 와 isEqualTo ( @Configuration과 싱글톤 강의)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.<@Configuration과 싱글톤> 강의 9분 50초 부분 듣다가 궁금한데요.isSameAs( ) 의 경우 reference로 메모리상 같은 객체를 가리키고 있는지 비교하는 것이고 isEqualTo() 의 경우 value로 객체가 같은 값을 가지고 있는지 비교하는거라고 봤는데지금 강의 부분에서는 memberRepository1, memberRepository2, memberRepository셋 다 모두 같은 주소값(엄밀히 말해서 주소값은 아니지만요 편의상 주소값이라 할게요) 을 가지고 있고, 같은 객체를 가리키고 있는거죠?그렇다면 어차피 주소값이 같다면 같은 객체인거니까검증할 때 꼭 isSameAs()가 아닌 isEqualTo() 를 사용해도 상관이 없는건가요?
-
해결됨스프링 핵심 원리 - 기본편
코드 질문
package hello.core.member; public interface MemberService { void join(Member member); Member findMember(Long memberId); }package hello.core.member; public interface MemberRepository { void save(Member member); Member findById(Long memberId); }에서 findMember, findById객체를 왜 Member타입으로 설정하는 건가요?
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
void의 정확한 의미를 모르겠어요
안녕하세요 챕터 6 부분을 공부하고 있는데 void를 쓰는 경우와 안쓰는 경우의 차이가 잘 와닫지 않습니다. 리턴값이 없으면 void를 쓰고, 리턴값이 있으면 void를 안쓴다고 알고 있는데 리턴값부터 이해가 잘 가지 않네요!예를 들어서// 호텔 주소 public static String getAdress() { return "서울시 어딘가"; }과셋째 줄에 sout "서울시 어딘가" 를 쓰는 것은 무엇이 다른건지요?감사합니다 :)
-
미해결스프링 핵심 원리 - 기본편
Provider 에러관련해서 질문있어요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]implementation 'javax.inject:javax.inject:1' 추가 후 리로드 해줬는데도 하기와 같은 에러가 발생해서요..org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'singletonWithPrototypeTest1.ClientBean': Unsatisfied dependency expressed through field 'prototypeBeanProvider': No qualifying bean of type 'javax.inject.Provider<hello.core.scope.SingletonWithPrototypeTest1$PrototypeBean>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}강의를 똑같이 따라 했는데 왜 이런 에러가 발생하는지 혹시 알 수 있을까요?
-
미해결스프링 핵심 원리 - 기본편
@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가 없으면 왜 오류가 나는지 궁금합니다.답변주시면 정말 감사하겠습니다.
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
Static boolean, Static void 호출
클래스에 static boolean canAutoReport = false; static void callServiceCenter() { System.out.println("서비스 센터(1588-0000)로 연결합니다."); }이렇게 선언해두었는데 b1.canAutoReport 나 b1.callServiceCenter()이 안됩니다. BlackBox.canAutoReport랑 BlackBox.callServiceCenter() 는 되는데 뭐가 문제일까요?
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
아!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
아!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!package c6; import java.util.Scanner; public class _01_methood { /**메소드*/ public static void methood(int old, boolean birsthay) { if (birsthay == true) { any_old = old - 1; } else { any_old = old - 2; } System.out.println("내 이름은 xx이, " + old + "살이다. \n 만나이는 " + any_old + "살이다."); } public static void main(String[] args) { methood(11, false); } }java: cannot find symbol symbol: variable any_old location: class c6._01_methood
-
미해결스프링 핵심 원리 - 기본편
MemberServiceTest 실행 시 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 테스트 코드 실행 시 다음과 같은 오류가 발생합니다. 구글링해봐도 이유를 잘 모르겠네요.Process finished with exit code -1073741819 (0xC0000005)
-
해결됨스프링 핵심 원리 - 기본편
new 연산자 질문입니다.
[질문 내용]여기에 질문 내용을 남겨주세요.private final MemberRepository memberRepository = new MemoryMemberRepository();이 코드의 의미가 궁급합니다.제 생각했는 데 이 코드는 "MemberRepository타입이며 MemoryMemberRepository 클래스의 객체인 memberRepository를 생성한다" 라는 의미이며그래서 다형성에의해 MemoryMemberRepository 에 있는 메소드를 사용할 수 있다. 라고 생각합니다.그럼 또 궁금한 게 만약 private final MemoryMemberRepository memberRepository = new MemoryMemberRepository();이렇게 쓰면 어떻게 되는 지 궁금합니다.답변 주시면 정말 감사하겠습니다.
-
미해결[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
이것이 왜 실행이 안되는지 여쭙고 싶네요.
void main() { Idol bts = const Idol.fromList([['제이홉','슈가'],'BTS']);}class Idol { final String name; final List<String> members; Idol(this.name, this.members); const Idol.fromList(List values) : this.members = values[0], this.name = values[1];}constructor를 const로 만들려고 하는데 잘 안되서요..이 코드는 왜 실행이 안되는건지 여쭤봐도 될까요..
-
해결됨스프링 핵심 원리 - 기본편
@Configuration과 싱글톤에서 memberRepository1, 2가 값이 달라요.
package hello.core.order; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.discount.RateDiscountPolicy; import hello.core.member.Member; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberRepository; public class OrderServiceImpl implements OrderService { // final 변수는 생성자를 통해 값이 반드시 할당 되어야 함 private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); int discountPrice = discountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPrice); } // 테스트 용도 public MemberRepository getMemberRepository() { return memberRepository; } }package hello.core.member; public class MemberServiceImpl implements MemberService { // private final MemberRepository memberRepository = new MemoryMemberRepository(); private final MemberRepository memberRepository; public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } @Override public void join(Member member) { memberRepository.save(member); } @Override public Member findMember(Long memberId) { return memberRepository.findById(memberId); } // 테스트 용도 public MemberRepository getMemberRepository() { return memberRepository; } } [ConfigurationSingletonTest]package hello.core.singleton; import hello.core.AppConfig; import hello.core.member.MemberRepository; import hello.core.member.MemberServiceImpl; import hello.core.order.OrderServiceImpl; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import static org.assertj.core.api.Assertions.*; public class ConfigurationSingletonTest { @Test void configurationTest() { ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberServiceImpl memberService = ac.getBean("memberService", MemberServiceImpl.class); OrderServiceImpl orderService = ac.getBean("orderService", OrderServiceImpl.class); MemberRepository memberRepository = ac.getBean("memberRepository", MemberRepository.class); MemberRepository memberRepository1 = memberService.getMemberRepository(); MemberRepository memberRepository2 = orderService.getMemberRepository(); System.out.println("memberService -> memberRepository = " + memberRepository1); System.out.println("orderService -> memberRepository = " + memberRepository2); System.out.println("memberRepository = " + memberRepository); assertThat(memberService.getMemberRepository()).isSameAs(memberRepository); assertThat(orderService.getMemberRepository()).isSameAs(memberRepository); } }클래스는 강의 내용 따라 작성했습니다. 그런데 테스트 결과가 아래와 같이 나옵니다.02:27:22.491 [main] DEBUG org.springframework.context.annotation.AnnotationConfigApplicationContext - Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@63355449 02:27:22.499 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.annotation.internalConfigurationAnnotationProcessor' 02:27:22.560 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.event.internalEventListenerProcessor' 02:27:22.562 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.event.internalEventListenerFactory' 02:27:22.562 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.annotation.internalAutowiredAnnotationProcessor' 02:27:22.563 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'org.springframework.context.annotation.internalCommonAnnotationProcessor' 02:27:22.566 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'appConfig' 02:27:22.569 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'memberService' 02:27:22.572 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'memberRepository' 02:27:22.572 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'orderService' 02:27:22.573 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'discountPolicy' memberService -> memberRepository = hello.core.member.MemoryMemberRepository@71e693fa orderService -> memberRepository = hello.core.member.MemoryMemberRepository@48793bef memberRepository = hello.core.member.MemoryMemberRepository@7d286fb6강의에서는 memberService와 orderService가 같은 값을 가리켜야한다고 하는데 다른 값이 나와서 오류를 찾고있습니다. 오류를 찾는게 쉽지 않아 질문 드립니다!
-
해결됨나도코딩의 자바 기본편 - 풀코스 (20시간)
연산자 파트 질문
안녕하세요 연산자 첫 파트 강의를 듣고 있는데요밑에 (1) 식에서는 c를 30으로 한번 출력하고 다시 식을 줄 때c = a - b;로 바로 했는데(2)에서는 val = 10;을 다시 선언하고 한게 무슨 차이인지모르겠습니다.(2)에서 처음 val 이 11로 됐기 때문에 다시 val=10;으로 한거라면(1)에서도 c는 30이 됐으니까 다시 c를 0으로 해줘야 하는거 아닌지.. (1)int a = 20; int b = 10;int c;c = a + b;System.out.println(c); //30c = a - b;System.out.println(c); //10 (2)int val; val = 10; System.out.println(val); //10 System.out.println(++val); //11 System.out.println(val); //11 val = 10; System.out.println(val); System.out.println(val++); System.out.println(val);
-
미해결[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
초급강의를 수강할때 질문입니다.
초급강의를 수강할때는 꼭 flutter프로그램을 다운받아야 하나요? 감사합니다.