inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

컴포넌트스캔사용에 대해서

미해결

스프링 핵심 원리 - 기본편

탐색 위치와 기본 스캔 대상에 대해서 강의를 듣다고 궁금한게 생겨서 글을 남겼습니다 SpringBootApplication이 @ComponentScan을 가지고 있고 저희가 사용할려는 Config도 같은 위치에 있으면 굳이 @ComponentScan을 달아주지않아도 컴포넌트스캔은 동작하지않는거랑 만약에 같은 레벨의 위치에서 두개가 있다면 충돌이 발생할 것같은데 테스트 코드에서는 문제가없었습니다 혹시 그이유는 new AnnotationConfigApplicationContext(AutoAppConfig.class); 위의 코드처럼 AutoAppConfig.class라고 지정해서 일까요?? 그러면 이경우에는 CoreApplication은 사용되지않고 AutoAppConfig만 사용해서 동작하는 걸까요?

  • spring
  • 객체지향
jay kang 댓글 1 좋아요 0 조회수 363

상속에서 생성자는 오버라이딩이 안됨

해결됨

김영한의 실전 자바 - 기본편

상속강의에서 생성자는 오버라이딩이 안된다고 하셨는데 그 이유를 알수있을까요? 제 생각으로는 오버라이딩은 부모-자식관계에서 부모가 가지고있는 클래스의 정보(필드,메서드)를 넘겨주는거라면 생성자는 객체를 생성하는것이기 때문에 부모의 객체정보인 참조값을 자식에게 넘겨준다고 생각하면 말이안된다고 생각합니다. 이게 아니라면 다른이유가 있을까요?

  • java
  • 객체지향
박민성 댓글 1 좋아요 2 조회수 373

컴포넌트 관련 질문있습니다.

해결됨

스프링 핵심 원리 - 기본편

기존 스프링 빈 방식으로 등록을 하면 등록해야 할 스프링 빈이 수십,수백개가 되어 일일이 등록하기가 귀찮고, 설정 정보도 커지고 누락하는 문제가 발생하여 컴포넌트 방식을 사용한다고 배웠습니다. 그런데 컴포넌트 방식도 사용하려고 하면 @Component와 의존 관계 주입인 @Autowired를 넣어줘야 하는데, 동일한 문제가 발생하는게 아닌지 궁금합니다. 2.excludeFilters로 @Configuration 어노테이션이 붙은 클래스를 제거해주고 있는데, 앞서 정의했던 AppConfig 때문인가요? 만약 AppConfig가 없다고 가정하면 excludeFilters를 굳이 삽입하지 않아도 되는지 궁금합니다. @Autowired 과정이 getBean(MemberRepository.class)와 동일하다고 하는데, 이해가 가지 않습니다. 필터 부분 코드가 전체적으로 이해가 가지 않습니다. package hello.core.scan.filter; import java.lang.annotation.*; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyIncludeComponent { } 여기서 target,retention,documented가 어떤 역할을 하는건가요? package hello.core.scan.filter; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoSuchBeanDefinitionException; 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.assertThat; import static org.springframework.context.annotation.ComponentScan.Filter; public class ComponentFilterAppConfigTest { @Test void filterScan() { ApplicationContext ac = new AnnotationConfigApplicationContext(ComponentFilterAppConfig.class); BeanA beanA = ac.getBean("beanA", BeanA.class); assertThat(beanA).isNotNull(); Assertions.assertThrows( NoSuchBeanDefinitionException.class, () -> 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 { } } 여기서도 beanA가 왜 추가되고, beanB가 왜 포함되지 않는지 궁금합니다.

  • spring
  • 객체지향
이준승 댓글 1 좋아요 2 조회수 210

테스트 오류

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\Users\kyoun\OneDrive\바탕 화면\개발\core\out\production\classes\hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 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:1356) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1193) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) 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:973) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:946) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:616) at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:93) at hello.core.scan.AutoAppConfigTest.basicScan(AutoAppConfigTest.java:14) at java.base/java.lang.reflect.Method.invoke(Method.java:578) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1878) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1404) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1348) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:911) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) ... 17 more Process finished with exit code -1 이렇게 오류가 뜨는데 뭐가 문제일까요?

  • spring
  • 객체지향
