묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
@TestConfiguration 관련 설명과 실제 동작이 다른 부분이 있는 것 같습니다.
안녕하세요 토비님! 좋은 강의 정말 감사드립니다.@TestConfiguration 에 대한 설명을 해주신 부분 중에서 테스트 결과와 다른 부분이 있는 것 같아 확인차 질문 드립니다. <28. 회원 애플리케이션 서비스 테스트 (2)> 의 11:38에서 "@TestConfiguration 에 어떤 Bean을 정의하면 이게 우선이 되어 돌아갑니다." 라는 말씀을 해주셨는데요.해당 말씀이 맞는지 테스트해 보기 위해, 현재의 강의 예제 코드에서 @TestConfiguration 이 붙은 클래스의 PasswordEncoder를 정의한 Bean 메서드의 이름을 testPasswordEncoder로 변경하고 테스트를 돌려 보니 아래와 같은 오류가 발생하였습니다.(EmailSender의 경우 DummyEmailSender에 @FallBack 이 붙어 있어서 @TestConfiguration 의 EmailSender Bean 메서드의 이름을 다르게 구성하더라도 테스트는 정상적으로 동작합니다.) @TestConfiguration 이 정의되었다고 해서 우선순위로 동작하지는 않는 것으로 보이고,기존 Bean의 적용 우선순위에 따라 @TestConfiguration 에서 정의한 메서드 이름과, 이를 사용하는 곳의 필드 이름이 동일한 경우 해당 Bean을 찾아서 동작하는 것으로 보였습니다. 혹시 제가 잘못 이해하고 있거나 보완이 필요한 부분이 있다면 편히 말씀 부탁드립니다. 확인 부탁드립니다.감사합니다 :)
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
mvc 패턴 정의를 제 나름대로 생각해 봤는데, 이렇게 이해해도 되는지 알고 싶습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. mvc패턴을 나름대로 생각해 해봤는데요. 이렇게 이해해도 되는지 알고 싶습니다.컨트롤러(controller) : 극작가모델(model) : 배우뷰(view) : 무대이렇게 생각을 하였는데 이렇게 생각해도 맞는지 알고 싶습니다.답변 부탁 드립니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
mvc 패턴에서 new-form에서 404 에러 발생합니다..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]jsp 사용해서 mvc 패턴으로 작성하는 부분에서 /servlet-mvc/members/new-form 으로 가면 404 에러가 뜹니다.. 어디가 잘못된건지 좀 오래 찾았는데 제가 봐서는 안보여서 질문드립니다.https://drive.google.com/file/d/1suE05xX8JG9_IefsIcdp4XGOxxF2mhCe/view?usp=drive_link프로젝트 압축 파일입니다.
-
해결됨죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
JobLauncherTestUtils 의존성 주입
킬구형, 테스트 할 때 JobLauncherTestUtils 빈을 주입받는 부분에서 궁금한 게 있어. @Autowired private JobLauncherTestUtils jobLauncherTestUtils;spring batch 테스트를 할 때 JobLauncherTestUtils 을 AutoWired 를 사용해서 필드 주입을 받으면 테스트가 잘 동작하는데, @RequiredArgsConstructor class InFearLearnStudentsBrainWashJobConfigTest { private final JobLauncherTestUtils jobLauncherTestUtils;생성자 주입으로 받으려고 하면 아래처럼 에러가 나는 이유가 뭘까?No ParameterResolver registered for parameter [final org.springframework.batch.test.JobLauncherTestUtils jobLauncherTestUtils] in constructor ~~그리고 AutoWired 로 필드 주입을 받으면 동작은 잘 하지만, IDE에서 Could not autowire. No beans of 'JobLauncherTestUtils' type found. 이렇게 빨간 줄이 뜨는 건 왜일까? 인터넷 서칭해봐도 플러그인 설치를 통한 해결 방법은 있지만 해답은 못 찾았고, 지피티 설명은 이해가 안돼서 여기에 물어봐.미리 고마워!
-
해결됨스프링 부트 - 핵심 원리와 활용
mac m2에서 startup.sh 실행후 아무 반응이 없습니다.
해당 명령어를 입력하면 그이후엔 어떠한 로그도 나타나지 않고 있습니다.구글링해도 저와같은 사례가 없는데, 도대체 왜이러는걸까요?권한 지정함자바 버전 변경하면서 테스트 해봄로그 파일에 어떠한 로그도 남지않음startup.sh이후에 아무 반응이 없음
-
미해결죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
구분자로 분이된 형식의 파일 읽기 소스 오류 문의
☠ 질문 가이드 ☠ " 시스템 종결자의 지령이다. 질문하기 전에 이 규칙들을 숙지하도록. " 1. 코드 실행에 문제가 있다고?전체 코드를 보여줘라. 단편적인 에러 메시지만으로는 아무것도 알 수 없다.실행 환경도 알려달라. JDK 버전, 스프링 버전 등을 함께. 2. 오타를 발견했나?즉시 제보하도록. 자네같은 날카로운 눈을 가진 동료가 필요하다. 3. 질문은 자유롭게"이런 걸 물어봐도 될까요?" 같은 소심한 멘트는 불필요하다. 궁금한 건 바로 물어봐라. 배치 시스템에 소심한 건 없다. 4. 검색은 기본비슷한 질문이 있는지 먼저 확인하도록.하지만 이해가 안 된다면? 주저하지 말고 추가 질문해라.GPT가 거짓말친다고? 나에게로 오라. 💀 5. 서로 존중하라여기는 모두가 시스템을 지배하고자 하는 동료들이다.서로를 이해하고 돕는 문화를 만들어가자. ⛔ 인프런 서비스 자체에 대한 문의는 1:1 문의하기로.💀그쪽 서버는 막강한 CTO가 있어 건드리지 않는 게 좋을 거다 💀- KILL-9 올림 구분자로 분리된 형식의 파일 읽기org.springframework.batch.item.file.FlatFileParseException: Parsing error at line: 2 ... ... Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'severity' of bean class [com.system.batch.onego_batch.config.SystemFailureJobConfig$SystemFailure]: Bean property 'severity' is not writable or has an invalid setter method.위와 같은 에러가 나는데 여기서 아래 소스 보면 set method가 없어서 그러는데 위에 @Data를 추가하면 될거 같아요! public static class SystemFailure { private String errorId; private String errorDateTime; private String severity; private Integer processId; private String errorMessage; // setter, toString() rm -rf }P.S.존댓말로 질문하면 rm -rf를 시전한다. 편하게 물어보도록.강의에서 놓친 부분이나 더 보충하면 좋을 내용도 자유롭게 제보하라. 너희의 피드백이 이 강의를 더 강력하게 만든다. 🔥 시스템을 함께 진화시켜 나가자.🔥
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
Repository secrets를 추가할 때 AWS_SECRET_ACCESS_KEY의 secret 갑싱 뭔가요?
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 2-3강 여기까지 이해하신 내용은 무엇인가요? 워크플로우에 사용될 환경변수를 입력하는 중이다. 2. 어려움을 겪는 부분어느 부분에서 막히셨나요? AWS_SECRET_ACCESS_KEY의 secret 값이 무엇인지 강의에는 안 나와 있습니다. 코드의 어떤 로직이 이해가 안 되시나요?어떤 개념이 헷갈리시나요? 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요? 일단 dingco-terraform-user 사용자의 액세스 키를 입력했습니다. 이전의 AWS_ACCESS_KEY와 동일하게요. 에러가 발생했다면 어떤 에러인가요?현재 작성하신 코드를 공유해주세요 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! AWS_SECRET_ACCESS의 Secret 값을 입력하지 않으면 Repository secrets를 추가할 수 없는데 이 값으로 AWS_ACCESS_KEY에 입력했던 액세스 키를 동일하게 입력해주는 게 맞나요? 아니면 다른 값을 입력해야 하나요?
-
해결됨실시간 채팅 서버 구축: 분산 처리부터 성능 최적화까지
api모듈에대해 문의드립니다.
안녕하세요, 선생님! 좋은 강의 감사합니다.사이드 프로젝트를 진행하기 위해 이 강의를 신청해서 열심히 듣고 있습니다.강의를 들으면서 궁금한 점이 생겨서 질문 드립니다.제가 예매 시스템을 개발하려고 하는데, 다음과 같은 여러 기능들을 구현해야 합니다:채팅 기능 (강의에서 다루신 Chat API)AI 추천 기능 (Spring AI에서 제공하는 API)데이터 수집 기능 (크롤링 API)기타 예매 관련 API들이런 상황에서 모듈 구조 설계에 대해 고민이 됩니다.방법 1: 모든 API 기능들을 하나의 API 모듈에서 관리 방법 2: 기능별로 모듈을 나누고, 각 모듈 내에서 해당 기능의 API들을 그룹화어떤 방식이 더 적절한 설계일까요?혹시 이런 다중 기능을 가진 시스템에서의 모듈 설계에 대한 조언을 해주실 수 있을까요?감사합니다!
-
해결됨스프링 핵심 원리 - 고급편
순환참조
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]스프링 부트 2.6이상 사용중이라 순환 참조를 기본적으로 금지하는 구조인데spring.main.allow-circular-references=true이 옵션을 넣으면 되긴 합니다.다만, ObjectProvider 를 사용하면 아래와 같이 문서가 작성되어위 옵션을 제거해서 다시 테스트 했는데 circular 예외가 발생하더라구요... 이 부분에서 순환이 안생겨서 옵션이 없어도 되어야 되는데 안되는 느낌이라 제가 잘 못 이해한거지... 답변 부탁드립니다.ㅜㅜ
-
미해결스프링 핵심 원리 - 기본편
AutoAppConfig 빈 객체 관련
[질문 내용]AppConfig에서는@Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); }빈 객체로 return new 된 MemberServiceImpl이담긴다고 설명하셨는데AutoAppConfig에서는 빈 객체로@Component가 붙은 클래스 타입이 담기는게 맞나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 gradlew build 실행 안됨
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]git bash 연동했고 터미널을 열어서 가장 먼저 ./gradlew를 입력하면 위 과정까지 수행이 됩니다. 하지만 그 다음으로 1. gradlew build (command not found), 2. ./gradlew build (Failed이라 뜸)gradlew (command not found)gradlew.bat (command not found)뭘 입력해도 더이상 진행이 안됩니다. 도와주세요 선생님
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
react 소스 부탁드립니다!
강의 너무 잘 보고 있습니다.덕분에 처음 서버 개발할 때 큰 도움 되었습니다. 좋은 강의 감사합니다! 메일 : kei02012@naver.com
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
MemberRegisterRequest 의 검증 방식으로 @Valid 와 초기화 스크립트의 차이가 무엇인가요?
안녕하세요, 토비님! 훌륭한 강의 너무너무 잘 듣고 있습니다. 토비님의 고견 덕에 제 개발 세계관을 정리하는데 도움이 많이 되고 있습니다. 감사합니다. 강의의 데이터 검증 파트에서 질문이 있습니다.MemberRegisterRequest 의 검증 방법으로 jakarta.validation 을 사용하도록 설명해주셨는데요.(1) MemberRegisterRequest 의 생성자 또는 팩토리 매서드에서 값을 검증하는 방식과 validation 어노테이션을 이용하는 방식을 어떻게 구분해서 쓰는지? 와 (2) validation 어노테이션이 활용되는 영역의 범위가 궁금합니다.저는 코틀린 스프링부트로 강의를 따라가고 있어서 코틀린 기준으로 예시를 들면, 보통 저렇게 도메인 레이어에서 비즈니스 로직에 직접 사용되는 데이터를 검증하는 경우에는 코틀린의 init 블록 내에 비즈니스 관련 데이터 검증 로직을 넣어서 해당 클래스 객체의 데이터 정합성이 항상 보장되게 해왔는데요. (게다가 도메인 레이어의 클래스다보니 더욱 타 기술 의존 없이 검증하는 게 좋다고 생각해서 init 블록을 애용해왔습니다.)반대로, Valid 는 외부로부터 입력 받은 데이터들의 아주아주 기본적인 데이터 타입 검증 용도(Nullable, 숫자, 이메일, 공백 여부 등) 정도로만 사용해왔습니다. 애초에 제공해주는 어노테이션의 기능이 비즈니스 의미를 담기엔 턱없이 부족해서, "데이터가 비즈니스 의미상으로는 틀릴 수 있어도, 타입 자체는 맞아" 정도만 보장해주는 용도라고 느꼈습니다.그래서 강의에서 어플리케이션 서비스의 파라미터나 도메인 객체의 상태를 검증하는 용도로 사용하시는 모습이 조금 낯설게 느껴졌습니다.어플리케이션 서비스 파라미터에 들어있는 데이터는 이미 컨트롤러에서 기본 검증은 끝난 데이터들이라고 생각해서요.게다가 Valid 를 어플리케이션 서비스에서도 쓰기 시작하면, 컨트롤러와 서비스에서 중복 검사를 하게 될 것 같습니다.이런 점들에 대해서 어떻게 생각하시고 어떻게 구분하시는지 그 기준이 궁금합니다.Q&A 의 다른 질문들에 대한 토비님의 답변들을 보면서도 많이 배우고 있습니다. 고견 감사합니다! 🙂
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Application.java 실행이 안돼요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] Application.java 파일 실행버튼이 비활성화 되어 있습니다. 버전은 21을 쓰고 있어요
-
미해결스프링 핵심 원리 - 고급편
this를 단독으로 사용할때랑 파라미터 바인딩 할때 차이
@Before("allMember() && this(obj)") public void thisArgs(JoinPoint joinPoint, MemberService obj) { log.info("[this]{}, obj={}", joinPoint.getSignature(), obj.getClass()); } @Before("allMember() && this(hello.aop.member.MemberService)") public void thisArgs(JoinPoint joinPoint, MemberService obj) { log.info("[this]{}, obj={}", joinPoint.getSignature(), obj.getClass()); } @Before("allMember() && this(MemberService)") public void thisArgs(JoinPoint joinPoint, MemberService obj) { log.info("[this]{}, obj={}", joinPoint.getSignature(), obj.getClass()); }this를 단독으로 사용할 때 에는 이해가 되는데, 파라미터 파인딩에서는 왜 obj만 허용이 되나요?allMember() 조건 이후에 MemberService타입만 받고 싶을 수도 있을거 같은데...즉 allMember()의 this가 반드시 MemberService일거란 보장이 없지 않나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Application.java 실행이 안돼요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링부트에서 프로젝트를 생성하고 Application.java를 실행하려고 하니까 실행버튼이 비활성화 되어있습니다. jdk 버전 23을 사용하고 있는데 왜 안되는건지 모르겠습니다. 해당 화면 사진입니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
4일차 과제 'SQLSyntaxError: Table not found Error' 질문
4일차 과제의 문제 1번을 해결하려고 코드를 작성하고 Table도 생성해서 run 해보았는데, 자꾸 Table not found 에러가 뜨면서500 internal error가 발생합니다. 이 에러 때문에 테이블도 3번 다시 생성하고, show tables 했을 때도 table이 모두 잘 출력됩니다. 대소문자 바꿔서도 다 해봤는데 왜 이런 오류가 뜨는지 모르겠습니다..ㅜㅜ 도와주세요ㅠ
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
만들면서 배우는 클린 아키텍처 관련된 질문
강의에서도 잠깐 언급되지만, 전체적인 강의 내용이 만들면서 배우는 클린 아키텍처의 저자가 주장하는 내용과는 지향하는 바는 같지만 그 구현에 있어서 어느정도 거리가 있다고 느껴지는데요..!"만들면서 배우는 클린 아키텍처" 이 책을 읽으면서도 저자가 주장하는 내용이 좋은 아키텍처라는 생각이 들었었고, 그 지름길에 대해서도 많은 생각이 들었습니다.그러다보니 강의에서 언급해주시는 일부 내용들은 이 지름길을 사용했다는 것으로도 저한테는 느껴지기도 하는데요. 하지만 또 다른 측면으로 토비 선생님께서 강의에서 말씀하시는 내용들이 매우 타당하고 이것 또한 매우 클린하며 헥사고날 아키텍처의 장점을 매우 잘 살리고 있다는 생각도 들었습니다.제가 궁금한 건 "만들면서 배우는 클린 아키텍처" 에서 저자가 주장하는 내용들에 대해 토비 선생님께서는 어떻게 생각하고 계시는지 궁금합니다!회사에서 많은 시니어 분들이 헥사고날과 관련해서는 저자마다 주장하는 내용이 다른 경우가 많으니 최대한 많이 접하고 스스로 기준을 삼는 것이 좋다라고 조언을 주시기도 하셔서 더욱 궁금하네요 ㅎㅎ:)!
-
미해결스프링 핵심 원리 - 기본편
테스트케이스 인스턴스 확인 부분
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? ()[질문 내용]강의자료 6페이지에 보면 맴버서비스임플의 인스턴스가 맴버서비스인지 확인을 하도록 테스트 코드를 작성하셨습니다.이전에 강의내용을 보면 스프링 컨테이너에 memberService는 return new MemberServiceImpl(...)로 작성했기 때문에 맴버서비스임플의 인스턴스인 것은 이해했습니다.그런데 애초에 맴버서비스임플은 맴버서비스의 구현체니까Assertions.assertThat(memberService).isInstanceOf(MemberService.class); 위에 처럼 확인하는 것이 좋다고 생각했는데 강의내용처럼 테스트를 하신 이유가 궁금하고 제 방식이 안좋다면 왜 안좋은지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
BeanDefinitionStoreException 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]OrderServiceImpl, MemberServiceImpl 의 컴포넌트 이름을 service로 동일하게 설정하고 실행하면 스프링 컨테이너가 bean을 등록할 때 발생하는 BeanDefinitionStoreException 오류도 같이 뜨는데 강사님 로그에는 보이지 않는 것 같아서 원래 발생하는 오류인지 궁금합니다.