묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 오류 질문
회원 기능 테스트에서 계속 막혀서 전부 다 복붙하고 해봐도 오류가 납니다 이거 왜이런걸까요? 우선 프로젝트 전체 구글 드라이브에 공유해뒀습니다.https://drive.google.com/file/d/1jEOFgnIZ2fRBWTDKmYaA3lnrid-0i10E/view?usp=drive_link
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
이런 코드 유형?은 어디편에서 공부해야하나요?
public class GuestBookMapper { public static GuestBookDTO toDTO(GuestBook entity) { return GuestBookDTO.builder() .guestBookId(entity.getGuestBookId()) .content(entity.getContent()) .nickName(entity.getNickName()) .reportedCount(entity.getReportedCount()) .createDate(entity.getCreateDate()) .pw(entity.getPw()) .build(); } public static GuestBook toEntity(GuestBookRequest dto) { return GuestBook.builder() .content(dto.getContent()) .nickName(dto.getNickName()) .createDate(LocalDateTime.now()) .reportedCount(0) .pw(dto.getPw()) .build(); } } 프로젝트 진행중 다른분 코드를 공부하다가 Mapper이란 클래스는 왜있고 builder는 뭔지 이런 클래스가 왜있는지 공부하고싶은데 이런 코드유형을 알려주는 인강편이있나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트케이스 findbyname
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)//get()추가하면 optional 깔 수 있음, 에러뜸[질문 내용]test케이스에서 findByName 테스트할때 Optional에서 까기 위해 get메소드를 한번 더 써주신다고 하셨는데get()대신 optional로 테스트하면 에러가 발생됩니다.값에 optional[]이 붙어서 그런거같은데 이 경우는 get() 추가 사용 대신 optional로는 테스트 못하는건가요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
시작도 하기 전에 계속 오류가 납니다.
자바 11버전을 깔았는데 계속 자바 1.8버전으로 뜨네요... 그래서 다시 11버전으로 바꿔서 실행을 해보았더니이런 에러가 뜹니다.. 해결방법이 있을까요ㅠ
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
java17 gradle에서 Jwts.builder().signWith()에서 ClassNotFoundError: javax/xml/bind/DatatypeConverter가 발생한다면
javax를 사용하지 못하여 발생하는 문제입니다.implementation 'javax.xml.bind:jaxb-api:2.3.0 <- 이 디펜던시를 추가해주시면 에러는 사라집니다.수업 내용대로 진행했어야 하는데 그렇게 안하니까 여러 에러들이 막 발생하네요ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 오류
윈도우로 빌드를 하려는데 이렇게 뜨네요 ㅜㅜ
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
service끼리 의존성 주입
안녕하세요 제목 그대로 궁금한 점 있는데, 예를 들어 a라는 service가 b와 c라는 service를 주입 받는 상태이고 여기서 c는 또 d라는 service를 주입 받는 구조가 있다면 이건 정상적인 부분일까요? service가 service를 주입 받는 것이 괜찮은지, 괜찮다면 그것의 depth가 늘어나서 a <- b, c <- d 이런식이 돼도 괜찮은지 궁금합니다!
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
공격자의 세션을 피해자가 사용하는 부분이 이해가 안 됩니다
같은 질문아 밑에 있긴한데 답변이 이해가 안가서 다시 질문을 올립니다.공격자가 서버로부터 세션 쿠키를 얻었다는 건 공격자가 로그인을 했다는 거 아닌가요?이 세션 쿠키를 다른 피해자에게 강제로 사용하도록 하는 걸 세션 고정 공격이라고 하는 것 맞나요?이게 맞다면 피해자의 활동을 서버에서는 공격자의 활동으로 인식하게 되는거고, 피해자는이미 공격자의 세션쿠키를 갖고 있으니까 별다른 인증이 필요 없은 것 아닌가요?피해다가 또 로그인을 한다는 부분이 잘 이해가 안 됩니다.아니면, 피해자가 공격자의 세션 쿠키를 들고있음에도 로그인 페이지로 접속하여 로그인을 하게됐을 때, 서버에서 새로운 세션을 생성해서 세션쿠키를 내려주지 않는다면, 공격자도 같은 세션쿠키를 사용해서 사용자 정보 페이지등에 접근이 가능하게 되는 위험을 말한다고 생각하면 될까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
REST API로 개발하면
프론트딴에서 어떻게 데이터를 쓰는건가요? 원래 실습할떄 @Controller 어노테이션이면 모델에 담아서 뷰에 전송하고 타임리프로 사용하는건데 REST API는 어떻게 화면에 데이터를 보여지고 진행되는지 궁금합니다.. 그리고 이렇게 개발하면 백앤드에서 기능 구현하고 그 다음에 프론트개발자들이 작업하는건가요? 아니면 프론트가 먼저 개발하고 그 다음에 백앤드가 구현하는건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 오류 질문
ApplicationContext failure threshold (1) exceeded: skipping repeated attempt to load context for [WebMergedContextConfiguration@33a71d23 testClass = jpabook.jpashop.service.MemberServiceTest, locations = [], classes = [jpabook.jpashop.JpashopApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@55dfcc6, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@25bfcafd, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@eda25e5, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@2d96543c, org.springframework.boot.test.context.SpringBootTestAnnotation@8b5a38a4], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]java.lang.IllegalStateException: ApplicationContext failure threshold (1) exceeded: skipping repeated attempt to load context for [WebMergedContextConfiguration@33a71d23 testClass = jpabook.jpashop.service.MemberServiceTest, locations = [], classes = [jpabook.jpashop.JpashopApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@55dfcc6, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@25bfcafd, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@eda25e5, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@2d96543c, org.springframework.boot.test.context.SpringBootTestAnnotation@8b5a38a4], resourceBasePath = "src/main/webapp", contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:145) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:191) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:130) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)계속 오류나서 Memberservice MemberRepository 랑 test 다 코드 복붙했는데도 오류요
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
파라미터 정의에 대한 질문
안녕하세요 우선 저는파라미터는 메소드의 매개변수로 넘겨지는 값을 의미한다고 알고 있습니다그리고 api 개발에서 보통 파라미터를 dto로 넘긴다고 알고 있습니다. 근데 실무에서 파라미터라고 하면 대게 요청, 응답값만 이용되고 개발자들끼리 파라미터 뭐로 설정했냐 등 얘기가 나올때의 파라미터로는 필수값을 의미한다 라고 얘기를 들었습니다. 그러니까 선택적으로 넘기는 경우도 있겠고, 메소드 내부에서 다른 메소드로 넘기는 파라미터도 있겠지만다른 개발자랑 대화하는 과정에서 파라미터 뭐로 설정했냐 등 얘기가 나오게 될 경우 요청 중 필수값(not null)에 대한 얘기인거다.선택값도 있겠지만 보통 파라미터로 선택값이 넘어가는 경우는 많지 않다메소드 내에서 넘겨지는 값은 어차피 나 혼자 확인하는거라 다른 개발자한테 말할 필요가 없다 라고 말 해주셨는데 진짜 인가요?그러니까 이론 상의 파라미터 정의와실무에서의 파라미터 정의가 다른 것 같다고 하더라고요.. 저는 강의를 보고 controller 에서 dto를 파라미터로 넘기고, 그 dto에는 설계에 따라 다르겠지만 필수, 선택값들이 혼용된 채 사용 될 수 있다고 이해했는데실무에서는 파라미터의 정의가 다르게 사용되고 있는건지 궁금합니다..
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
ctrl + n constructor생성
강의 15분쯤에 ctrl + n 누르셔서 constructor를 선택하시는데 저는 이런 화면이 떠요..어떻게 해야 할까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findAll
테스트 끝나고나서 데이터를 클리어해주는 방법을 설명하시기 전에 findAll()함수에서 오류가 나타나야 하는데 전 왜.. 다 초록불이 뜰까요package com.example.hello_spring.repository; import com.example.hello_spring.domain.Member; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import java.util.List; import java.util.Optional; import static org.assertj.core.api.Assertions.*; public class MemoryMemberRepositoryTest { MemberRepository repository = new MemoryMemberRepository(); @Test //실행할 수 있게함 public void save() { Member member = new Member(); member.setName("spring"); repository.save(member); Member result = repository.findById(member.getId()).get(); //Assertions.assertEquals(result, member); // result와 member가 같은지 확인 assertThat(member).isEqualTo(result); } @Test public void findByName(){ Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); Member result = repository.findByName("spring1").get(); assertThat(result).isEqualTo(member1); } @Test public void findAll(){ Member member1 = new Member(); member1.setName("spring"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); List<Member> result = repository.findAll(); assertThat(result.size()).isEqualTo(2); } }
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
User Service - 프로젝트 생성 강의 듣고 있는데요.
User Service - 프로젝트 생성 강의 듣고 있는데요.저는 yml에서 아래처럼 주었는데요.server: prot: 8761http://localhost:8761/eureka/ 뜨다가 포트는 8080으로 시작한다는 메세지가 조회되는데요. 컴퓨터 내부에서 포트를 8761쓰다가 자동으로 8080으로 바꿨다는 얘기인가요?2024-07-17T18:27:14.441+09:00 INFO 11100 --- [discover] [ main] c.n.eureka.cluster.PeerEurekaNodes : Adding new peer nodes [http://localhost:8761/eureka/]2024-07-17T18:27:06.225+09:00 INFO 11100 --- [discover] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path ''2024-07-17T18:52:42.764+09:00 INFO 10484 --- [discover] [ main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 80802024-07-17T18:52:43.848+09:00 INFO 10484 --- [discover] [ main] c.e.d.DiscoveryApplication : Started DiscoveryApplication in 13.147 seconds (process running for 16.512)
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
update 메서드의 매개변수 작성 스타일?
// a. public void update( String password, String nickname) { this.password = password; this.nickname = nickname; } // b. public void update(UpdateContent content) { this.password = content.getPassword; this.nickname = content.getNickname; }안녕하세요 update 방식에 대해 궁금한점이 생겼는데, Member 엔터티 클래스 내부에 위와 같이 update 메서드를 둔다고 했을 때, 매개변수의 개수가 많다고 가정하면, 별도의 클래스를 만들어서 b.처럼 전송해주는 방식을 사용해도 괜찮을까요? 엔터티 클래스와 별도의 클래스가 결합?되는 느낌이라 찝찝한데, a.와 b.중 좀 더 정석적인 방식이 있는지 궁금합니다!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
서버가 이중화 되었을때 MemberService.java join()과 관련된 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]MemberService.java 내에서 join() 함수입니다.@Transactional public Long join(Member member) { validateDuplicateMember(member); //중복회원 검증 memberRepository.save(member); return member.getId(); }이때 member를 저장하면 persist하게 되고, commit까지는 일어나지 않는다고 이해하고 있습니다. db에 저장이 되어 있지 않은 상태라면 이중화 시 각 was에 jpa persist된 값이 있을 것 같은데, validateDuplicateMember을 호출할 때 name 컬럼에 unique 제약조건을 줘서 저장이 안되게 한다고 하더라도. validateDuplicateMember는 통과가 되고, 아래 save에서 오류가 나게될 것 같은데요. 제가 생각하는 로직이 맞는지 궁금합니다. 맞다면 여기에 대한 코드 보완이 따로 필요할 것으로 보여서요. (강의 보완이 아니라, 제가 나중에 코딩할 때 보완을 하려고 합니다:) )
-
미해결스프링 부트 - 핵심 원리와 활용
영한님 좀 더 실무적인 메트릭 수집하는 방법과 운영환경이 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]1. 멀티스레드에 안전하게 처리하기 위해 Atomic.. 을 사용하셨는데, 실무에서는 데이터베이스같은곳에서 정보를 받아와야 하는데, 프로메테우스에서 데이터베이스의 테이블을 접근중일때 READ가 발생할텐데, 현재 유저한테 서비스되는 클라이언트단에서 READ, WRITE가 발생할때 lock이 발생하는 경우는 없나요?2. 1번 질문과 이어서.. 아래와 같은 곳에서 정보를 수집하는데 동시성/데드락/경합 문제가 발생하지는 않나요?아래에서 정보를 가져올때는 어떻게 하는게 best practice인지 궁금합니다- State DB(Mysql, postgresql, mongodb)- InMemory DB(Redis)- Kafka Topics3. 현재는 설치형으로 강의를 진행해주셨는데, docker나 k8s 환경에서 수집을 한다면 같은 네트워크에도 묶여야되는 등 신경써야 할 부분이 많은 것 같은데요.. 베어메탈에서 wget 등으로 받아서 띄우는거 말고 컨테이너 환경에서는 어떻게 하는지 또 궁금합니다!
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
PageResponseDTO 오
TodoServiceImpl에서 PageResponseDTO<TodoDTO> getList 부분에서 오류가 발생합니다. PageResponseDTO혹시 PageResponseDTO 에서 제가 놓친 부분이 있을까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
WebServer , WebApplicationServer, Server 관련 질문
Server = 하드웨어 = OS가 없는 PC서버의 역할은 하드웨어 재원을 제공한다로 이해하고 있습니다. 웹서버는 80포트를 열어줌,도메인설정, 정적 컨텐츠 서빙, 로드밸런싱, SSL인증서 설치... 등등의 역할WAS는 동적 콘텐츠 생성, HTTP 메서드 ,비지니스 로직 , 세션처리...등등의 역할 웹서버 , WAS 둘 다 Server 위에서 동작하는 소프트웨어로 서버는 하드웨어 재원을 제공하며서버 위에서 돌아가는 소프트웨어인 웹서버,WAS는 위에 명시된 역할을 수행. 예를들어 Nginx , Tomcat 사용하고 있으면 실제로 서버가 2개 띄워져있어야 함 SpringBoot는 WAS로 톰켓을 내장 그럼 우리가 배포를 한다고 했을때 서버에 SpringBoot Application을 올리고 boot가 Tomcat을 내장하여 WAS로 사용하는 구조간략히 말하면 "xx서버에는 SpringBoot 올라가있어" 라고 말할 수 있음 이렇게 정리를 하였는데 혹시 잘못 이해한 부분이 있을까요?
-
해결됨코드로 배우는 React 19 with 스프링부트 API서버
함수선언과 화살표 함수
안녕하세요 강사님 강의에서 react는 대부분 함수로 선언하지 않고,화살표 함수를 선언해서 사용해주고 계시는데요, 함수가 아닌 화살표 함수를 사용하는 이유가 따로 있는지 궁금합니다.함수를 사용하지 않는 이유가 있다면 그 이유도 설명해주시면 감사하겠습니다.