이준승 댓글 1 좋아요 0 조회수 615

조건문 문제와 풀이2 첫 번째 문제

해결됨

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

이렇게 작성하면 틀린 코드 인가요?

  • java
  • 객체지향
gnstjrdlsla 댓글 1 좋아요 0 조회수 574

섹션 9 정리한거 맞는지 확인 해주세요 !!

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. request 스코프 빈의 포록시 기반 동작 원리에 대해서 강의도 듣고, 따로 찾아봐서 정리했는데 맞는지 봐주세요. !! 스프링 컨테이너가 초기화될 때, ScopedProxyMode.TARGET _CLASS 설정을 사용하면, 스프링은 원본 클래스를 상속받는 프록시 클래스의 인스턴스를 생성한다. 이 프록시 클래스는 원본 클래스의 모든 메서드를 오버라이드하고, 오버라이드된 각 메서드에는 실제 원본 빈의 메서드를 호출하는 위임 로직이 포함되어 있다. 생성된 프록시 객체는 스프링 빈으로 스프링 컨테이너에 등록되고, HTTP 요청이 있을 때, 클라이언트가 프록시 객체의 메서드를 호출하면, 메서드 내의 위임 로직이 활성화되어 실제 해당 HTTP 요청에 맞는 원본 빈의 해당 메서드를 (찾아) 실행한다. 만약, 해당 HTTP 요청에 맞는 실제 원본 빈이 스프링 컨테이너에 없으면, 위임 로직은 새로운 원본 빈 인스턴스를 생성하여 스프링 컨테이너에 등록한 후, 그 인스턴스의 메서드를 실행한다. 맞나욤.. ㅎㅎ

  • spring
  • 객체지향
동한 댓글 1 좋아요 0 조회수 554

오버라이딩 된 메서드는 항상 우선권을 가진다.

미해결

