묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
레포지토리에 @Transactional을 안붙이는 이유
Service에는 Transactional 어노테이션을 달지만 레포지토리에는 달지 않는 이유가 궁금합니다. 서비스에만 어노테이션을 달아도 서비스에서 레포지토리의 메소드를 호출하니 레포지토리에까지 Transactional 어노테이션이 적용되어서 그런건가요??
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Config Server 설정파일 관리방법 질문
안녕하세요. 선생님 Spring Cloud Config Server 의 설정파일 관리에 대해 문의드립니다. Config Server 의 설정값도 변경이 필요한 항목들이 있어보입니다. RabbitMQ 브로커의 주소라던가, Https 사용시 KeyStore 의 위치 라던가, 몇가지 항목이 수정될때, Config Server 도 그 값을 적용할 수 있을까 고민이 됩니다. 제가 확인한 항목은 Remote Repository 에 application.yaml 항목을 만들면 Config Server 도 actuator/metrix 확인 시 propertySources 로 읽어 오는 것을 확인했습니다. 다만 해당값들이 적용은 되지 않았습니다. 오케스트레이션에서 ENV 값을 바꾸어서 롤링업데이트를 수행해도 되겠지만, Config Server 자체에서 Uptime 으로 자체 설정값 변경내용을 적용하고 싶습니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
대쉬보드에 데이터를 못가져오는것 같습니다.
안녕하세요 이제 거의 강의가 끝나가네요 ㅠ 그라파나관련 질문이 있습니다. 대쉬보드 설정을 맞게 한거같은데 데이터를 불러오지 못하는것 같습니다. Data sources: 프로메테우스 설정정보 apigateway-service 에 대한 cpu, memory used 이런 차트는 잘 나오는데 requests served 의 데이터 표시, success api gateway의 차트는 N/A 또는 No data라고 뜨는데 원래 값이 안나오는 것이 맞는지 아니면 뭔가 잘못된 것인지 잘모르겠습니다. (프로메테우스에서 spring_cloud_gateway_requests_seconds_count값을 넣었을때 값이 있으면 나와야 하는것 아닌가요?)
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
dto 로 변환 단계에 대해 질문드립니다!
안녕하세요! entity를 dto로 변환하는게 좋다 하셨는데 repository에서 service로 넘겨줄때 dto를 넘기는게 맞나요 아니면 repository에서는 entity를 넘겨주고 service에서 controller로 넘겨줄때 dto로 변환해서 넘겨주는게 맞나요??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
assertThrows 오류 관련
안녕하세요. serviceTest를 하던중에 막혀서 이것저것 다 해봤지만 안돼서 질문드립니다. 다음 사진과 같이 assertThrow에서 오류가 발생합니다. 그래서 이전 코드들도 쭉 봤는데 그렇다기엔 try catch 문에서는 정상적으로 작동합니다. 뭐가 문제일까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 메서드 질문입니다!
강사님 Order클래스에서 연관관계 메서드를 만드실 때 Member에 대한 연관관계 메서드의 경우 public void setMember(Member member)라고 하셨는데 그 이전에 lombok으로 이미 setter를 만들어 주셨는데 그렇게 되면 lombok으로 만든 setter는 연관관계 메서드에 의해 무시가 되는건가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
이번강의에서 rabbitmq server 를 실행시켰는데 어떤 용도로 사용되었나요?
microservice 분산추적 강의를 전부 봤지만rabbitmq가 어떤용도로 사용되었는지 잘 모르겠습니다. CircuitBreaker 와 Slueth, Zipkin 을 구현하는데 rabbitmq 가 필요하나요? 전체 강의를 다 본다음 다시한번 봐야겠네요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
form tag중 action에서 질문이 있습니다.
회원 등록시 html form에는 action="/members/new"로 되어있는데 <form role="form" action="/members/new" th:object="${memberForm}" method="post"> --- 새로운 아이템 등록시 html form에는 action="@{/items/movie/new}"로 되어있습니다. <form th:action="@{/items/movie/new}" th:object="${form}" method="post"> 이 '{@"" }'의 차이가 뭔지 왜 빼거나 넣으면 작동이 안되는지 이유와 역활을 알려주시면 감사하겠습니다.
-
미해결실전! 스프링 데이터 JPA
totalCount는 어디서 쓰이나요?
페이징하면 제일 먼저 생각나는게 영한님이 말씀하신것 처럼 게시판의 페이징 기능이 생각이 납니다. Member가 m1~m5까지 있을때 이름, 나이 m1 AAA 10 m2 BBB 10 m3 CCC 10 m4 DDD 10 m5 EEE 10 이렇게 나이는 동일하고 이름만 다른 조건이 있다고 했을 경우 강의에서 offset과 limit을 활용하여 3개씩 잘라서 1 page = m1,m2,m3 2page = m4,m5 이렇게 나누는것 까지는 잘 이해가 됐습니다. 하지만 이때 totalCount는 강의내용을 참고하면 age가 같은 사람의 개수이니 5 라는 숫자가 나오게 되는데요 이 totalCount는 어디서 쓰이는건가요? 제가 생각하는 페이징에는 offset과 limit만 있어도 게시글 다음페이지 이런걸 할 수 있을거 같은데 어디서 쓰이는지 궁금합니다 ㅎㅎ
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
jpa 숙련도 향상 관련
영한님이 조언해주신 것 처럼 Spring data jpa 익히기 전에 JPA 먼저 제대로 숙지하고 넘어가고자 하는데요. 강의에서 빠른 수업 진행을 위해 간략히 구성한것들 full로 구현해보는 것 외에 추가적으로 학습하기 좋은 방법이 잇을까요? 개인적으로 공부하는거라 실무에 적용해 볼수가 없어 질문드립니다. 답변주시면 감사드리겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요 선생님 V2방식에대한 질문
회원등록 V2 방식을 그대로 사용하고 POSTMAN에서 POST방식으로 BODY안에 CreateMemberRequest 클래스의 필드와 같은값으로 데이터를 전송해봤습니다. 그런데 기본생성자가 없을경우에는 "org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class jpashops.ormonetwocombine.dto.RequestItemDto]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `jpashops.ormonetwocombine.dto.RequestItemDto` 포스트맨 에러입니다 이런 에러 구문이 나오더군요, 그런데 기본생성자를 CreateMemberRequest에 추가해주고 다시 Postman으로 전송하더니 잘되더군요, 받아온 JSON 데이터를 파싱하는데 기본생성자가 원래 필수인가요~?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
application.yml이 아닌 application.properties 쓰시는 분은 이거 쓰시면 됩니다!
스프링 생성시 버전이 높아 application.properties로 생성되시는 분은 yml쓰셔도 되고 아님 properties 파일에 밑에 복붙하시면 되세요! # H2 설정spring.datasource.url=jdbc:h2:tcp://localhost/~/jpashopspring.datasource.username=saspring.datasource.password=spring.datasource.driver-class-name=org.h2.Driver# JPA 설정spring.jpa.hibernate.ddl-auto=createspring.jpa.properties.hibernate.format_sql=true# Log 설정logging.level.org.hibernate.SQL=debuglogging.level.org.hibernate.type=trace
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
id값을 Long 타입으로 지정하는 이유가 따로 있나요??
강의를 보면서 계속 궁금했던 건데 id 값을 int가 아닌 Long 타입으로 하는 이유가 뭔지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
V5 에서 질문이있습니다.
여기서 oi.order.id in 을사용하셨는데욤 이곳은 배치사이즈가 안먹히나요?~~ 배치사이즈설정도 in 쿼리로 나가는걸로 이해를해서요~ List<OrderItemQueryDto> orderItems = em.createQuery( "select new jpabook.jpashop.repository.order.query.OrderItemQueryDto " + " ( oi.order.id, i.name, oi.orderPrice, oi.count )" + "from OrderItem oi " + " join oi.item i " + " where oi.order.id in :orderIds ", OrderItemQueryDto.class) .setParameter("orderIds", orderIds) .getResultList();
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
db 하나 사용할때
Kafka Connector + DB 에서 메세지 큐잉 서비스를 사용하고 DB는 하나만 사용한다고 하셨는데 DB를 하나만 사용할 거면 메세지 큐잉 서비스가 필요한지에 대해서 궁금합니다.!
-
미해결실전! 스프링 데이터 JPA
@CreationTimestamp와 @CreatedDate의 선택
저는 평소에 실무에서 @CreationTimestamp를 썼는데요. 이게 하이버네이트에서 제공하는 건줄도 모르고 그냥 막 사용했는데, 이번에 영한님 강의에서 @CreatedDate를 알게되어 둘을 비교해보니 @CreationTimestamp 는 하이버네이트 제공 @CreatedDate 는 스프링 프레임워크 제공 인 것 같더라고요 @CreationTimestamp는 JPA의 표준이 아니라 하이버네이트에서 제공하는 거라 아무래도 나중에 그럴일은 없겠지만, JPA 구현체를 하이버네이트 말고 딴거로 바꾸면 못쓴다는 단점이 있을 것 같긴 한데, @CreationTimestamp를 쓰면 @EnableJpaAuditing 같은거 안 해줘도 돼서 편하더라고요. 실무에서는 어떤 방식이 더 선호되나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
test 코드
OrderService의 order 메소드에 대한 단위 테스트를 작성해보려는 중에 질문이 생겨서 문의드립니다!orderRepository에서 save(order)를 하려면 Order객체를 만들어줘야하는데 Order 객체를 만드는게 Member, Delivery, OrderItem 이게 필요하니깐 테스트 코드에서 일일이 생성해서 만들어준 다음에 when(orderRepository.findOne(orderId)).thenReturn(만든 order객체) 요런식으로 해줘야 할까요?아래는 그냥 제가 끄적여 본건데 단위테스트가 독립적인 테스트라 해서 Mockito를 이용해 짜본건데 맞게 했는지 잘 모르겠습니다... OrderService의 order 메소드에 대한 단위 테스트는 어떤식으로 짜면 좋을지 조언 부탁드립니다...! @Mock private OrderRepository orderRepository; @InjectMocks private OrderService orderService; @Mock private MemberRepository memberRepository; @Mock private ItemRepository itemRepository; @Test public void 상품_주문(){ //given Member member = createMember(); Item item = createBook("시골JPA", 10000, 10); int orderCount = 2; //when when(memberRepository.findOne(member.getId())).thenReturn(member); when(itemRepository.findOne(item.getId())).thenReturn(item); doNothing().when(orderRepository).save(any(Order.class)); Long orderId = orderService.order(member.getId(), item.getId(), orderCount); //then //when(orderRepository.findOne(orderId)).thenReturn() Order getOrder = orderRepository.findOne(orderId); assertEquals("상품 주문시 상태는 ORDER", OrderStatus.ORDER, getOrder.getStatus()); assertEquals("주문한 상품 종류 수가 정확해야 한다.",1, getOrder.getOrderItems().size()); assertEquals("주문 가격은 가격 * 수량이다.", 10000 * 2, getOrder.getTotalPrice()); assertEquals("주문 수량만큼 재고가 줄어야 한다.",8, item.getStockQuantity()); }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
필드에 있는 컬렉션을 초기화 시키는 이유가 뭔가요?
List<Order> orders = new ArrayList<>(); 이렇게 컬렉션만 초기화 해주는 이유가 궁금합니다. 단순히 NPE 방지를 위해서인가요? 그렇다면 왜 래퍼 클래스는 초기화 하지 않나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의 업로드 일정 질문있습니다.
영한님 강의 매우 잘 듣고 있습니다. 9월까지 모든 강의를 다 들을 것 같은데 혹시 "스프링 DB 접근 기술"과 "스프링 부트"는 언제 쯤 나오나요? 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
이 강의를 다 들은 후 어떤 로드맵을 따라갈까요?
이 강의를 들으며 스프링을 처음 공부해봤습니다. 이 강의를 다 들은 후 [스프링 완전 정복]로드맵을 들을지 [스프링부트와 JPA 완전 정복]을 들을지 고민이 되는데, 추천해주실 수 있나요? 현재 저의 상황을 말씀드리자면 이 강의를 듣기 전 장고로 간단하게 개인 프로젝트를 해본 적이 있습니다. 규모는 크지 않고 간단한 CRUD 정도 해봤습니다. 현재 앱개발 외주를 받았는데, UI를 만드는 사람은 따로 있고 저는 백엔드 서버만 개발하면 됩니다. (외주 개발 기간은 2달 +@ 입니다. 기능은 로그인, 회원가입, 결제.. 등이 있고 택배 어플과 유사한 기능을 하는 앱입니다) 이런 상황을 전체적으로 고려했을 때 어떤 로드맵이 더 좋을까요? 참고로 김영한님의 모든 강의는 이미 구매했습니다.