묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기
인증 에러
학습중 궁금한 것은 언제든 문의 하세요.질문을 최대한 자세히 남겨주시면 반드시 답변 드리도록 하겠습니다.추가로 알고 싶은 내용도 요청해주시면 강의 자료를 업데이트 해서 제공할 예정입니다.application.ymlspring: application: name: HelloMessageQueue rabbitmq: host: localhost port: 5672 username: admin password: admin server: port: 8080 docker-compose.ymlservices: rabbitmq: image: rabbitmq:3-management container_name: mq ports: - "5672:5672" - "15672:15672" environment: RABBITMQ_ERLANG_COOKIE: rabbitmqCookie RABBITMQ_DEFAULT_USER: admin RABBITMQ_DEFAULT_PASS: admin이렇게 해서 실행하면2025-08-08T11:17:15.145+09:00 ERROR 11684 --- [HelloMessageQueue] [ restartedMain] o.s.boot.SpringApplication : Application run failedorg.springframework.context.ApplicationContextException: Failed to start bean 'container' at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:408) ~[spring-context-6.2.9.jar:6.2.9] at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:394) ~[spring-context-6.2.9.jar:6.2.9] at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:586) ~[spring-context-6.2.9.jar:6.2.9] at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na] at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:364) ~[spring-context-6.2.9.jar:6.2.9] at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:310) ~[spring-context-6.2.9.jar:6.2.9] at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:1006) ~[spring-context-6.2.9.jar:6.2.9] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:630) ~[spring-context-6.2.9.jar:6.2.9] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.5.4.jar:3.5.4] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) ~[spring-boot-3.5.4.jar:3.5.4] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-3.5.4.jar:3.5.4] at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) ~[spring-boot-3.5.4.jar:3.5.4] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) ~[spring-boot-3.5.4.jar:3.5.4] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) ~[spring-boot-3.5.4.jar:3.5.4] at com.study.rabbitmq.RabbitmqApplication.main(RabbitmqApplication.java:10) ~[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.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.5.4.jar:3.5.4]Caused by: org.springframework.amqp.AmqpIllegalStateException: Fatal exception on listener startup at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.waitForConsumersToStart(SimpleMessageListenerContainer.java:643) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doStart(SimpleMessageListenerContainer.java:603) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.start(AbstractMessageListenerContainer.java:1417) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:405) ~[spring-context-6.2.9.jar:6.2.9] ... 19 common frames omittedCaused by: org.springframework.amqp.rabbit.listener.exception.FatalListenerStartupException: Authentication failure at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:631) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.initialize(SimpleMessageListenerContainer.java:1482) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1322) ~[spring-rabbit-3.2.6.jar:3.2.6] at java.base/java.lang.Thread.run(Thread.java:842) ~[na:na]Caused by: org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile. at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:64) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:632) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:726) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.createConnection(ConnectionFactoryUtils.java:257) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils$RabbitResourceFactory.createConnection(ConnectionFactoryUtils.java:345) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.doGetTransactionalResourceHolder(ConnectionFactoryUtils.java:140) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.getTransactionalResourceHolder(ConnectionFactoryUtils.java:102) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.getTransactionalResourceHolder(ConnectionFactoryUtils.java:85) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:625) ~[spring-rabbit-3.2.6.jar:3.2.6] ... 3 common frames omittedCaused by: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile. at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:395) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1251) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1198) ~[amqp-client-5.25.0.jar:5.25.0] at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.connectAddresses(AbstractConnectionFactory.java:678) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.connect(AbstractConnectionFactory.java:647) ~[spring-rabbit-3.2.6.jar:3.2.6] at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:593) ~[spring-rabbit-3.2.6.jar:3.2.6] ... 10 common frames omitted 이 에러가 발생합니다계정도 있는데 인증이 안되는 이유를 모르겠습니다
-
해결됨Spring Boot TDD - 입문부터 실전까지 정확하게
아키텍처 개선
안녕하세요.양질의 강의 덕분에 제한된 시야에서 새로운 인사이트를 얻을 수 있었습니다.섹션 18 - 안정감 있는 아키텍처 개선 챕터를 수강하고 있으며, 현재까지 강의를 들으면서 궁금 했던 내용 두 가지를 여쭈어보고 싶습니다. 질문 1."TDD를 사용해 만들어진 먹구름 아키텍처를 어느 시점에서 개선 해야 할까요?"질문을 하게 된 계기는 전형적으로 많이 사용되는 레이어드 아키텍처를 첫 기능 구현 단계에서 부터 차용하여 개발을 진행 해왔는데, 왜 이 아키텍처를 사용했을까? 란 의문이 없었거든요.강의에서는 흔히 말해 스마트 UI 패턴으로 요구사항을 충분히 충족 해오며 점진적으로 개선 해왔습니다.그러다 모종의 이유로 내부 아키텍처를 개선 하면서 진행이 되었는데, 아키텍처를 개선 해야겠다고 느끼는 요소가 무엇인지 궁금합니다.요구사항이 추가 되었을 때 개발 비용을 최소화 하여 충족 시킬 수 있는가? 라고 생각을 하고 있는데, 현재 까지 불편함을 느낄 정도의 확장성을 강요 받아본 적 없어서 감을 못 잡는 것 같습니다. 질문 2."어떤 영역을 대상으로 테스트를 작성해야할까?"- 테스트 코드 작성 범위 고민위 질문 내용과 답변을 보고 무언가 감이 오는 듯 하나, 아직 정리되지 않는 느낌입니다.API 계층의 동작이 가볍다 또는 무겁다의 판단 기준 API 계층의 동작이 가벼운지 무거운지에 대한 판단은 어떻게 하시는지 궁금합니다.해당 강의에선 API 계층의 동작이 가벼웠기 때문에 API 스펙에 인수테스트를 진행 한 것 같습니다. 서비스 대상으로 테스트를 많이 실행하고, API 는 간단한 성공 경우에 테스트를 한다. 이 케이스에선 아래와 같은 테스트 시나리오가 있다고 가정한다면 테스트를 어떻게 하면 좋을까요?- username 속성이 null 이거나 공백이라면 HasUsernameNullOrEmpty 예외를 반환한다 - username 속성이 올바른 형식을 따르지 않으면 InvalidUsername 예외를 반환한다 - username 속성이 올바른 형식을 따르면 User 객체를 생성한다서비스 테스트에서 위 3가지 케이스에 대해 검증인수 테스트에서 username 을 정확히 입력한 경우 상태코드와 유저에 대한 정보를 반환 하는지 검증 이렇게 테스트를 구성한다고 이해 했는데 제대로 이해한걸까요? 다시 한 번 질문을 빌미로 감사 인사를 드리면서 고견 부탁드리겠습니다.항상 건강하세요!
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
JWT 설정 후 JSON 데이터가 문자열로 옵니다...
📤 before requestjwtUtil.ts:30 ✅ Response ReceivedjwtUtil.ts:34 📦 Content-Type: application/jsonjwtUtil.ts:35 🧾 typeof res.data: stringcontent-type은 json 형식으로 맞춰 주었는데 정작 데이터가 String으로 와서 list에 뿌려주지를 못하고 있습니다.Postman으로 확인했을 때는 정상적으로 JSON 데이터를 반환받는데 리액트에서 확인할려면 res.data가 "{\"dtoList\":[{\"tno\":115,\"title\":\"123zzzㅋㅋㅋㅋ\",\"content\":null,\"complete\":false,\"dueDate\":\"2025-08-07\",\"writer\":\"123\"}위와 같이 스트링 형식으로 변환되어서 들어와서 오류가 생깁니다.어디가 문제일까요..ㅠㅠ
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
loginSlice에서 reject가 반환되지 않습니다.
로그인시에 잘못된 아이디 비밀번호를 넣게 되면 콘솔 로그 창에 reject가 반환되어야 하는데 전부 fulfilled로 반환됩니다. 혹시 코드 필요하시면 첨부하도록 하겠습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
IntelliJ 초기 설치 파일 설치 실패
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]IntelliJ에서 hello-spring 프로젝트 열고 혼자 알아서 설치하더니 갑자기 이렇게 오류 뜨면서 아무것도 안되길래,,, 챗지피티한테 물어봤어용 그랬더니 build.gradle 파일에서 java { toolchain { languageVersion = JavaLanguageVersion.of(17) }}이 부분을 주석 처리 하라길래 주석 처리하고 재시작했더니 오류가 안뜨네욤 그냥 주석처리 해도 괜찮은 부분인가요?
-
미해결스프링 부트 - 핵심 원리와 활용
localhost:8080/hello-servlet 404오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오)[질문 내용]제가 윈도우 환경에서 강의 내용 대로 container/AppInitcontainer/AppInitV1Servletcontainer/MyContainerInitV1servlet/HelloServletservlet/TestServlet를 작성하고 그 외 html이나 jarkarta.servlet.ServletContainerInitializer도 물론 다 작성한 상태에서 localhost:8080/hello-servlet 해당 url로 이동하면 404 오류가 뜹니다 혹시나 제가 잘못 코드르 작성했나 싶어서 강의 자료의 complete안의 server를 압축 풀고 앞서 말씀드린 해당 클래스만 남기고 다 지우고 gradlew explodedWar을 실행하고 톰캣 설정했는데도 똑같이 404오류가 떠서 질문드립니다 바뀐 점은 스프링 3.x버전 그리고 gradle 8.5인데 왜 이렇게 되는 걸까요...?(물론 클래스가 다 작성된 상태에서는 잘 호출됩니다)
-
미해결실전! 스프링 데이터 JPA
bulk연산 후 flush하는 이유를 모르겠어요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 bulk연산을 하면 영속성 컨텍스트의 내용을 flush하는 동시에 영속성 컨텍스트의 내용을 변경하지 않고 DB에서 값을 변경해버려서 1차 캐시와 데이터가 다르게 된다고 이해했습니다.그렇다면 bulk연산 할 때 기존에 1차캐시 값들을 flush한다고 이해를 했습니다. 그런데 저희 코드에서 벌크한 뒤에 flush와 clear를 해주는데 clear만 해주면 되는 것 아닌가요?
-
미해결스프링 부트 - 핵심 원리와 활용
내장톰캣2 서블릿 톰켓 실행이 안됩니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.섹션 4 내장톰켓2 -서블릿 강의를 진행중인데요 강사님하고 똑같이 진행하는데 run이 실행되지 않습니다gpt에 물어봐도 내장 톰캣을 실행할 때, 웹 애플리케이션 리소스 경로(webapps 디렉토리)를 찾지 못해서 발생한 에러하는데 해결이안되는데 어떻게 하나요?이건 내장 톰캣을 실행할 때, 웹 애플리케이션 리소스 경로(webapps 디렉토리)를 찾지 못해서 발생한 에러예요.정확히 말하면 다음과 같은 톰캣 리소스 설정 오류입니다.❗ 요약해서 말하면톰캣이 시작되긴 했지만, 웹 애플리케이션 루트를 지정한 경로가 실제로 없어서 톰캣 내부에서 시작 실패 → 전체 애플리케이션 실패가 된 상황입니다.🔍 대표 에러 메시지Caused by: java.lang.IllegalArgumentException: The main resource set specified [C:\Users\c91sy\IdeaProjects\boot-source-20230228\start\embed\tomcat.8080\webapps\] is not a directory or war file, or is not readable 톰캣이 저 경로(webapps)를 "웹 루트"로 사용하려 했는데:디렉토리가 없거나,접근 권한이 없거나,읽을 수 없는 파일이거나 해서톰캣의 StandardRoot 객체 생성이 실패한 겁니다.🛠 이 에러 이름을 붙이자면:✅"Tomcat 리소스 경로 오류 (Missing or invalid docBase for embedded Tomcat)"또는✅"내장 톰캣 구동 실패 - 웹 리소스 경로 없음 오류"✅ 해결 방법 (정리)경로 확인 및 생성다음 경로 확인:C:\Users\c91sy\IdeaProjects\boot-source-20230228\start\embed\tomcat.8080\webapps 이 경로가 존재하지 않으면 만들어줘야 함.mkdir C:\Users\c91sy\IdeaProjects\boot-source-20230228\start\embed\tomcat.8080\webapps 또는 코드 수정EmbedTomcatServletMain.java 내에 톰캣에 docBase를 지정하는 부분이 있다면, 그 경로를:String webAppPath = "src/main/webapp"; context.setDocBase(new File(webAppPath).getAbsolutePath()); 처럼 실제 존재하는 디렉토리로 바꾸는 것도 방법입니다.✨ 참고로이건 빌드 에러나 문법 오류가 아니라, 실행 시 발생한 런타임 에러입니다.따라서 코드 컴파일은 잘 됐지만, 톰캣 구동 중 내부 리소스 설정 오류로 인해 실패한 것이죠.강사님 코드랑 달리 경로를 추가하라는것 같은데 ,,,에러 메시지는 너무 길어서 천자가 넘어서 어떻게 해야할지 모르겠습니다 ....
-
미해결웹소켓/STOMP 채팅서비스(spring, vue, redis)
앱 서비스일 경우
안녕하세요. 이번에 강의 수강을 시작하였습니다. 급하게 앱 프로젝트에서 채팅 서비스 구현을 맡게 되어서 강의를 수강하게 되었는데요, 지금 이 강의는 웹에서 채팅을 구현하는데, 앱에서 구현하게된다고 해도 백엔드 부분은 동일한건가요? 차이점이 있다면 알려주시면 감사하겠습니다
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
안녕하세요 API 테스트 하는 부분에서 질문 있습니다.
안녕하세요 !선생님 코드를 보면 댓글 서비스에서 댓글을 생성할때 request로 들어온 articleId 나 writerId에 대해서 실제로 데이터 베이스에 있는지 검증하는 부분이 없는데,이렇게 구현을 하면 확실히 테스트 코드를 짤때 실제 데이터 베이스에 저장된 게시글을 넣어주지 않아서 편한것 같습니다.혹시 실제 현업에서 코드를 짤때도 request 로 넘어온 데이터를 따로 검증을 하지 않아도 되는 건가요? @Transactional public CommentResponse create(CommentCreateRequest request) { Comment parent = findParent(request); Comment comment = commentRepository.save( Comment.create( snowflake.nextId(), request.getContent(), parent == null ? null : parent.getCommentId(), request.getArticleId(), request.getWriterId() ) ); return CommentResponse.from(comment); }
-
미해결실전에서 바로 써먹는 Elasticsearch 입문 (검색 최적화편)
정말 사소한 질문이지만 ... 궁금해서 물어봅니다.
안녕하세요... 정말 사소한 질문이지만...controller 를 만들때@GetMapping() 이런식으로 () 빈 괄호를 쓰시던데 혹시 특별한 이유가 있을까요 ???? 뭔가 가독성이 좋다거나...?? 이런 스타일은 첨봐서 신기해서 문의드립니다 !
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Category 엔티티 계층 질문드립니다.
@Entity @Getter @Setter public class Category { @Id @GeneratedValue @Column(name = "catagory_id") private Long id; private String name; @ManyToMany @JoinTable(name = "category_item",joinColumns = @JoinColumn(name = "category_id"),inverseJoinColumns = @JoinColumn(name = "item_id")) private List<Item> items = new ArrayList<>(); @ManyToOne @JoinColumn(name = "parent_id") private Category parent; @OneToMany(mappedBy = "parent") private List<Category> child = new ArrayList<>(); }이 부분에서, 카테고리의 계층? 을 표현하기위해 카테고리 엔티티를 위와 같이 하셨는데요. 여기에서@OneToMany(mappedBy = "parent") private List<Category> child = new ArrayList<>();이 부분이 무슨 의미로 사용되는지 이해가 잘 되지않습니다.. 연관관계의 주인이 아닌쪽이기 떄문에 mappedBy를 적어준거같은데, 해당 코드가 필요한 이유와 사용되는 목적이 무엇인지 질문드립니다. 그리고 private Category parent와 private List<Category> child = new ArrayList<>();가 어떤 연관관계가 있길래 연관관계를 맺는것인지 이해가 잘 되지않아서 질문드립니다. 감사합니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
인증 관련 질문
학습 관련 질문을 최대한 상세히 남겨주세요!고민 과정도 같이 나열해주셔도 좋습니다.먼저 유사한 질문이 있었는지 검색해보세요.인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 좋은 강의 잘 보고있습니다.이와 같이 마이크로 서비스로 프로젝트가 구성되면, 유저 인증과 관련된 부분은 어떻게 처리되는지 궁금합니다. 일단 스스로 생각해본 바로는, 게시글/댓글 쓰기, 좋아요 API는 로그인 한 유저만 가능하다고 하면, 각각의 서비스에서 클라이언트의 요청을 받았을 때 해당 요청을 유저 API를 호출하여 인증을 하는 방식이 있을 것 같은데 이 방법은 각 서비스들이 유저 서비스를 알고 있어야 한다는 단점이 있을 것 같습니다..위와 같은 상황에서의 실무에서 모범 사례나 정형화된 방법이 있을까요?
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
MemberRepository의 JPA 종속성에 관하여
쉽게 이해할 수 있게 설명해주셔서 강의 잘 봤습니다. 👍 강의 후반부(39. 문서와 코드 다듬기)에 MemberRepository에 @Query를 사용하면서 JPA 종속성이 추가되었는데 이 부분에 대해서 언급 없이 2가지 조인 방식과 관련하여 설명하고 넘어갔습니다.강의 중반부(23. 회원 애플리케이션의 포트 정의)의 MemberRepository 설명과 같이 spring-data-commons의 Repository라는 마커 인터페이스를 사용하는 것은 동의하나 application layer에 기술 종속성이 추가된 내용 관련하여 부가 설명 요청 드려도 될까요? 물론 다음 강의에 해당 설명이 있을것으로 생각되지만.. MemberQueryRepository로 분리하고 adapter layer에서 구현하는 방향이 더 좋아보이는데 개선 방향도 같이 부탁드립니다.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
강사님 질문 있습니다.
이미지를 저장할 때 이미지 파일을 저장할 때가 있고 이미지 이름을 저장할 때가 있다고 하셨는데그러면 이미지를 파일 시스템이나 DB상에 저장을 하므로 그 파일에 접근하기 위해서 DB상에 이미지 이름을 저장한다고 생각하면 될까요?제가 생각한게 맞는지 궁금합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
sql 연결 오류
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]이러한 오류가 뜨는데 어떻게 해결해야 할지 잘 모르겠습니다 ㅠㅠ application.yml 코드는 다음과 같습니다 spring: datasource: url: "jdbc:mysql://localhost/library" username: "root" password: "" driver-class-name: com.mysql.cj.jdbc.Driver
-
해결됨죽음의 Spring Batch: 새벽 3시의 처절한 공포는 이제 끝이다.
processorNonTransactional 멱등성 질문
강의 잘 보고 있다. 잘 정리된 자료 덕분에 배치 작업을 이해하고 있는 중이다. 다만 설명 중 이해 안되는 부분이 존재한다. 바로 이 부분 멱등하지 않은 ItemProcessor를 내결함성(FaultTolerance) 기능과 함께 사용해야 하는 상황이라면, 반드시 processorNonTransactional를 설정하도록 하자. 오히려 멱등하지 않은 ItemProecessor의 경우에는 이 설정을 비활성화 해야 하는 거 아닌가? 나의 부족한 영어실력과 GPT를 통해 스프링 배치는 ItemProcessor가 트랜잭션이나 멱등성을 가져야 한다고 되어 있는 것으로 이해하였다. It must be either transactional or idempotent.출처: https://docs.spring.io/spring-batch/reference/transaction-appendix.html 떠라서 멱등하지 않은 ItemProcessor는 processorNonTransactional()을 지양해야 하는 것으로 나는 이해된다... 답변 부탁한다. (존대로 질문하면 rm -rf 하신다길래 이렇게 남겨요 ㅎㅎ..)
-
해결됨Claude + IntelliJ로 TodoList 개발하기 - MCP 완전 정복
claude code 의 커넥터 관리 설정 미표시!
안녕하세요 강의를 구매 후 클로드코드와 intelliJ ultimate 버전을 연동하려고 하는데요. Mcp server 를 인텔리제이 플러그인으로 설치하고 클로드 코드에의 개발자 설정에서 jetbrains running이라고 뜨는걸 확인했는데요.강의에서 설명하신것처럼 채팅창의 하단의 커넥터에서는 저는 이렇게만 뜨고 제가 설정한 연동내용들이 뜨지 않습니다. 그래서인지 질문을 해도 연동이 안됐다고 뜨고요! 도와주십쇼 !혹시 확장프로그램의 문제인건가 해서 그 화면도 캡쳐했습니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
자바 버전에 관하여
자바 21버전이 아닌 17버전을 사용해도 괜찮나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
db 연결 url 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]h2데이터베이스를 사용해보고 난 후 직접 mysql을 연결하여 해보고 싶어져 연동을 시도하였습니다.<오류화면><application.properties>그런데 이때 사진과 같은 오류가 발생합니다. application.properties에 mysql에 대한 정보를 정확히 적었으나 해당 오류가 발생합니다. application.properties의 위치는 src/main/resources에 위치하고 있습니다.사진과 같이 build.gradle에 의존성도 추가해 두었습니다.이 때, 영상에서 말씀해주신대로 빌드를 intelliJ로 설정해두면 해당 오류가 발생하나 gradle로 변경하면 정상적으로 db와 연결되어 작동합니다,,intelliJ가 속도가 빠르다고 하셔서 사용하고 있었으나 intelliJ로 빌드하면 오류가 발생하는지 모르겠습니다...ㅜ코드가 정확히 작성되어도 해당 오류가 발생할 수 있는 것일까요? 이대로 gradle로 빌드하면서 나아가도 나중에 문제가 없을지 궁금합니다.