김영한의 실전 자바 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? ( 예 /아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? ( 예 /아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? ( 예 /아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. 해당 부분들을 공부하면서 제 자신의 정리가 확실하지 않아서 여쭤보고 싶습니다. 오버라이딩 된 Child.method()가 아닌 Parent.method()를 받으려면 super와 부모클래스의 업캐스팅을 통하여 해결하면 되다고 이해하면 될지 여쭤봅니다.

  • java
  • 객체지향
백암순댓국 댓글 1 좋아요 0 조회수 531

모르는 것을 배움에 있어 공부 방법이 궁금합니다.

미해결

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

안녕하세요 강사님 해당 강의를 모두 수강 후 객체지향 강의 듣기 전 다시 한번 복습을 하고 있는데 while 문 1 + 2 + 3 10 + 11 + 12 이런 기본적인 문제도 이해가 되지 않아 while 문을 작성하는데 너무 많은 시간이 소유 됩니다..ㅠ 지금 상황에서 while문 강의등 기본 자바 강의의 모든 예제를 쉽게 풀 떄 까지 복습 후 다음 객체 지향을 수업을 들어야 할지 , 기본 구조만 이해하고 다음 강의를 들어도 될지 궁금합니다 정말 불안한 것은 내년 1월에 2개의 강의가 나오는데 이와 비슷하게 뒤로 갈 수록 객체지향 및 부족한 것들은 분명히 자꾸 누적일 될 것이고 다시 기본 자바 부터 듣어야 하나..? 언제 진도를 나가지..? 라는 생각이 들거 같습니다 ㅠ

  • java
  • 객체지향
홍태경 댓글 1 좋아요 2 조회수 741

다운캐스팅 질문

미해결

김영한의 실전 자바 - 기본편

안녕하세요 <다형성과 캐스팅>을 듣다 질문이 생겨서 남겼습니다. package poly.basic; public class CastingMain1 { public static void main(String[] args) { //부모 변수가 자식 인스턴스 참조(다형적 참조) Parent poly = new Child(); //x001 //단 자식의 기능은 호출할 수 없다 //poly.childMethod(); //다운캐스팅(부모 타입 -> 자식 타입) Child child = (Child)poly; //x001 child.childMethod(); } } <참고로 캐스팅을 한다고 해서 Parent poly의 타입이 변하는 것은 아니다. 해당 참조값을 꺼내고 꺼낸 참조값이 Child 타입이 되는 것이다. 따라서 poly의 타입은 Parent로 기존과 같이 유지된다> 이 부분을 해당 참조값(x001)을 꺼내고 꺼낸 참조값을 사용해 인스턴스 안에서 실행할 타입을(Parent -> Child) "나는 Child 클래스부터 시작해서 기능을 찾을거야~" 라고 컴파일러에게 알려준다. 따라서 poly의 타입은 Parent로 기존과 같이 유지된다. 이렇게 이해하면 될까요? "꺼낸 참조값이 Child 타입이 되는 것이다." 여기 해석이 조금 어렵습니다 !...

  • java
  • 객체지향
한조 댓글 1 좋아요 0 조회수 577

중급 고급편 언제쯤 오픈될까요?

미해결

김영한의 실전 자바 - 기본편

영한님 안녕하세요! 좋은 강의 올려주셔서 감사합니다 🙂 빨리 중급편도 수강하고 싶은데, 혹시 중 - 고급은 언제쯤 오픈 예정이실까요?

  • java
  • 객체지향
김정배 댓글 1 좋아요 1 조회수 564

기본형과 참조형 문제풀이 그리고 문제해결에 대한 질문,,

해결됨

김영한의 실전 자바 - 기본편

안녕하세요 강사님 항상 좋은 강의 감사드립니다. 기본형과 참조형 문제와 풀이 첫 번째 부분에서 부분적으로 이해되는 부분이 있었고 이해가 안되는 부분이 있었습니다. 그리고 완성된 코드를 보고 나름대로 분석을 해보았습니다. 분석을 하면서 배웠던 내용에 대한 회상이 있었습니다. 분석에 대한 오류나 이런 부분에 있어서 틀린 부분이 있는지 여쭤보고 싶습니다.. 그리고 배웠던 내용을 기반으로 응용된 문제나 기능을 직접 코드로 작성해보고 싶은데 "이러이러한 기능을 써야지" "배열을 통해서 응용해야지" 이런 문제 해결에 대한 부분은 어떻게하면 조금 더 효율적인 설계를 할 수 있는지 여쭤보고 싶습니다.

  • java
  • 객체지향
옙버디 댓글 1 좋아요 0 조회수 418

빈 소멸

미해결

스프링 핵심 원리 - 기본편

public class SingletonTest { @Test void singletonBeanFind(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SingletonBean.class); SingletonBean singletonBean1 = ac.getBean(SingletonBean.class); SingletonBean singletonBean2 = ac.getBean(SingletonBean.class); System.out.println("singletonBean1 = " + singletonBean1); System.out.println("singletonBean2 = " + singletonBean2); ac.close(); System.out.println("singletonBean2 = " + singletonBean2); } @Scope("singleton") static class SingletonBean { @PostConstruct public void init(){ System.out.println("singletonBean.init"); } @PreDestroy public void desrtoy(){ System.out.println("singletonBean.desrtoy"); } } } 스프링 컨테이너가 close() 메서드로 종료될 시점에 컨테이너는 빈 객체의 소멸을 처리한다라고 알고있습니다. 그런데 close() 이후에 singletonBean의 참조변수를 출력해보면 null이 아니라 빈의 참조값이 출력되는 이유가 먼가요? 제가 잘못 알고있는 부분이 궁금합니다 아래는 Test 결과 입니다 singletonBean.init singletonBean1 = hello.core.scope.SingletonTest$SingletonBean@530712d singletonBean2 = hello.core.scope.SingletonTest$SingletonBean@530712d singletonBean.desrtoy singletonBean2 = hello.core.scope.SingletonTest$SingletonBean@530712d

  • spring
  • 객체지향
roal 댓글 1 좋아요 0 조회수 304

다운캐스팅 관련 질문드립니다.

미해결

김영한의 실전 자바 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] //부모 변수가 자식 인스턴스 참조(다형적 참조) Parent poly = new Child(); Child child = (Child) poly; child.ChildMethod(); child.parentMethod(); //호출 가능 다운캐스팅으로 부모 타입의 poly를 자식타입으로 변경하여 자식 클래스의 childMethod를 호출 가능하였습니다. 그런데 바로 child.parentMethod도 호출이 가능하던데 다운캐스팅, 업캐스팅 시 부모, 자식의 기능을 모두 불러올 수 있는 것인가요? 부모와 자식의 기능을 모두 호출 가능한 이유가 무엇인지 이해가 되지 않습니다.

  • java
  • 객체지향
  • 다형성
Choi근욱 댓글 1 좋아요 0 조회수 546

Student 클래스 타입 크기 질문

미해결

김영한의 실전 자바 - 기본편

Student 객체의 참조값을 담는 Student 클래스 타입의 크기는 어느정도인가요? (ex. int는 4byte double은 8byte인 것처럼)

  • java
  • 객체지향
이승환 댓글 1 좋아요 1 조회수 341

no frameworks detected

해결됨

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

no frameworks detected 의 문구가 뜹니다 . 아래와 같이 선택할 수 있는 창이 뜨지않습니다. 위를 무시하고 create를 누르면 아래와 같이 나옵니다 ㅜㅜ

  • java
  • 객체지향
댓글 1 좋아요 1 조회수 374

인스턴스 타입을 부모로해도 자식의 오버라이드 메서드가 호출되나요?

해결됨

김영한의 실전 자바 - 기본편

안녕하세요! ElectricCar electricCar = new ElectricCar(); electricCar.move(); 이렇게 하면 호출한 electricCar 의 타입은 ElectiricCar 라서 인스턴스 내부의 ElectricCar 타입에서 시작한다고 하셨습니다. 그래서 electricCar.move(); 를 실행하면 ElectricCar 의 move() 메서드가 실행돼서 전기차를 빠르게 이동합니다. 이렇게 전기차로 출력이 됩니다. Car electricCar = new ElectricCar(); electricCar.move(); 그럼 이렇게 타입이 Car 타입이면 인스턴스 내부의 Car 타입에서 move() 메서드를 실행시켜 "차를 이동합니다."가 출력될 것이라고 생각했는데 전기차를 빠르게 이동합니다. 여기서도 전기차를 빠르게 이동합니다.가 출력됩니다. 어째서 Car 타입에서 move() 메서드를 실행하지 않고 ElectricCar 의 move() 메서드를 실행하게 되는건가요? 감사합니다!! 😊

  • java
  • 객체지향
  • 상속
  • 오버라이딩
노뚜 댓글 1 좋아요 0 조회수 538

자바 추후 중급 고급 영상 문의

해결됨

김영한의 실전 자바 - 기본편

안녕하세요 영한님! 실전 자바 기본편 잘 보고 있습니다. 혹시 추후에 자바 중급 고급편에 가변객체 불변객체 사용이유(스레드와 연관되면서..)와 리플렉션(스프링과 연결되면서...)이 혹시 나오는지 궁금합니다

  • java
  • 객체지향
  • 리플렉션
  • 가변/불변객체
한나라 댓글 1 좋아요 0 조회수 508

ObjectProvider 사용하는 대신에 prototype 객체가 singleton 객체를 주입 받으면 안되나요?

미해결

스프링 핵심 원리 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. "프로토타입 스코프 - 싱글톤 빈과 함께 사용시 Provider로 문제 해결" 강의를 보던 도중에 궁금한 것이 있어 질문을 남깁니다. 강의에서 singleton object가 prototype object를 주입받을 때 생길 수 있는 문제를 이야기 하면서 해결방법을 알려줍니다. ObjectProvider를 이용해서 prototype object를 singleton object method 내부에서 매번 생성하는 방법으로 말이죠. 그런데 이 방법도 제가 보기에는 조금 복잡해 보입니다. singleton object가 prototype object에 의존하는 방식을 역전하면 더 간단해지지 않을까요? 반대로 prototype object가 singleton object에 의존한다면 provider를 사용할 필요가 없어집니다. 클라이언트가 직접 prototype object를 destroy 하면 되지요. 이에 대해 어떻게 생각하시나요? provider와 비교했을 때 장단점을 알 수 있을까요?

  • spring
  • 객체지향
ybjeon01 댓글 1 좋아요 2 조회수 568

myLoggerProvider.getObject() 메서드시 동시성관련 질문있습니다.

해결됨

스프링 핵심 원리 - 기본편

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오)예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네 [질문 내용] 클라이언트1,2,3,4,5이 동시에요청했을때 myLoggerProvider.getObject()실행해서 my Logger 객체를 받아올때 (컨트롤러or서비스) request요청이 여러개니까 myLogger객체는 이때 여러개인데... 똑같은 객체가 계속 반환되는걸 보장해주는 이유가 있나요? @PostConstruct public void init(){ uuid = UUID.randomUUID().toString(); System.out.println("[" + uuid + "]" + "request scope bean create: "+this); } 거의 동시에 요청이왔다고 가정했을때 init해서 각 request스코프객체에 UUID각각설정후 getObject()를 각자 두번씩해서 myLogger를 얻게되는데 이때 myLogger타입 객체는 여러개가있을수있고 이걸 init했을때-처음getObject()-두번쨰getObject-close 이런순서로 진행될때 처음 init할떄랑 close할때는 객체주소가 같은건 당연하지만 그사이에 getObject()했을때 객체가 바뀔우려가 있는건 아닌지 생각이듭니다 @RequestMapping("log-demo") @ResponseBody public String logDemo(HttpServletRequest request) throws InterruptedException { MyLogger myLogger = myLoggerObjectProvider.getObject(); <================여기 String requestURL = request.getRequestURL().toString(); myLogger.setRequestURL(requestURL); myLogger.log("controller test"); logDemoService.logic("testId"); return "OK"; } public class LogDemoService { private final ObjectProvider<MyLogger> myLoggerObjectProvider; public void logic(String id) { MyLogger myLogger = myLoggerObjectProvider.getObject();<==========여기 myLogger.log("service id = "+ id); }

  • spring
  • 객체지향
wlsl3472 댓글 3 좋아요 0 조회수 334

반복문 리팩토링 질문드립니다.

해결됨

김영한의 실전 자바 - 기본편

안녕하세요 영한님! 질문은 처음 드리는거 같습니다~ 기본형과 참조형 '문제와 풀이' 시간에 ProductOrder를 리팩토링하는 부분에서 질문이 있습니다. 리팩토링 하는 과정에서 for문 안에서 수행하던 print와 totalAmount를 계산하는 로직을 각각 메서드로 나누었는데요, 이렇게 되면 한번만 수행되던 반복문이 메서드로 나누면서 각각 수행되어 2번이 되는데 이런 부분은 for문이 한번 더 돌게되어 오는 성능이슈보다, 깔끔하게 리팩토링 되는 부분이 더 이점이 큰 부분일까요? 사실 현업에서 업무를 할때도, for안에서 여러가지 로직이 수행되면 한번에 파악하기가 어려워서 나눠야지 싶어서 나누었지만, 한번만 돌던 반복문이 여러번 돌게 될 수 있어서 망설여지는 부분이 있었습니다. 이 부분 질문드립니다! 감사합니다~

  • java
  • 객체지향
  • 리팩토링
suco 댓글 1 좋아요 1 조회수 532

인기 태그

인프런 TOP Writers

주간 인기글