묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
라디오 버튼에 기본값 설정
라디오 버튼의 경우 모두 선택하지 않는 null을 사용할 경우는 거의 없어 보입니다. 따라서 처음 addForm을 표시할 때 부터 제일 앞의 도서가 선택되어있는 상태로 만들고 싶은데 이 경우는 Thymeleaf에서 어떻게 할 수 있을까요? [x] 도서 [ ] 음식 [ ] 기타
-
미해결실전! 스프링 데이터 JPA
@CreationTimestamp와 @CreatedDate의 선택
저는 평소에 실무에서 @CreationTimestamp를 썼는데요. 이게 하이버네이트에서 제공하는 건줄도 모르고 그냥 막 사용했는데, 이번에 영한님 강의에서 @CreatedDate를 알게되어 둘을 비교해보니 @CreationTimestamp 는 하이버네이트 제공 @CreatedDate 는 스프링 프레임워크 제공 인 것 같더라고요 @CreationTimestamp는 JPA의 표준이 아니라 하이버네이트에서 제공하는 거라 아무래도 나중에 그럴일은 없겠지만, JPA 구현체를 하이버네이트 말고 딴거로 바꾸면 못쓴다는 단점이 있을 것 같긴 한데, @CreationTimestamp를 쓰면 @EnableJpaAuditing 같은거 안 해줘도 돼서 편하더라고요. 실무에서는 어떤 방식이 더 선호되나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
강의 관련 질문이 있습니다.
항상 좋은 강의 감사드립니다. 1. Member loginMember = memberRepository.findById(memberId);if (loginMember == null) { return "home";} 이부분 로직에서 궁금한것이 쿠키가 이미 발급되었다는것은 로그인 입력정보와 일치하는 회원이 회원저장소에 존재한다는것을 전제로 하는데 왜 loginMember과 null인지 한번더 검증하는지 이해가 가질 않습니다. 2. cookie만료와 관련해서 addcookie를 여러번 하면 결국 오버랩되어서 마지막으로 set-cookie로 보낸 쿠키만이 저장되는 것인가요?? 3. loginhome에서 로그아웃을 왜 post메서드로 보내는지 이해가 가질 않습니다. 단지 maxage가 0인 쿠키만 보내고 홈화면으로 리다이렉트로 get하면 되는것 아닌가요???
-
미해결실전! 스프링 부트와 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 2편 - 백엔드 웹 개발 활용 기술
java 객체, enum
안녕하세요~ modelattribute로 값을 넘길때, Map, enum, java object 등 다양한 방법으로 예시를 보여주셨는데요 어떤 경우에 어떤 type을 쓰는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의 업로드 일정 질문있습니다.
영한님 강의 매우 잘 듣고 있습니다. 9월까지 모든 강의를 다 들을 것 같은데 혹시 "스프링 DB 접근 기술"과 "스프링 부트"는 언제 쯤 나오나요? 감사합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터 대신 필터를 사용해야되는 특별한 상황이 어떤 상황인지 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
미리 사용할 정보를 다음과 같이 구현하면 되는 것인지 궁금합니다!!!
안녕하세요 강사님. 항상 좋은 수업 감사드립니다. 다름이 아니라 @ModelAttribute를 사용하면 매번 생성하는 문제가 있다고 하셔서 한번 제 생각대로 구현해봤습니다. 이전 Memory에 사용했던 싱글톤 패턴? 형식으로 DeliverCode 값을 초기화한 List를 가지는 클래스를 구현하고 이를 호출하는 식으로 구현하였는데 이런 방식으로 사용하면 되는것인지 궁금합니다. package hello.itemservice.domain.item;import java.util.Arrays;import java.util.List;public class DeliveryCodesCreate { private static final List<DeliveryCode> deliveryCodes = Arrays.asList( new DeliveryCode("FAST", "빠른 배송"), new DeliveryCode("NORMAL", "일반 배송"), new DeliveryCode("SLOW", "느린 배송") ); public static List<DeliveryCode> getInstance() { return deliveryCodes; } private DeliveryCodesCreate() { }} @ModelAttribute("deliveryCodes") public List<DeliveryCode> deliveryCodes() {// List<DeliveryCode> deliveryCodes = new ArrayList<>();// deliveryCodes.add(new DeliveryCode("FAST", "빠른 배송"));// deliveryCodes.add(new DeliveryCode("NORMAL", "일반 배송"));// deliveryCodes.add(new DeliveryCode("SLOW", "느린 배송"));// return deliveryCodes; return DeliveryCodesCreate.getInstance(); }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
이 강의를 다 들은 후 어떤 로드맵을 따라갈까요?
이 강의를 들으며 스프링을 처음 공부해봤습니다. 이 강의를 다 들은 후 [스프링 완전 정복]로드맵을 들을지 [스프링부트와 JPA 완전 정복]을 들을지 고민이 되는데, 추천해주실 수 있나요? 현재 저의 상황을 말씀드리자면 이 강의를 듣기 전 장고로 간단하게 개인 프로젝트를 해본 적이 있습니다. 규모는 크지 않고 간단한 CRUD 정도 해봤습니다. 현재 앱개발 외주를 받았는데, UI를 만드는 사람은 따로 있고 저는 백엔드 서버만 개발하면 됩니다. (외주 개발 기간은 2달 +@ 입니다. 기능은 로그인, 회원가입, 결제.. 등이 있고 택배 어플과 유사한 기능을 하는 앱입니다) 이런 상황을 전체적으로 고려했을 때 어떤 로드맵이 더 좋을까요? 참고로 김영한님의 모든 강의는 이미 구매했습니다.
-
미해결스프링 핵심 원리 - 기본편
TestConfig 클래스에서 static을 떼버리면..
안녕하세요. 이번 수업때 임의로 쓰기 위해서 정의한 이너클래스인 TestConfig에서 static을 빼고 실행을 하니 "beans.factory.UnsatisfiedDependencyException"에러가 뜨면서 애초에 컨데이너 생성 및 bean 생성이 되지 않는걸로 보여지는데 기존에 쓰던 AppConfig.class를 사용해서 다시 해보니 잘돌아 가더라구요 AppConfig에는 따로 클래스에 static을 붙이지 않았는데 왜 TestcConfig에서는 static을 붙여햐 하는지.. 뭘 놓치고 있는지 잘 모르겠어서 질문드립니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@Valid를 이용하여 BeanValidation과 @InitBinder를 동시에
만약 다음과 같이 인풋을 받았다고 가정하겠습니다. @Valid @ModelAttribute ItemDto itemDto 이 경우에, 각 필드에 대한 검증은 ItemDto 내의 @NotBlank, @Max, @Min과 같은 어노테이션으로 해결하고, ObjectError의 경우 ItemDtoValidator를 만들어 Validator를 구현하여 @InitBinder로 등록해두는 건 안되나요..?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 관련 질문 드립니다.
안녕하세요 강의 잘 듣고 있습니다. 실무에서는 서버를 여러대로 운영할텐데 이렇게 로그인 정보를 세션으로 관리를 하나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
호출 흐름
안녕하세요 전체적인 흐름을 여쭤보고싶은데요. 순서가 1. servlet에 호출 2.비즈니스 로직처리하고 members attribute 설정 3. forward로 해당 jsp 로 이동 4. jsp 내에서 attribute들 입력 5. 해당 jsp response 이고 정적 HTML은 해당 경로파일을 내려보내주는거지만 JSP 는 model data들을 jstl로 세팅한 후에 리스폰스되는데 내부적으로는 세팅된 jsp 파일을 response.writer써준다 생각하면 맞나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
home.html을 불러오지 못합니다..
혼자서 해결해보려고 노력했으나 도저히 모르겠어서 질문 남깁니다.. <HomeController> <home.html과 hello.html 위치> <오류 코드> hello 페이지를 "/"로 매핑한경우는 잘 실행 되는데 home 페이지는 실행이 안됩니다 hello.html, home.html 모두 templates 폴더에 위치해있습니다. 테스트로 만들어본 new.html도 불러오지 못합니다 <home.html>
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
페이지 소스보기에서 true 값 질문
항상 좋은 강의 감사드립니다. 상품등록폼에서 판매여부를 체크하지 않는 경우 요청 파라미터로 _open:on 만 전달되고 item객체의 open변수에는 false가 저장된다고 이해하였는데 상세보기 페이지 소스에는 왜 item.open의 값이 ture인지 궁금합니다. 타임리프에서 렌더링 할때 Value가 참이면 cheked를 넣어주고 flase일때는 cheked를 넣지 않음으로써 상세보기 페이지에서 체크여부를 결정하는게 맞지 않나요?/
-
미해결스프링 핵심 원리 - 기본편
스프링 빈 문의드려요
영한님 안녕하세요.오랜만에 문의를 드리는 거 같아요. 지난 주에 MVC 2번째 과정을 구매해서 듣고 있는데 이전 내용이 생각이 잘 안나서 이과정을 또 듣고 있네요.. ㅎ오랜만에 게시판에 왔더니 서포터즈도 생기고 과거와 분위기가 좀 달라진 거 같아요 ㅎ 좋은 객체 지향 설계를 위해서 스프링 빈으로 등록하고 컨테이너가 빈을 자동 주입을 해주는 부분은 잘 이해가 가는데요.간혹 실무에서 인터페이스가 없는 객체를 만들어 놓고 (사실, 인터페이스가 있을 필요도 없는 케이스)해당 객체를 @Bean 으로 수동 등록해두고, 서비스 계층에서 @Autowired 로 해당 객체를 사용하는 경우를 본 적이 있습니다. 이런 경우는 어떠한 의도로 그렇게 사용을 하는 것일까요?단순히 싱글톤 방식을 원해서일지, 아니면 무언가 다른 케이스가 있어서인지 궁금하네요.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 관련 질문 있습니다!
1. 앞 강의에서 세션 관련해서는 서버에서 세션 저장할때 랜덤 값과 맴버 객체만 있으면 될 거 같은데 굳이 SessionConst.LO GIN_MEMBER값은 왜 쓰이고 어디에 쓰는지 모르겠습니다. 2. 그냥 session.setAttribute하면 addCookie 할 필요없이 알아서 클라이언트한테 세션 값이 가는 건가요??
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
공통되는 엔티티 혹은 유틸파일 등 관리관련하여 질문있습니다
안녕하세요. 긴 간의 유익하게 잘 봤습니다. 감사합니다. 다름이 아니라 강의를 보던중 생긴의문이었는데 마이크로 서비스 아키텍쳐로 여러개의 서비스를 나눴을 경우에 수개의 서비스에서 공통적으로 사용되는 엔티티 등을 단순히 복붙으로 하기에는 관리측면에서 좋지않아보이는데 어떤식으로 공유가 이뤄져야하나요? 또는 현업에서는 어떤 방식을 사용하고 있는지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
EntityManager 싱글톤
https://www.inflearn.com/questions/158967 먼저 다른 여기 부분에서 질문이 있습니다. "스프링 프레임워크는 여기에 실제 EntityManager를 주입하는 것이 아니라, 사실은 실제 EntityManager를 연결해주는 가짜 EntityManager를 주입해둡니다." 말씀을 하셨는데 풀어서 제가 이해한내용은 가짜로 주입을 하고 실제 비즈니스 로직을 탈때 예시를 들면 사용자A가 사용을 하고 EntityManager 가 실행 될때 실제로 EntityManager를 호출하고 로직이 끝나면 가짜 EntityManager를 주입하고 사용자B가 호출을 하면 가짜 EntityManager가 실제 EntityManager를 호출하여 실행이 되서 싱글톤이긴 하나.. 분기(?) 처리해서 EntityManager를 사용하고 있다라고 이해를 하고 있는데 맞을까요.. 아니라고 하면 풀어서 설명이 가능할까요? 초보적인 질문을 드려서 죄송합니다..