묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
[생애 최초 JPA 사용하기]로 넘어가기 전 Mybatis 공부..? 관련 질문입니당(3번질문 추가)
안녕하세요 공부하는 개발자 최태현님!강의가 너무 재밌어서 23강까지 후딱 와버린 지금, 두번째 질문 드리게 되었네요 ㅎㅎ오늘도 감사한 마음을 가지고 바로 본론으로 넘어가보도록 하겠습니다~(2월 26일 오전 11시 50분 3번질문 추가)22강까지 마치고 나서 데이터 접근 기술에 대해 더 알아보았는데요!크게 아래와 같은 5가지 기술을 사용하고 있다고 하더라구요SQLMapperJDBC TemplateMyBatisORM 기술JPA, HibernateSpring Data JPAQuerydsl이 중, JDBC Template과 JPA쪽은 본 강의에서 다루고 있고 Querydsl은 [실전!코틀린과 스프링부트로 도서관리 애플리케이션 개발하기(Java프로젝트 리팩토링)]에서 배울 수 있는 것 같은데,, MyBatis 같은 경우는 따로 다루고 계신 것 같지 않아서 독학으로 해보고자 하고 있는 상태입니다..ㅠ그래서 문의 드리고자 하는 부분은,MyBatis를 따로 강의에서 다루지 않으신 이유!도서관리 애플리케이션에 MyBatis를 적용해보려면?2-1. 혹시 강의 내용에 업데이트 해주실 수 있으신지...!?(영상이나 문서등의 강의자료)MyBaits 검색하다보니 DAO & VO 같은 것들을 보게되었는데, 본 강의에서 배운 [외부 API 호출- DTO | Controller - Service - Repository - 데이터베이스]것과 유사해보이는데, 어떤 차이가 있는지 궁금해요!크게 이렇게 3가지 입니다... 사실 2번(+2-1)은 조금 양심에 찔리는 문의 내용같기도 하네요 ㅠ2번은 사실 스스로 찾아서 적용해보는 노력으로 얻는 결과가 제일 본인에게 도움이 되는 것을 알고 있으나,, 생각보다 이게 쉽지 않더라구요 ㅠㅠ.. 계속 시도하다가 답답해진 마음을 조금 담아 이렇게 문의 글 드려봅니다..!!오늘도 질의응답 퀄리티마저도 훌륭한 태현님의 강의를 들으며 공부 이어가고 있겠습니다~미리 답변 감사드리며, 행복한 하루 보내시길 바랄게요~!감사합니다 행복하세요~
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
강의 순서
안녕하세요현재 스프링 MVC 1편을 수강중입니다.강의만 듣다보니 제가 직접 뭔가 만들어보면서 내용들을 익히고, 개발 과정에 대해 좀 더 파악하고 싶어졌습니다. MVC 2편과 DB 2편을 제외한 MVC 1편, DB 1편까지만 듣고 간단한 프로젝트를 진행한 다음에 나머지 2편들을 수강하여도 문제가 없을까요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
1068번: 트리
제가 다음과 같이 코드를 작성했는데,100%까지 가다가 틀립니다.. 어떤게 문제일까요? 반례를 제시해주실 수 있나요?감사합니다. https://www.acmicpc.net/problem/1068 import sys input = sys.stdin.readline n = int(input()) g = list(map(int, input().split())) m = int(input()) cnt = 0 def DFS(x): g[x] = -1 for i in range(n): if g[i] == x: DFS(i) DFS(m) for i in range(n): if g[i] != -1 and i not in g: cnt += 1 print(cnt)
-
미해결[리뉴얼] 타입스크립트 올인원 : Part2. 실전 분석편
axios 파트 첫번째 강의 질문입니다
axios 파트 첫번째 강의에서 AxiosInstance인터페이스가 Axios클래스를 상속하기 때문에 new axios() 이렇게도 쓸수 잇다고 말씀하셧는데 실제로 사용 해보려고 하니깐 config파라미터가 옵셔널 파라미터 인데도 에러가 떠서 비슷한 다른 코드(인터페이스가 클레스를 상속하는 코드)로 테스트 해봤는데도 해당 방식으로 사용 되지 않더라고요....TS에서 클래스는 객체를 생성하는 설계도로써의 역할도 수행하지만 그 자체로 타입의 역할도 수행하기에 인터페이스가 클래스를 상속할 경우에 클래스의 타입으로써의 역할만 상속, 즉 클래스의 생성자는 상속하지 않는다고 판단 했는데 혹시 제가 미처 생각 못하고 있는 부분이 잇을까요?
-
해결됨탄탄한 백엔드 NestJS, 기초부터 심화까지
'수업 노트를 확인해 주세요 :)'의 수업노트 위치가 어디인가요?
'첫 시작' 챕터 영상 레이아웃의 하단에 '수업 노트를 확인해 주세요 :)'가 있는데 해당하는 수업노트가 어디 있는건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
errorPage500Api 함수 내에서 ex 가 null 로 return 되네요.
errorPage500Api 함수 내에서 ex 가 null 로 return 되어 postman 결과가 json 으로 오지 않고 body 가 비었습니다. 오류는 아래와 같네요. java.lang.NullPointerException: Cannot invoke "java.lang.Exception.getMessage()" because "ex" is null at hello.exception.servlet.ErrorPageController.errorPage500Api(ErrorPageController.java:39) ~[main/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:207) ~[spring-web-6.0.5.jar:6.0.5] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:152) ~[spring-web-6.0.5.jar:6.0.5] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-6.0.5.jar:6.0.5] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.5.jar:6.0.5] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.5.jar:6.0.5] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.5.jar:6.0.5] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.5.jar:6.0.5] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.5.jar:6.0.5] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.5.jar:6.0.5] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.5.jar:6.0.5] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.5.jar:6.0] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.5.jar:6.0.5] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.5.jar:6.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.5.jar:6.0.5] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.5.jar:6.0.5] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-6.0.5.jar:6.0.5] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-6.0.5.jar:6.0.5] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:443) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:367) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:295) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:372) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:296) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:153) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:859) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1734) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.5.jar:10.1.5] at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]2023-02-26T09:40:16.190+09:00 ERROR 54414 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost] : Exception Processing ErrorPage[exceptionType=java.lang.RuntimeException, location=/error-page/500] 어떻게 수정가능할까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Kafka Docker-compose기동시 connect는 어떻게 설정하나요?
안녕하세요!Kafka Docker-compose기동시 connect는 어떻게 설정하나요?강의내용에는 이 부분이 생략된 것 같아서 질문합니다!
-
미해결타입스크립트 입문 - 기초부터 실전까지
ts language server 업데이트 방법이있나요??
"함수 타입- 파라미터를 제한하는 특성" 강의에서 , 강사님이 js 파일과 ts파일 왔다갔다하니까 해결하셨던데 단축키라던가 쓰신건지 궁금합니다.
-
미해결파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자
질문이 있습니다
치킨 당첨자 부분에 winner[0]을 대입하셨는데,리스트 값이라면 [] 해당 괄호도 같이 출력해야 하는 것 아닌가요???밑에는 []가 출력되고 위에는 출력되지 않는 이유가 궁금합니다ㅜ,,하나든 여러개든 리스트라면 []가 출력되어야 한다고 생각해서요 ㅠ_ㅠ 답변 부탁드릴게요!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S (1325번 - 효율적인 해킹) 문제 질문 드립니다.
안녕하십니까, 큰돌님! 2-S (1325번 - 효율적인 해킹) 문제 질문 드립니다.문제 예시는 통과하는 데 코드 제출시 계속 출력초과가 떠서 질문 드립니다.하기 아래 링크는 제 풀이 입니다.http://boj.kr/6fbef53ab3694838859828bf2a71d964 항상 좋은 가르침을 주셔서 감사합니다.
-
해결됨코딩은 실전이다! - Git알못을 위한 깃린이코스(Git, Github 실습위주)
깃질문
안녕하세요 혹시 branch 활용 실전편에서 메인 브랜치는 a파일내에 d라는 코드였고 gitrini 브랜치는 a라는 파일에 c라는 코드와 새로운 파일에 q라는 코드였는데요이런경우에 merge하면 a라는 파일 내에 겹치는 부분이 d하고 c인데 이런 경우는 그냥 메인브랜치의 a 파일의 d가 gitrini브랜치의 a라는 파일에 있는 c라는 코드대신 수정되는건가요?
-
미해결스프링 배치
스키마설정
안녕하세요 강의 초반이지만 대박강의네요 질문이 하나 있습니다배치 설정중에 initialize-schema: never네버라는 설정은 누가 실수로 스키마를 사용할까봐안전 장치용으로 만들어진건가요??(개인적인 생각입니다)
-
해결됨스프링 시큐리티
csrf 토큰 시큐리티 6버전 변경사항
안녕하세요 강의 잘 보고있습니다. csrf 토큰 값을 헤더에 넣어서 실습하는 부분 따라해봤는데 잘 안되서 코드를 뜯어봤습니다.이번에 시큐리티 버전이 6으로 올라가면서 csrf 토큰을 인코딩해서 전달하고 이걸 디코딩하는 부분이 영상과 다른것같았습니다. 그래서 기본으로 제공하는 로그인 페이지에서 디버깅을 해보았는데 클라이언트에 전달한 csrf 토큰값이랑 실제 서버가 가지는 csrf 토큰값이 서로 달랐습니다. 이렇게되면 영상에서 보여주신 실습은 제대로 동작하지 않는게 맞나요?해당 사진은 CsrfFilter에서 actualToken을 받아오기 위한XorCsrfTokenRequestAttributeHandler 클래스 내부에 존재하는 resolveCsrfTokenValue 함수의 소스코드입니다.예제 따라하면 항상 마지막에 사이즈 비교하는 부분에서 걸렸습니다.
-
해결됨스프링 핵심 원리 - 기본편
@Configuration과 싱글톤강의를 따라하는데 값이 다르게 나옵니다.
@Configuration 어노테이션 안의 AppConfig 클래스에서 memberService와 orderService에 들어가는 memberRepository 설정이 각각 new로 MemoryMemberRepository를 생성한다 하더라도 그 MemberRepository들은 같은 싱글톤으로 있다는 강의 내용은 전부 이해했습니다.그런데 강의 내용 그대로 따라 코딩을 하였는데 결과값은 각각 다른 MemberRepository를 갖게 되더라구요... 그래서 제가 잘못한 것이 있는지 알 수 있을까 해서 질문드립니다.AppConfig@Configuration public class AppConfig { @Bean public static MemberRepository memberRepository() { return new MemoryMemberRepository(); } @Bean public static DiscountPolicy discountPolicy() { // return new FixDiscountPolicy(); return new RateDiscountPolicy(); } @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } }MemberServiceImplpublic class MemberServiceImpl implements MemberService{ 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); } // 스프링의 @Configuration 싱글톤 테스트를 위한 Getter public MemberRepository getMemberRepository() { return memberRepository; } }OrderServiceImplpublic class OrderServiceImpl implements OrderService { 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); } // 스프링의 @Configuration 싱글톤 테스트를 위한 Getter public MemberRepository getMemberRepository() { return memberRepository; } }ConfigurationSingletonTestpublic 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); System.out.println("memberService -> memberRepository = " + memberService.getMemberRepository()); System.out.println("orderService -> memberRepository = " + orderService.getMemberRepository()); System.out.println("memberRepository = " + memberRepository); assertThat(memberService.getMemberRepository()).isSameAs(memberRepository); assertThat(orderService.getMemberRepository()).isSameAs(memberRepository); } }결과제가 강의 내용을 이해한대로라면 저렇게 3개가 같은 MemoryMemberRepository를 가져야 할것같은데 제가 뭔가 잘못 작성한것이 있을까요...?
-
미해결C언어 슈팅게임 따라만들기
콘솔창 크기 바꿀때 윈도우11에서 속성창이 안보입니다. ㅠㅠ
저 선생님 여기 콘솔창 크기 바꿀때 제 컴퓨터가 지금 윈도우 11이라 그런데.. 속성창이 안보입니다.. 어떻게 해야할까요?..
-
미해결[개념은 호옹~, 실습 빡] 스프링 부트, 입문!
20강 질문드립니다 홍팍쌤
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 포스트 맵핑에서 Article created = dto.toEntity(); 이걸 왜 .. articleService.create(dto) 로 바꿔주신건가요 ??
-
미해결팀 개발을 위한 Git, GitHub 입문
레파지토리를 만들어서 폴더 전체를 push 하고 싶습니다.
강사님 안녕하세요!TIL 레파지토리를 만들어서 react-nodebird 라는 폴더 전체를 push 하고 싶은데 막혔습니다..터미널 내용 입니다. (개인정보내용은 지웠습니다.) Last login: Sat Feb 25 23:30:28 on ttys001MacBookPro ~ % cdMacBookPro ~ % cd documentsMacBookPro documents % cd programming MacBookPro programming % cd TIL MacBookPro TIL % git statusOn branch masterYour branch is up to date with 'origin/master'. nothing to commit, working tree cleanMacBookPro TIL % lsreact-nodebirdMacBookPro TIL % git logcommit cd0c0eed6fb52d341e090cca9818e2718a2f387d (HEAD -> master, origin/master)Author:Date: Sat Feb 25 23:40:03 2023 +0900 TIL repository 생성MacBookPro TIL %
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
@types/cors설치
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 22:03 초 부분 에 cors 설치하시는데 요거는 안하셨는데 해야되는거 맞나요??저는 안하니까 오류나서 설치하라고 뜨더라구요..영상에서는 설치안했는데도 오류 안뜨는 거같아서..아님 제가 잘 못본걸 수도 있어서 알려주시면 감사드립니다!
-
미해결홍정모의 따라하며 배우는 C언어 (부록)
이진 탐색: 탐색 실패하는 경우 어째서 first > last인 경우가 나오나요?
17.15강 이진탐색 강의의 13:10부분입니다.이진탐색에서 만약 탐색을 실패하는 경우 어째서 first >last라는 상황이 발생하는지 잘 모르겠습니다.반복문을 반복해야할 상황이(탐색해야할 상황이) first <= last인 상황이라는 것을 알겠지만, first > last가 되는 상황은 어떻게 유도되는지 모르겠습니다.#include <stdio.h> int BSearch(int ar[], int len, int target) { int first = 0; int last = len - 1; int mid; while (first <= last) { mid = (first + last) / 2; if (target == ar[mid]) return mid; else { if (target < ar[mid]) last = mid - 1; else first = mid + 1; } } return -1; } int main(void) { int arr[] = { 1,3,5,6,7,9,11,13,15,19 }; int index; index = BSearch(arr, sizeof(arr) / sizeof(int), 3); if (index == -1) printf("해당값 없음\n"); else printf("타겟의 위치 : %d\n", index); return 0; }
-
해결됨스프링 핵심 원리 - 기본편
xml 방식의 설정은 어떻게 싱글톤을 보장하나요?
[질문 내용]xml 방식의 설정으로 MemberRepository 객체를 출력해보면 MemberServiceImpl 과 OrderServiceImpl, MemberRepository 모두 같은 인스턴스를 공유하고 있는데 xml 의 BeanDefinition을 확인하려고 해도 GenericXmlApplicationContext 구현체는 getBeanDefinition() 함수를 제공하지도 않네요... 궁금합니다.