묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
강의에서 필드 주입 방식이 스프링 의존적이라고 하신 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]의존성 자동 주입의 방법 4가지 중 필드 주입의 방법만 스프링 의존적이라고 하시는 건가요? 아니면 @Autowired를 이용한 의존관계 자동주입 방법 4가지가 모두 스프링 의존적이라는 의미인가요?제 생각에는 필드 주입만 스프링 의존적이라는 게 좀 이해가 안가서요... 4가지 방법 모두 @Autowired 를 이용한 주입방법인데, 오직 필드 주입만 스프링 의존적이라서 단위 테스트가 불가능하다고 하시는건까요?+추가혹시 제가 이해한 내용이 맞을까요?!4가지 방법 모두 스프링 의존적인게 맞음. 그러나 다른 방법은 단위 테스트 시 의존관계가 안들어왔을 경우 내가 직접 넣어줄 수 있는데 필드 주입은 그럴 방법이 아예 없기 때문에 테스트를 꾸리는 것이 힘들어진다는 의미임.
-
미해결스프링 핵심 원리 - 기본편
수정자 주입으로 의존관계가 주입 안된 빈이 실행될 경우
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]수정자 주입을 통한 의존관계 주입 시, 해당 의존관계 빈이 컨테이너에 없더라도 예외가 발생하지 않고 실행된다고 하셨는데요.그러면 의존관계가 주입되지 않은 상태에서 실행이 됐고, 이후 의존관계가 없는 해당 빈을 사용하게 되면 런타임 에러가 발생하나요? 아니면 해당 타입의 추상체가 의존관계로 주입이 될까요?? 어떻게 동작하는지 궁금합니다. +추가혹시 제가 이해한 게 맞을까요?!4가지 방법 모두 스프링 의존적인게 맞음. 그러나 다른 방법은 단위 테스트 시 의존관계가 안들어왔을 경우 내가 직접 넣어줄 수 있는데 필드 주입은 그럴 방법이 아예 없기 때문에 테스트를 꾸리는 것이 힘들어진다는 의미임.
-
미해결김영한의 실전 자바 - 기본편
김영한의 실전자바-기본편 섹션6 연습문제 두번째
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 김영한의 실전자바 기본편 섹션6 연습문제 두번째 문제에서 코드에서 제가 작성한 코드와 김영한 선생님이 작성한 코드가 다른데 차이점을 알고 싶습니다.//저의 코드 public void displayItems() { System.out.println("장바구니 상품 출력"); for (int i = 0; i < itemCount; i++) { System.out.println("상품명:" + items[i].getName() + ", 합계:" + items[i].sumPrice()); } //비교하고싶은 부분 System.out.println("전체 가격 합: "+totalPrice()); } //김영한 선생님 코드 public void displayItems() { System.out.println("장바구니 상품 출력"); for (int i = 0; i < itemCount; i++) { Item item = items[i];//저와 다른 부분 System.out.println("상품명: " + item.getName() + ", 합계: " + item.getTotalPrice()); } System.out.println("전체 가격 합: " + calculateTotalPrice()); } 저의 코드는 items[i] 의 참조값의 getName과 sumPrice를 불러서 프린트 했고,김영한 선생님은 items[i]를 item에 할당해서 item의 getName과 Price를 프린트 했지 않습니까? 질문 1. 기능적으로는 똑같은거 같은데 둘의 차이가 있습니까? 질문 2. 뭔가 똑같아 보이긴 하지만 김영한 선생님이 작성한 코드니까 더 좋아 보이는 이유가 있는거 같은데 혹시 둘의 차이 설명 가능한가요?
-
해결됨스프링 핵심 원리 - 기본편
특정 하위 타입으로 조회하기
<섹션 4. 스프링 컨테이너와 스프링 빈> 파트에서 질문 드리고 싶은게 있습니다.저와 비슷한 질문을 하신 분이 있어서 그 게시물에 달린 답변을 읽어보았지만, 여전히 이해가 되지 않습니다... https://www.inflearn.com/questions/1045843/%ED%8A%B9%EC%A0%95-%ED%95%98%EC%9C%84-%ED%83%80%EC%9E%85%EC%9C%BC%EB%A1%9C-%EC%A1%B0%ED%9A%8C%ED%95%A0-%EB%95%8C-%EA%B6%81%EA%B8%88%ED%95%9C-%EC%A0%90-%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4 void findBeanBySubType() { RateDiscountPolicy bean = ac.getBean(RateDiscountPolicy.class); assertThat(bean).isInstanceOf(RateDiscountPolicy.class); }@Configuration static class TestConfig { @Bean public DiscountPolicy rateDiscountPolicy() { return new RateDiscountPolicy(); } @Bean public DiscountPolicy fixDiscountPolicy() { return new FixDiscountPolicy(); } }컨테이너를 보면 rateDiscountPolicy() 메소드의 리턴 타입은 DiscountPolicy 타입으로 되어있습니다. 따라서, rateDiscountPolicy라는 이름을 가진 빈은, DiscountPolicy 타입의 RateDiscountPolicy 객체를 저장할 것이라고 생각했습니다.이러한 상황에서 ac.getBean(RateDiscountPolicy.class)로 빈을 조회하면 RateDiscountPolicy 타입과 그것의 자식 타입 빈이 조회될 것입니다. 저는 ac.getBean(RateDiscountPolicy.class)이 어떻게 rateDiscountPolicy라는 이름의 빈을 조회할 수 있는지 알고 싶습니다.해당 빈은 RateDiscountPolicy 객체이지만, 타입은 DiscountPolicy 타입이므로 ac.getBean(RateDiscountPolicy.class)로 조회했을 때 걸리지 않을 것이라 생각했습니다... 답변 부탁드립니다.감사합니다!
-
미해결김영한의 실전 자바 - 기본편
6. 접근 제어자.pdf 오타 수정 요청
6. 접근 제어자.pdf 본문에 오타 수정이 여러 군데 필요합니다.스피커에 대한 내용 중폭팔 -> 폭발로 오타 수정이 필요합니다. ‘폭발’은 ‘불이 일어나며 갑작스럽게 터지다’라는 뜻과 함께 ‘속에 쌓여 있던 감정 따위가 일시에 세찬 기세로 나옴’ 또는 ‘힘이나 열기 따위가 갑작스럽게 퍼지거나 일어남’이라는 뜻으로 사용됩니다. ‘폭팔’은 ‘폭발’의 잘못된 표현이므로 사용해서는 안되겠습니다.
-
해결됨스프링 핵심 원리 - 기본편
ApplicationContext
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의 16분쯤에 ClientBean 클래스 안에 @Autowired로 스플링 컨테이너를 가져오는 의존관계 등록후. 가져온 스프링 컨테이너 안에서 프로토타입을 빈을 호출하는 것 까진 이해를 했습니다. 궁금한점은 스프링 컨테이너가 여러개 있는 경우 ClinetBean에 있는 ApplicationContext에 무엇이 들어올지 어떻게 알 수 있나요??
-
해결됨김영한의 실전 자바 - 기본편
다형성 재정의에 질문이 있습니다.
[질문 내용]Dog dog = new Dog();위의 코드는 Dog 내부에 extends로 Animal이 있기에 Dog 클래스는 Animal 이라는 부모가 있는걸 알 수 있습니다. 하지만 Animal dog = new Dog();Animal 타입으로 Dog를 생성하면 힙메모리에는 Dog와 Animal이 하나의 영역에 생기지만 Animal 타입으로 선언하였기 때문에 힙메모리에서 Animal 부분을 먼저 바라볼 것으로 생각하는데 어떻게 Animal에서 자식 요소가 있는걸 알고 오버라이딩된 메서드가 우선적으로 처리되는건지 궁금합니다. annotation의 영향인가요? =======추가 질문!Animal dog = new Dog();위 코드와 같이 선언하면 자바에서는 자동으로 업캐스팅이 이뤄지는것 이라고 이해해도 될까요?Animal dog = (Animal) new Dog();위와 같이 자바에서 자동으로 형 변환을 시켜준다고 생각하면 되는건가요?!
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
섹션7 훈련 문풀2 마지막 문제 풀이
안녕하세요. 강의를 들으며 문제를 해결하던 중 질문이 생겨 남깁니다. 섹션 7번 훈련 문제와 풀이 2에서 마지막 문제 사이 정수 구하는 문제인데요. 강사님이 풀어주신 방법과 다르게 이 방법으로 해결해도 맞는걸까요? 답은 똑같이 나옵니다! 항상 잘 듣고 있습니다 감사합니다.
-
미해결김영한의 실전 자바 - 기본편
.
.
-
미해결김영한의 실전 자바 - 기본편
7. 자바 메모리 구조와 static 문제 1: 구매한 자동차 수 질문
문제 1번 답public class Car { private static int count; private String car; public Car(String car) { System.out.println("차량 구입, 이름: " + car); this.car = car; count++; } public static void showTotalCars() { System.out.println("구매한 차량 수: " + count); } }나의 풀이public class Car { private static int count; public Car(String car) { System.out.println("차량 구입, 이름: " + car); count++; } public static void showTotalCars() { System.out.println("구매한 차량 수: " + count); } } 답과 제 풀이를 비교해보면,멤버변수로 String car를 지정하고, Car 생성자에서 this 키워드로 car를 받는데, 이 부분을 생략하여도 결과가 같게 나옵니다.어떤 차이가 있을까요?
-
해결됨스프링 핵심 원리 - 기본편
필터 강의 오류 NoUniqueBeanDefinitionException
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]오류 내용입니다.java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@bd1111a testClass = hello.core.CoreApplicationTests, locations = [], classes = [hello.core.CoreApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@13e3c1c7, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@6c6c5427, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@1e63ec0b, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@62dae540, org.springframework.boot.test.context.SpringBootTestAnnotation@9ec68d48], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:141) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:97) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260) at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) at java.base/java.util.Optional.orElseGet(Optional.java:364) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [/Users/user/Desktop/core/out/production/classes/hello/core/member/MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:802) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:241) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1354) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1191) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:960) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:625) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:464) at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1458) at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:552) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152) ... 17 moreCaused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository at org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:218) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1420) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:911) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ... 41 more 어느부분을 수정해야할지 모르겠습니다..ㅠㅠ
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자동으로 소스코드가 불러와진 것 같은데
인텔리제이 설치 전에 다운로드를 미리 받아놨는데요, 강사님께서 불러오라는 대로 하면 상기 이미지와 같은 화면이 뜹니다그러다보니여기에도 하나만 뜨는데 이대로 강의 진행해도 문제 없나요?
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
인텔리제이 다운로드
이전에 설치할 때는 다른 프로그램 설치할 때와 똑같았는데 이번에는 파일이 이런 형태로 뜨면서 다운이 되는지 안 되는 건지 모르겠어요첫 강의때 알려주신 홈페이지로 접속해서 그대로 한건데 ,,다운로드 되지 않으면 클릭하라고 돼있는 버튼 눌러도 똑같은 게 뜨네요혹시 해결법 아실까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
if문 내에서 반영된 변수의 값이 계속 유지되는 이유
스코프를 벗어나면 변수를 쓸 수 없다고 했는데위 코드는 맨 위에 미리 선언해놨기 때문에 모든 if문에서 쓸 수 있는것으로 확인했습니다.근데 궁금한것이if(choice==1)에서 반영된 가격이 어떻게다음 if문인 choice==2 조건일 때 결제가 가능하게 되는거에요? 1번 눌렀을 때 실행되는 if문에서 가격과 수량이 맨 위(while문 위쪽) 변수에 반영되어 있는건가요?
-
해결됨김영한의 실전 자바 - 기본편
.(점, dot)을 이렇게 이해해도 되는지?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]셉션1. 클래스와 데이터 - 객체사용 에서.(점,dot) 를 통해서 메모리의 주소 값(이 있어야)으로 이동한다고 하였습니다.(4:14~38초 사이) 그러면this.name 나, import의 java.util.scanner package 에 class1.ex 도 .(점 dot) 을 통해서 메모리 주소 값으로 이동하고 여기에서 사용할 수 있게 한다?라고 이해해도 되는지 알고싶네요.
-
해결됨스프링 핵심 원리 - 기본편
Object 타입으로 우리가 등록한 빈들 조회하기
[질문 템플릿]1. 예2. 예3. 예[질문 내용]강의에서 Object 타입으로 조회하면 우리가 TestConfig로 등록한 빈 뿐만아니라 스프링에서 내부적으로 설정한 빈 모두 조회된다고 했습니다.그래서 TestConfig에서 등록한 빈들만 출력하기 위해서 앞에서 배운것들을 이용해서 코드를 작성해보았습니다.@Test @DisplayName("Object 타입으로 우리가 등록한 빈 조회하기") public void findApplicationBeansByObjectType(){ Map<String, Object> beansOfType = ac.getBeansOfType(Object.class); for (String beanName : beansOfType.keySet()) { BeanDefinition beanDefinition = ac.getBeanDefinition(beanName); if(beanDefinition.getRole()==BeanDefinition.ROLE_APPLICATION){ Object bean = ac.getBean(beanName); System.out.println("빈 이름 = " + beanName+","+ "빈 타입 = "+beansOfType.get(beanName)); } }그런데 위 코드의 출력결과 아래와 같이 environment의 이름의 빈을 조회할 수 없다고 합니다. NoSuchBeanDefinitionException: No bean named 'environment' available 그래서 스프링 컨테이너에 등록되어있는 빈 들을 확인하기 위해서 코드를 다시아래 처럼 다시 작성해봤습니다 @Test @DisplayName("Object 타입으로 우리가 등록한 빈 조회하기") public void findApplicationBeansByObjectType(){ for (String beanDefinitionName : ac.getBeanDefinitionNames()) { BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName); if(beanDefinition.getRole()==BeanDefinition.ROLE_APPLICATION){ System.out.println("빈 이름 = " + beanDefinitionName); } }// 출력결과빈 이름 = applicationContextExtendsFindTest.TestConfig 빈 이름 = rateDiscountPolicy 빈 이름 = fixDiscountPolicy위의 출력결과를 보면 ROLE_APPLICATION인 빈들은 3개 밖에 없는데 왜 첫번째 코드를 작성하면 environment라는 빈 이름이 없다고 오류가 발생하는건가요??
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
foreach 자동완성이없어요
for이랑 fori는 있는데, foreach가없는데, 어떻게 해결해야되나요 ㅜㅜ
-
미해결스프링 핵심 원리 - 기본편
myLoggerProvider.getObject질문
LogDemoController에서@RequestMapping("log-demo") @ResponseBody public String logDemo(HttpServletRequest request){ MyLogger myLogger = myLoggerProvider.getObject(); String requestURL = request.getRequestURL().toString(); myLogger.setRequestURL(requestURL); myLogger.log("controller test"); logDemoService.logic("testId"); return "OK"; }myLoggerProvider.getObject를 했을 때 myLogger를 반환하는것은 이해했습니다. 그러나 logDemoService.logic("testId")를 실행하면@Service @RequiredArgsConstructor public class LogDemoService { private final ObjectProvider<MyLogger> myLoggerProvider; public void logic(String id) { MyLogger myLogger = myLoggerProvider.getObject(); myLogger.log("service id=" +id); } }이 코드가 실행될텐데 logic(String id)로만 되어있지 HttpServletRequest와 관련된 코드가 없는데 어떻게 logic(String id)메서드 안에서 myLoggerProvider.getObject()를 했을 때 같은 myLogger가 가져와지는지 궁금합니다. 혹시 HttpServletRequest가 return"OK";를 해서 끝날때까지 쭉 들고가는 느낌? 이라고 해야할까요? 그런식으로 해서 스프링이 알아서 logic()메서드 안에서도 알 수 있어서 같은 myLogger를 반환하는것인지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
CoreApplication 실행이 안돼요
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]CoreApplication 실행하는 단계부터 안돼요ㅠ3시간까지 기다려봤는데 안되고 build파일이랑 gradle 파일까지 삭제해봤는데도 안되네요..
-
미해결스프링 핵심 원리 - 기본편
의존 관계 주입과 빈 관련 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강사님 항상 좋은 강의 잘 보고 있습니다.다름이 아니라,1. 자바스프링에서 객체를 빈으로 등록을 해두고, 의존성 주입을 하는 이유가 해당 빈(객체)을 싱글톤으로 관리하기 위해서인가요?예를 들어, 1.MemberRepository 클래스를 빈으로 등록2. MemberService에서 MemberRepository를 사용하기 위해서 MemberService 클래스에서 MemberRpository를 의존성 주입함.3.그렇게 하면, 싱글톤으로 MemberRepository를 사용 가능함이렇게 이해를 하면 되는건가요?? 감사합니다.