묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문 검색 필터링 오류시 참고하세요
다른 분들 질문도 찾아보고 저도 어이없는 실수로 고생을 좀 했습니다.다음 내용 참고하셔서 시간 절약하세요~ 컨트롤러 체크@GetMapping(value = "/orders") public String orderList(@ModelAttribute("orderSearch") OrderSearch orderSearch, Model model) { List<Order> orders = orderService.findOrders(orderSearch); model.addAttribute("orders", orders); return "order/orderList"; }위 부분에 문제가 없다면 orderService.findOrders -> orderRepository.findAllByString or orderRepository findAllByCriteria 부분에서 쿼리 작성하는 부분 반드시 체크가끔 복사 붙여넣기 해서 사용하면 띄어쓰기 차이로 오류가 발생하는 경우가 있습니다꼼꼼하게 확인하시고 한번쯤은 손으로 쳐보세요!OrderStatus가 enum타입으로 잘 정의되었는지 체크public enum OrderStatus { ORDER, CANCEL } OrderSearch가 잘 정의되었는지 체크@Getter @Setter # 글쓴이는 바보같이 Setter를 Service로 작성해서 한참을 헤맸음, 자동완성(tab) 할 때 너무 급하게 하지맙시다... public class OrderSearch { private String memberName; private OrderStatus orderStatus; }요렇게만 체크해도 해결되더라구요. 그리고 팁을 좀 드리자면웹 페이지(html) 쪽은 사실 복사,붙여넣기해서 사용하면 오류날 곳이 없기 때문에 컨트롤러를 기준으로 차근차근 따라가면서 하나씩 꼼꼼하게 체크하시면 오류 찾기 쉬우실 겁니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Create Table Error
sql 테이블 생성 시 이와 비슷한 질문들을 보았을 때는 오타 수정이었지만 이 경우에는 오타가 5번정도 다시 봐도 없는 것 같아서 질문드려요 어떻게 해야할까요....
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
Test 코드에서 @Transactional 의 자동 롤백 유무 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요! 강의듣다 궁금한점이 생겨 질문 드립니다.섹션 9 트랜잭션 적용 확인 강의 약 10분쯤에서, Test 코드에서 @Transactional 을 남긴 메서드를 실행했는데, 커밋된 로그는 남지 않고, 컴플리트 된 로그만 남아있다고 설명하시는 부분에서 질문이 있습니다.지난번 강의에서 Test 코드에서 @Transactional 을 남기면 이건 Test이기 때문에 자동으로 롤백 된다는 설명을 하셨던 거로 기억하는데,이게 @Test 어노테이션이 붙은 메서드만 해당해서, 강의중 나온 메서드에선 적용이 안된는걸까요? 강의에선 Test코드에서 BasicService 를 static 클래스로 만들고, 해당 메서드에서 @Transactional 을 사용하는 메서드를 선언했습니다.아님 단순 로그가 커밋이나 롤백을 표시해주지 않기 때문에 그 내용을 설명해주신 걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2.bat 실행이 안됩니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. cmd를 관리자 권한으로 실행한 뒤 cd C:\Program Files (x86)\H2\bin 문장으로 directory 변경 후 "h2.bat"와 h2.bat로 실행을 하고자 하였지만 사진에서 확인할 수 있듯이 아무런 반응이 없었습니다.(웹페이지 생성x) 그렇다고 cmd가 꺼지거나 특별한 오류메시지가 뜨지도 않아서 해결 방법을 얻고자 질문을 작성하였습니다. 이클립스의 application.properties에는 두번째 사진과 같이 추가하였고, build.gradle에는 runtimeOnly 'com.h2database:h2' 문장을 dependencies에 추가하였습니다. h2 database는 windows installer로 1.4.200 을 다운 받았습니다.
-
해결됨Practical Testing: 실용적인 테스트 가이드
ActiveProfiles("test")를 대체할 수 있는 다른 방법이 있을까요?
안녕하세요 선생님, 먼저 좋은 강의 감사드립니다. 로컬환경과 테스트 환경을 별도로 관리해주기 위해서, test 프로파일을 사용하는 것은 이해했습니다.그런데, 이렇게 되면 모든 클래스에 ActiveProfiles 를 붙여줘야하니 다소 번거로울 것 같습니다.제가 생각한 방법으로는 SpringBootTest와 ActiveProfiles를 묶는 어노테이션을 별도로 만들고, 만든 어노테이션을 이용해볼 것 같습니다.혹시 ActiveProfiles 를 대체하기 위한 또 다른 방법은 어떤 것들이 있을까요?좋은 강의 감사드립니다 :)
-
해결됨Practical Testing: 실용적인 테스트 가이드
안녕하세요. 객체의 책임 분리와 관련해서 질문이 있습니다.
안녕하세요. "private 메서드 테스트는 어떻게 하나요?" 강의를 들으며 객체의 책임 분리에 대하여 질문드릴 것이 있습니다.객체의 책임 분리를 위해 별도의 Class를 만들고 객체를 생성해서 해당 객체에게 특정 책임을 부여하려면 결국에 별도의 Class를 만들어야 한다는 것이 전제될텐데요.현재 제가 일하는 곳에서 대표님이 Class가 많이 늘어나게 되면 유지보수가 어렵게 되고 코드가 지저분해질 수 있다고 하신 적이 있습니다. 전 객체지향 관점에서 한 객체가 모든 걸 다 하고 한 메서드가 너무 많은 행위를 하는 것이 좋지 않다고 생각하는데 우빈님은 혹시 제가 들은 대표님의 말씀에 대해 어떻게 생각하시는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello.html 오류
hello.html에서 thymeleaf 엔진을 받아오지 못하는 것 같은데 어디서 오류가 있는지 찾아주세요... 앞선 질문들에서 나왔던 8080포트의 중복인가 싶어 방법대로 8080 포트 프로세스 종료 후 재실행 & 다른 포트 번호로 접속. 두 가지 방법으로 다 해보았지만 계속 /hello에서 에러가 뜹니다 ㅠㅠ 도움 부탁드려요
-
미해결스프링 핵심 원리 - 기본편
DiscountPolicy 질문 있습니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]Member, Order와 다르게 왜 Discount만 Service 라는 명칭이 없는데요. 이 때 MemberService, OrderService 와 같은 Service 역할이지만 단순히 할인정책 이라는 설계 이름때문에 Service가 아닌 Policy로 붙인 건가요? 아니면 Discount 부분은 MemberService, OrderService와는 개념적으로 다른 건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@Compoent 사용시 순환 참조가 일어나지 않는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 순환 참조 문제가 발생하여 커뮤니티 글을 확인하고 해결하였는데요, 해당 링크를 참고해도 이해가 가지 않는 부분이 있어서 질문 남깁니다."@Around에서 자기 자신을 포함하고 있기 때문에 순환 참조가 발생한다" 라는 것은 이해를 했는데 "컴포넌트 스캔을 사용할 때는 AOP의 대상이 되는 이런 코드 자체가 없기 때문에 문제가 발생하지 않았습니다." 이 부분이 이해가 되지 않습니다. 컴포넌트 스캔을 사용해도 @Around에 명시한 경로에는 자기 자신인 TimeTraceAop 가 포함되는데 왜 이 경우에는 순환 참조가 일어나지 않는 것 인가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
spring.profiles.active=test 의 필요성
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]test 패키지의 application.properties에서 spring.profiles.active=test를 주석처리하고 실행해보았을때 아래와 같은 로그가 나옵니다. h.i.ItemServiceApplicationTests : No active profile set, falling back to 1 default profile: "default"test 패키지의 application.properties에 profile을 지정해주는 이유는 local 프로필로 인식되지않게하기 위함인데 위와 같은 결과가 나온다면 test 패키지의 application.properties에 profile을 따로 지정해줄 필요가 없지않을까요?
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
Controller / application Service / Domain 의 역할 구분
안녕하세요 강의 잘 듣고 있습니다.헥사고날 아키텍쳐 부분 강의를 듣고, 궁금한 부분이 새겨서 질문 남깁니다!Application Service(이하 서비스) 에서 도메인부분을 분리 하여 객체의 상태 변화에 대한 부분을 처리하도록 하고, 서비스에선 Repository와 소통해서 필요한 객체나 컨트롤러에서 정보(예를 들어 수정 정보 등등) 등등을 얻어서 도메인 부분에 위임한다고 이해했습니다. 그렇게 도메인 영역을 분리하면 테스트에 용이하다는 것은 이해했습니다. 그런데 실제로 토이프로젝트에 적용해보려고 코드를 수정하는 중에 예를 들어 게시글을 수정하는 과정이라면 컨트롤러에서 처음 요청을 받을 때 postId, updateRequest를 받아서 서비스에 업데이트를 요청하고, 다시 서비스에선 아이디를 통해 Post를 찾고, PostDomainService(가칭)에 Post와서 updateRequest를 넘겨 수정한다면 거의 같은 내용의 파라미터를 굳이 2 계층을 건너 불필요한 위임이 반복 된다고 생각했습니다. 궁금한 것은 2가지 입니다.이런 경우엔 PostDomainService 클래스를 만들기보단 Post 객체 자체에서 업데이트를 처리하는 것이 맞을까요? - (1번 코드)도메인과 도메인 서비스의 차이는 객체의 상태(도메인)와 객체의 행동(도메인 서비스) 일까요? 엔티티와 도메인의 구분이 잘 이해가 되지 않습니다. //== 업데이트 로직 ==// public void updateInfo(PostUpdateReqDto updatePost) { this.title = updatePost.getTitle(); this.content = updatePost.getContent(); } // 기존 서비스에서의 로직 @Transactional public PostUpdateResDto updatePost(final Long postId, final PostUpdateReqDto postUpdateReqDto) { Post findPost = postRepository.findWithMemberByPostId(postId); Post updatedPost = postDomainService.updatePost(findPost, postUpdateReqDto); // 위 과정에 생기면 사라지는 메서드 // findPost.updateInfo(postUpdateReqDto); checkForbiddenWord(findPost); return new PostUpdateResDto(findPost); }
-
미해결스프링 시큐리티 OAuth2
권한 부여 타입 authorization code, credential, refresh token 타입만 지원??
OAuth 2.0 Authorization Server Metadata Endpoint / JWK Set Endpoint 2:40~2:55권한 부여 타입이 authorization code, credential, refresh token 타입만 지원한다고 하셨는데 좀 헷갈립니다. 인증 서비스를 개발할 때 권한 부여 타입에는 위 3가지말고도 Resource owner password 방식을 사용할 수도 있긴한거죠? 공식문서에서 어디를 참고하면 될까요..?근데 스프링 시큐리티에서 이 Resource owner password 방식의 자체 configure 를 지원하진 않는다. 로 이해하면 될까요.만약에 Resource owner password 타입으로 권한 부여 서비스를 개발하려면 저희가 직접 ~configure, provider 클래스를 생성하는 건가요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
오타 제보합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]간단한 경계값 범위 오타 같아요.강의 자료 검증1 5page if (item.getQuantity() == null || item.getQuantity() >= 9999) { errors.put("quantity", "수량은 최대 9,999 까지 허용합니다."); } item.getQuantity() > 9999 로 조건문 범위 변경.그외 13,18,22,24,35page도 마찬가지로 수정이 필요한것 같습니다.
-
미해결스프링 핵심 원리 - 기본편
안녕하세요
안녕하세요 calculatePrice가 Order 도메인안에 있는 이유를다른분들이 질문하신 글의 답변을 보았는데[이 때 calculatePrice 가 여러곳에서 사용된다면 그 메서드마다 calculatePrice를 구하는 코드를 작성해야 할텐데요, 이후에 calculatePrice를 구하는 공식이 바뀌거나 한다면 수정하기 번거롭겠지요.] OrderService에 calculatePrice을 생성하고 new Order (memberId, itemName, itemPrice, discountPrice, caculatePrice)를 해서 주문을 생성해도 되지않나요?
-
해결됨재고시스템으로 알아보는 동시성이슈 해결방법
Lettuce를 활용한 방법에서 Stock 엔티티에 @Version가 없어도 되죠?
DB의 Named Lock을 활용하기 위한 방법에서 쓰였던 것인데 지워도 되는 거죠?
-
미해결토비의 스프링 부트 - 이해와 원리
폭풍 질문 죄송합니다....
앞서 수강생처럼 contextPath 부분이 value를 잘 읽어오지 못해서 질문드립니다... PropertyPlaceHolderConfig를 추가하고 META-INF에도 추가를 했는데 contextPath 값을 그대로 가져오지 못해서 이렇게 질문드립니다.깃허브 링크 남겨드립니다. 감사합니다!https://github.com/ted7088/hellospring_toby_study
-
미해결토비의 스프링 부트 - 이해와 원리
깃허브 커밋 후 오류 관련 질문드립니다.
제가 강의 들으면서 공부할때 매번 깃에다 올리고 커밋 후 푸시 하는 작업을 통해 두대의 컴퓨터에서 작업을 진행했는데, 색션 7,8을 어느 한 컴퓨터에서 듣고 다른컴퓨터에서 깃에서 프로젝트 업데이트 하니깐 hellobootapplication 이 실행이 안됩니다... 오류 사항은 Description:Web application could not be started as there was no org.springframework.boot.web.servlet.server.ServletWebServerFactory bean defined in the context.Action:Check your application's dependencies for a supported servlet web server.Check the configured web application type.종료 코드 1(으)로 완료된 프로세스이렇게 나오는데 혹시 이유를 알 수 있을까요?깃에서 가져와서 그런지 HellobootApplication에 환경변수를 추가해도 이상하게 안되더라고요...기존에 한컴퓨터는 실행이 지금도 잘되는데 다른컴퓨터에서는 이런 오류가 걸려서 질문드립니다
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인 시에 세션객체
스프링 세큐리티의 userDetails를 이용해서 로그인을 구현할 때멤버 테이블의 모든 정보를 담지말라고 하던데... 여기에 pk정도만 담는게 맞을까요?public class CustomMemberDetails implements UserDetails { private String username; private String password; private Collection<? extends GrantedAuthority> authorities; }
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ws와 was 질문이 있어요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]저희가 강의에선 was 톰캣 하나로 웹서버를 구동 시킬수있는데ws 아파치도 웹서버를 구동 시킬수 있자나요?문제는 실무에서 아파치도 띄우고 톰캣도 띄우는데 중복이 되서오류가 날꺼라고 생각이 드는데 어떻게 작동되는지 궁금합니다.예로들어 톰캣은 8080으로 띄우고아파치는 9090으로 띄우는건가요?클라이언트에서 요청을 하면 9090 에서 요청 받고 동적인 컨텐츠면 8080으로 요청 하는식으로요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello.html 관련 오류 문의
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]이런식으로 해당 주소를 인식 못하는 건지 오류가 납니다. 아래 th의 경우도 마찬가지입니다.