문제2 : PayService
미해결
김영한의 실전 자바 - 기본편
[질문 내용] 정답을 보기 전에 먼저 제가 스스로 리팩토링 하다가 PayService에 있는 processPay 메소드도 Pay 인터페이스에 넣어서 각각 KakaoPay, NaverPay에서 구현을 했는데 이렇게 해도 OCP 원칙을 따르면서 리팩토링 한건가요?
- java
- 객체지향
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
김영한의 실전 자바 - 기본편
[질문 내용] 정답을 보기 전에 먼저 제가 스스로 리팩토링 하다가 PayService에 있는 processPay 메소드도 Pay 인터페이스에 넣어서 각각 KakaoPay, NaverPay에서 구현을 했는데 이렇게 해도 OCP 원칙을 따르면서 리팩토링 한건가요?
해결됨
AWS로 쉽고 빠르지만 아주 견고한 서버 환경을 구축하는 방법
안녕하세요 강사님! 강의 잘 듣고 있습니다! 다름이 아니라 현재 팀 프로젝트의 MVP에서 사용할 API 서버(스프링 부트)를 배포할 ECS 환경을 구축 중입니다! MVP 단계이다 보니 고가용성 보다는 비용을 절약하기 위해 단일 AZ로 인프라를 구축하려 합니다! 그래서 VPC Endpoint도 단일 AZ의 private subnet1 하나에만 연결해 놓은 상태인데요. 이렇게 구성하면 ECS의 클러스터를 만들 때, EC2의 Subnet을 선택하는 단계에서 앞서 endpoint들을 연결한 Subnet 1개만 선택해 주면 될까요? + ECS의 서비스를 만들 때도 네트워킹 설정 부분에서 해당 서브넷 1개만 연결해주면 될까요?
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
9분에서 Reference Doc 들어가서 hibernate 검색하면 스프링부트와의 알맞은 버전이 나온다고 하셨는데, 저는 안 나오네요. 지금은 방법이 바뀌었나요? 적합한 버전을 어떻게 찾나요?
미해결
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. package PR; import java.util.*; public class 보이는학생 { public int solution(int n, int[] arr){ int answer = 1; for(int i=0; i<arr.length-1; i++){ if( arr[i] < arr[i+1] ){ answer++; } } return answer; } public static void main(String[] args) { Algorithm.보이는학생 t = new Algorithm.보이는학생(); Scanner kb = new Scanner( System.in ); int n = kb.nextInt(); int[] arr = new int[n]; for(int i=0; i<n; i++){ arr[i] = kb.nextInt(); } System.out.println(t.solution(n, arr)); } } 이코드는 어디 부분에서 로직이 오류인가요?
해결됨
서버개발자 과제전형 완벽가이드 - 1편
강의를 커밋으로 끊으면서 만드신거 너무 좋습니다. 강의도 길어지지도 않고 깃 사용법도 좀 더 배울 수 있구요. 단지 커밋 메시지랑 브랜치명이 조금씩 안 맞는 부분은 있습니다. 😄
미해결
김영한의 실전 자바 - 기본편
다른질문입니다만,.... 김영한 선생님께 자바스크립트 배울수있다면 너무 좋을것같아서요..ㅠㅠ
해결됨
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요 api 에서 request 를 받는 경우 getter 만 열어두고 사용하는 경우가 있는데요, 이런 경우엔 request dto에 테스트 코드를 위한 생성자나 builder를 추가해주는게 맞을까요? 테스트 코드를 짜기 위해 실제 코드를 수정하는 부분이 찝찝해 질문드립니다
미해결
김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 강의를 쭉 들으면서 ServerV3, V4를 키고 ClientV3,4 를 강제 종료시키면 영한님은 EOF 오류가 뜨는데 저는 Socket 오류가 발생합니다. 제가 잘못한건지 아니면 상황에 따라 다른건지 궁금합니다.
미해결
김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 영한쌤이랑 다르게 int sum= a + b + c; 을 생각못하고 리턴값으로 결과는 똑같이 얻었는데 영한쌤과 과정이 다르니 틀렸다고 봐야겠죠?.. 가능하다면 쌤이랑 다르게 int sum = a + b + c;를 작성하지 않은 것에 대한 단점도 알고 싶습니다ㅠㅠ 어렵네요..
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 설명해주시는대로 따라서 받았는데 이렇게 받으니까 build.gradle이 없어서 그냥 프로젝트 오픈했거든요?? 이렇게 해도 되는건가요 ㅠㅠ?? 프로젝트 오픈해도 gradle같은건 없는데 ㅠㅠ
미해결
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
private final UserServiceV2 userService; jpa로 설정한 이후 putMapping에서 id값이 0으로만 들어옵니다. 코드는 json원시값보고싶어서 httpRequest 로 테스트한 상황입니다. (로그는 Raw JSON Body: {"id":0,"name":"333"}) db 데이터, 등록, 삭제 모두다 잘동작하고 id만 client에서 받아오질 못하는 것 같습니다. postman으로 json값 정상적으로 요청하면 작동도 잘되구요. UserServiceV1 인 jdbctemplate를 이용한 방식도 파라미터 정상적으로 넘어와서 잘동작합니다. 이유를 모르겠습니다.
미해결
2. 웹개발 코스 [JAVA 개발언어]
자료 다운받아 압축을 풀면 ppt가 아닌 이상한 파일들이 있습니다.
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
안녕하세요. 강의 잘 보고 있습니다. Gateway의 uri를 lb://MY_FIRST_SERVICE 로 수정했을 때 500 Internal Server Error가 났습니다. 처음에 Spring boot 버전에서 문제인가 싶어서 Spring boot 버전을 3.3.5 -> 3.2.0 으로 수정도 해보고 load-balancer도 추가해보고 했습니다. 결과적으로 lb://MY_FIRST_SERVICE 의 _(언더바)를 -하이픈으로 수정하니 정상 작동하는 것을 알았습니다. 그런데 여기서 이유를 GPT에게 물어본 결과 라는 답변을 받았습니다. 이러한 결과가 사실이 맞는지 궁금합니다. 구글링 해봤을 때 관련한 자료는 없어서 여쭤봅니다
미해결
실전! Querydsl
JPAQueryFactory queryFactory = new JPAQueryFactory(em); 부분에서 Cannot resolve constructor 'JPAQueryFactory(EntityManager)' 오류가 생기는데 원인을 모르겠어요 아래는 현재 설정입니다. 스프링 생성 build.gradle 소스 plugins { id 'java' id 'org.springframework.boot' version '3.3.5' id 'io.spring.dependency-management' version '1.1.6' //querydsl 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'study' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' //querydsl 추가 implementation 'com.querydsl:querydsl-jpa' annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jpa' implementation 'mysql:mysql-connector-java:8.0.33' // MySQL 드라이버 최신 버전 사용 implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' // 쿼리 파라미터 로그 표시 (성능에 영향을 줄 수 있음) // runtimeOnly 'com.mysql:mysql-connector-j' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() } //querydsl 추가 시작 def querydslDir = "$buildDir/generated/querydsl" querydsl { jpa = true querydslSourcesDir = querydslDir } sourceSets { main.java.srcDir querydslDir } configurations { querydsl.extendsFrom compileClasspath } compileQuerydsl { options.annotationProcessorPath = configurations.querydsl } //querydsl 추가 끝 테스트코드 package study.querydsl; import com.querydsl.jpa.impl.JPAQueryFactory; import jakarta.persistence.EntityManager; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; import study.querydsl.entity.Hello; @SpringBootTest @Transactional class QuerydslApplicationTests { @Autowired EntityManager em; @Test void contextLoads() { Hello hello = new Hello(); em.persist(hello); JPAQueryFactory queryFactory = new JPAQueryFactory(em); // QueryDSL 쿼리 테스트 } }
해결됨
기초 탄탄! 독하게 시작하는 Java - Part 1 : 절차적 프로그래밍
토스페이먼츠의 어떤 프로젝트에서 일부 변수명은 한글로 작성하는 컨벤션이 존재하는거로 알고있습니다 물론 모든 변수를 한글로 하는건 지양하고 영어로 풀어내기 어려운 경우 한글을 사용하는걸로 컨벤션을 작성해놓은거같은데 해당 프로젝트가 자바스크립트의 컨벤션이어서 자바랑은 다른건지 궁금합니다~
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
안녕하세요 선생님. 질문이 있어 남깁니다. spring cloud gateway mvc모델에서 route별 httpclient의 readtimeout, connectiontimeout을 설정하는 방법이 있나요? reactive한 모델에서는 metadata를 이용하여 설정하는 것 같은데, documents를 아무리 뒤져도 mvc모델에서 전역적으로 타임아웃 설정하는 법만 있고, route별 설정하는 법이 없네요.. 어떻게 설정해야할까요?
미해결
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의를 보면서 cmd 실행후 helloC:\Users\Desktop\Study\hello-spring\hello-spring> 에서 gradlew build를 실행하면 해당 에러가 계속 뜨네요. 처음엔 다른문제가 뜨길레 윈도우 계정이름도 변경하고, 버전도 확인하고 cmd관리자 권한으로도 실행해봤는데도 계속 이래요. 공부가 하고 싶습니다 좀 도와주세요 너무 답답합니다 ㅠㅠ
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
강의 자료를 받아 보고 싶습니다. 필요한 것을 찾을 때 강의를 재생하면서 내용 중에 찾기가 힘들어요
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요, 테스트가 정상적으로 실행되었으며 @Rollback 어노테이션을 붙였음에도 불구하고 왜 데이터가 insert 되지 않는지 궁금합니다. 관련 사진은 다음과 같습니다. 코드는 다음과 같습니다. package jpabook.jpashop; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import static org.junit.jupiter.api.Assertions.*; @RunWith(SpringRunner.class) @SpringBootTest class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(false) public void testMember() throws Exception { // given Member member = new Member(); member.setUsername("memberA"); // when Long saveId = memberRepository.save(member); Member findMember = memberRepository.find(saveId); // then Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); } } spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: update properties: hibernate: #show_sql: true format_sql: true logging.level: org.hibernate.SQL: debug #org.hibernate.type: trace 감사합니다.
미해결
김영한의 실전 자바 - 기본편
인터페이스가 추상 클래스보다 더 제약이 있다고 강의 내용에서 배웠습니다. 그러나 구성에는 인터페이스가 더 많은 것을 포함하고 있는 것 같아 궁금합니다! 강의 내용에서는 interface에 일반 메서드가 올 수 없다고 배웠던 것 같습니다.