묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
안녕하세요 토비님!
안녕하세요 토비님! 강의를 보다가 궁금한 점이 생겨서 질문 드립니다. 테스트 코드 작성시 EmailSender같은 경우나 , 외부 요인(?) 같은 경우에 저는 테스트 코드가 외부요인에 의해 영향받기를 원하지 않아 @MockitoBean을 사용하는데요 그런데 강의에서는 왜 @MocktioBean을 사용하시지 않고 @TestConfiguration을 사용하셨는지 궁금합니다!감사합니다!
-
미해결Claude + IntelliJ로 TodoList 개발하기 - MCP 완전 정복
질문
비활성화라고 뜹니다. 당연히 인텔리제이에서 MCP server, AI assistant 다 설치했어요. 뭐가 문제일까요?
-
해결됨Claude + IntelliJ로 TodoList 개발하기 - MCP 완전 정복
도와주세요
이렇게 연결이 되어 있는데, MCP tools 이 안뜨고 인텔리제이에 구조를 알려줘 하면 다르게 떠요. 전 이렇게 뜹니다. 어떤 걸 제가 잘못한걸까요 ?
-
해결됨Claude + IntelliJ로 TodoList 개발하기 - MCP 완전 정복
[긴급질문] 도와주세요 세팅
말씀해주신대로 json 파일에서 복붙하고 Claude 재 실행하면 이렇게 뜨는데 왜 그러는걸까요 ?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Order, OrderItem 주문생성/취소 비즈니스로직 생성 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)아니요.[질문 내용]여기에 질문 내용을 남겨주세요.-> 주문,주문상품 엔티티 개발 강의에서 Order, OrderItem 엔티티부분에서 주문, 주문취소관련 비즈니스로직을 엔티티단에 만들었는데, 제가 기존 알고있던 개념은 서비스단에 비즈니스로직을 만드는걸로 알고있었는데, 엔티티단에 비즈니스로직을 만들어도 실무에서 허용하는 방식인건지 상황에 따라서는 기존 방식데로 서비스단에 비즈니스로직을 만드는게 맞는건지 궁금합니다.
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
자신의 정보만 업데이트 하는 로직 궁금한 점
38강 10분 13초에서 자신의 정보를 업데이트 하는 로직 만드는 부분에서 궁금한 점이 생겼습니다.로그인된 사용자만 자기 정보를 업데이트 할 수 있는 기능을 웹 API 쪽의 어댑터에서 만든다고 하셨는데 왜 그런걸까요? 애플리케이션에서 검증을 하면 안되는걸까요?
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
인기글 컨슈머 질문
안녕하세요 강의 잘 듣고 있습니다. 인기글 컨슈머 관련해서 궁금한 점이 있습니다. 컨슈머와 api가 동일한 hotarticle 모듈에 포함되어 있는데 api는 그대로 두고 컨슈머만 스케일아웃하고 싶을 수 있을 것 같은데, 이 경우 별도의 모듈로 분리하면 될까요? 아니면 더 좋은 방법이 있을까요? 감사합니다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
디스코드 채널 입장이 안돼요!!
어떻게 들어가야되죠?!
-
해결됨Claude + IntelliJ로 TodoList 개발하기 - MCP 완전 정복
MCP 툴이 안보이네요...
안녕하세요. 이미 나와 있는 글들을 참고는 했습니다. 따라서 해 보았지만 딱히 변경이 안되네요.제 경우 지금 mcp 부분이 안보이네요.이부분이 제일 시작 부분 같은데요.일단 강의 내용대로 설정은 다 한 상태인데요이상히 변경이 안되네요.강의를 완강 할수 있도록 부디 도와 주십시요. 감사합니다.
-
해결됨[JSP부터 스프링부트까지]포기없는 SpringBoot로 가는길
이강좌가 마지막 강좌인가요?
스프링부트 강좌를 신청했습니다. 전에 듣기론 이강좌이후에 포토폴리오 강좌가 출시된다고 하셨던것같은데...확실하지않아서 다시 질문올립니다. 이강좌가 마지막인가요? 아니면 이후 한번더 새로운강의가 출시되는건가요??? 만약 포토폴리오 강좌가 출시예정이라면 현재 이강좌와 어떤 차별화된 점이있는지도 궁금하고 출시예정일도 궁금합니다. 강의분량은 대략 어느정도될지도 궁금해요
-
해결됨웹소켓/STOMP 채팅서비스(spring, vue, redis)
StompHandler 질문 있습니다.
현재 인터셉터에서는 토큰을 검증만 하고 있는데, "토큰 검증 후에 인증 객체를 SecurityContextHolder에 저장해야 하지 않나?" 라는 생각이 들었습니다. 이 부분은 강의에서 굳이 필요하지 않아서 만들지 않으신 걸까요?아니면 "인증 객체를 SecurityContextHolder에 저장하는 부분은 이 인터셉터의 의도와는 맞지 않다"라고 볼 수 있을까요?추가로 인증 객체를 SecurityContextHolder에 저장했을 때와 accessor.setUser(principal)를 수행했을 때의 장점과 이를 활용해 추가로 구현해볼 수 있는 기능들에는 어떤 것들이 있을지 궁금합니다.
-
해결됨실전 jOOQ! Type Safe SQL with Java
질문) jOOQ 프로젝트에서 CI/CD 자동화 문의
안녕하세요, 강사님.강의 잘 들었습니다. 감사합니다. jOOQ를 사용한 프로젝트에서 CI/CD 과정을 어떻게 자동화하는지 궁금하여 문의드립니다.CI/CD 서버와 데이터베이스를 연결하는 부분에서 보안 리스크가 큰 것 같은데, 실제 업무에서는 이 문제를 어떻게 해결하는지 알려주시면 감사하겠습니다. 아니면 자동 생성한 코드를 Git Repository에 함께 업로드해야 하는지 여쭙고 싶습니다. 이 경우 git commit이 깔끔해지지 않을 것 같아 걱정이 됩니다.
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
좋아요 수 구현 PessimisticLock1 질문
안녕하세요 강사님 강의 잘 듣고 있습니다.아래 내용이 궁금하여 질문 드립니다. 질문:PessimisticLock1에서 주석 달아놓으신"트래픽이 몰리는 상황에서 유실될 수 있으니게시글 생성 시점에 미리 0으로 초기화해둘 수 있다"는 부분에서 어떤 이유로 데이터가 유실이 될 수 있는지 궁금한데 예시나 상황에 대해서 추가 설명해주실 수 있을까요?! 감사합니다.
-
미해결Spring Boot + React.js 로그인 (+소셜) 서비스 이해하기
랜덤 키 생성
키가 부팅 시 생성되는 랜덤 키라 하셨는데,로그인 쪽 서버 인스턴스가 단일이 아니라 다중이라면 어떻게 되나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트 코드 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 김영한님 강의 중 스프링 입문 - 스프링 통합 테스트 부분에서 테스트 코드 돌리는 중 계속 tests were not found 란 에러가 발생하더라구요. 라이브러리, gradle 툴에서 gradle 다 설정했는데도 계속 저 에러 떠요... 2일 연속으로 해결 못해서 힘드네요. 도와주세요. 아래는 제 해당 내용의 깃입니다. https://github.com/bukwon/testcode
-
미해결카카오,구글 SNS 로그인(springboot3, vue3)
소셜 로그인 설계
안녕하세요 강사님 혹시 oauth2 를 이용한 로그인을 한 다음에 사용자 프로필을 받는 것이 서비스 플로우인데 이럴경우 웹이 아닌 앱을 사용할경우 (로직은 다른 거 알고 있습니다.) (PCKE 방식 사용 예정입니다.)oauth2 를 해서 사용자 db에 저장이 되고 이렇게 처음에 저장이 되고 그 다음에 프로필을 받으면 저 값이 수정이 되게 만들어 주는 게 맞을지 질문드립니다. 사용자엔티티에 Provider 나 socialId 로 값을 받습니다. (구글과 애플을 사용할 예정입니다.) @Entity @Table(name = "users") @Getter @NoArgsConstructor @Setter public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "user_id") private Long id; @Column(name = "name", nullable = false) private String name; @Enumerated(EnumType.STRING) @Column(name = "SEX", nullable = false) private Sex sex; @Column(name = "age", nullable = false) private Integer age; @Column(name = "nationality", nullable = false) private String nationality; @Column(name = "introduction", length = 40, nullable = false) private String introduction; @Column(name = "visit_purpose", length = 40, nullable = false) private String visitPurpose; @Column(name = "languages", nullable = false) private String languages; @Column(name = "hobby", nullable = false) private String hobby; @Column(name = "created_at", nullable = false) private Instant createdAt; @Column(name = "updated_at", nullable = false) private Instant updatedAt; @Column(name = "Provider", nullable = false) private String provider; @Column(name = "social_id", nullable = false) private String socialId; @Column(name = "email", nullable = false) private String email; @Builder public User(String name, Sex sex, Integer age, String nationality, String introduction, String visitPurpose, String languages, String hobby, String provider, String socialId, String email) { this.name = name; this.sex = sex; this.age = age; this.nationality = nationality; this.introduction = introduction; this.visitPurpose = visitPurpose; this.languages = languages; this.hobby = hobby; this.provider = provider; this.socialId = socialId; this.email = email; this.createdAt = Instant.now(); this.updatedAt = Instant.now(); } public void updateProfile(UserUpdateDTO dto) { if (dto.getName() != null && !dto.getName().trim().isEmpty()) { this.name = dto.getName().trim(); } if (dto.getSex() != null) { this.sex = dto.getSex(); } if (dto.getAge() != null) { this.age = dto.getAge(); } if (dto.getNationality() != null && !dto.getNationality().trim().isEmpty()) { this.nationality = dto.getNationality().trim(); } if (dto.getIntroduction() != null && !dto.getIntroduction().trim().isEmpty()) { this.introduction = dto.getIntroduction().trim(); } if (dto.getVisitPurpose() != null && !dto.getVisitPurpose().trim().isEmpty()) { this.visitPurpose = dto.getVisitPurpose().trim(); } if (dto.getLanguages() != null && !dto.getLanguages().trim().isEmpty()) { this.languages = dto.getLanguages().trim(); } if (dto.getHobby() != null && !dto.getHobby().trim().isEmpty()) { this.hobby = dto.getHobby().trim(); } this.updatedAt = Instant.now(); // 수정 시각 갱신 } }
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
DTO 관련 질문
저희 회사에서는 코드를 model이나 dto 코드를 만들때 보통하나로 전부 request보내고 받고 다하던데이 강의에서는 용도마다 UserCreateRequest, UserUpdateRequest, UserResponse 이렇게 따로 만들던데 혹시 그 이유가 있을까요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
쿠키에 accessToken, refreshToken을 담고, 조회 시에 undefined
쿠키안에 accessToken과 refreshToken을 JSON.stringfy()로 문자열로 담아주는데 getCookie()를 할시에 object타입으로 전달되어서 accessToken과 refreshToken이 undefined로 잡혀 갱신이안됩니다.
-
미해결카카오,구글 SNS 로그인(springboot3, vue3)
카카오 인가코드 요청
카카오 인가 코드 요청 url이 변경 된 것 같습니다!
-
해결됨Spring Boot TDD - 입문부터 실전까지 정확하게
69.테스트격리 / 과도한 테스트 격리의 문제 중 '부적절한 설계 왜곡'
강의: 섹션 14 - 69. 테스트 격리 과도한 테스트 격리의 문제점 중 '부적절한 설계 왜곡'의 예시로1) new 연산자로 직접 만들어도 좋은 클래스 인스턴스를 굳이 주입, 2) 클래스 의존을 인터페이스 의존으로 변경, 3) private을 public으로 변경을 들어주셨는데 다음과 같은 상황을 말씀하시는게 맞는지 궁금합니다. 1) new 연산자로 직접 만들어도 좋은 클래스 인스턴스를 굳이 주입 & 2) 클래스 의존을 인터페이스 의존으로 변경: 테스트 대상을 완벽히 격리하기 위해 '단순하거나 변경 가능성 없이 구현체가 하나뿐인 의존 클래스'도 직접 생성 대신 주입받도록 변경해 mock으로 대체함.3) private을 public으로 변경: 다른 기능들에서 사용되는 private 메서드를 단독으로 테스트하기 위해 public으로 노출시킴.강의 잘 듣고 있습니다. 감사합니다.