묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
검색기능이 안됩니다
@PostMapping("/order_search") public String doSearch( @RequestParam("start_date") String strStartDate, @RequestParam("end_date") String strEndDate, @RequestParam(value = "coffee", defaultValue = "ALL") String strCoffee, @RequestParam("name") String strName, Model model ){ log.info("strStartDate :"+strStartDate); List<Order_list> list = orderSvcV2.doSearch(strStartDate,strEndDate, strCoffee,strName ); model.addAttribute("list", list); return "/v2/order/order"; }/* 조회하기 */ public List<Order_list> doSearch(String strStartDate, String strEndDate, String strCoffee, String strName) { List<Order_list> list = orderDao.doSearch(strStartDate,strEndDate, strCoffee,strName ); return list; }package hello.sailing.v2.dao; import hello.sailing.v2.vo.Order_list; import org.apache.ibatis.annotations.Mapper; import java.util.List; @Mapper public interface OrderDaoV2 { List<Order_list> doList(); List<Order_list> doSearch(String strStartDate, String strEndDate, String strCoffee, String strName); }package hello.sailing.v2.vo; import lombok.Data; @Data public class Order_list { private String no; private String coffee_no; private String coffee; private String price; private String cust_id; private String name; private String reg_day; } <!-- 검색에 의한 쿼리 --> <select id="doSearch" resultType="hello.sailing.v2.vo.Order_list"> SELECT no, coffee_no, coffee, price, cust_id, name, DATE_FORMAT(reg_day,'%Y.%m.%d') AS reg_day FROM order_list WHERE 1=1 AND reg_day >= DATE_FORMAT( #{strStartDate},'%Y%m%d') AND reg_day < DATE_ADD(DATE_FORMAT(#{strEndDate},'%Y%m%d'), INTERVAL +1 DAY) <if test="strCoffee != 'ALL'"> AND coffee like CONCAT(#{strCoffee},'%') </if> <if test="strName != 'ALL'"> AND name like CONCAT(#{strName},'%') </if> </select>화면에서는 조회버튼을 누르면 검색이 안됩니다...코드는 틀린게 없는데 왜 그런거죠?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
(3:56) 현재도 V3,V4가 작동되는지 질문드립니다
코드를 똑같이 작성하였음에도 V3,V4가 작동되지 않습니다버전이 바뀜에 따라 기능이 작동하지 않는건지 아니면 다른 문제인건지 확인해주시면 감사하겠습니다! @Slf4j @Controller public class RequestParamController { @ResponseBody @RequestMapping("request-param-v3") public String requestParamV3( @RequestParam String username, @RequestParam int age) { log.info("username={},age={}", username, age); return "OK"; } } @ResponseBody @RequestMapping("request-param-v4") public String requestParamV4(String username,int age) { log.info("usernameV4={},ageV4={}", username, age); return "OK V4"; // <- @ResponseBody }
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터 예외처리
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)log.error("afterCompletion error!!", ex); 여기서 왜 ex에 대한 정보는 출력이 되지 않나요?[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
강의보고 응용하다가 테스트코드 부분 질문이 있습니다.
WebMvcTest를 이용한 테스트코드 작성하는데 원하는 대로 값이 안나와요... @Test void store_canNotAccess1() throws Exception { //given //when //then mockMvc.perform(post("/store/somePoint") .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isBadRequest()) .andExpect( result -> { String content = result.getResponse().getContentAsString(); System.out.println(content); }); }@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession(false); if (session == null || session.getAttribute(SessionConst.LOGIN_PARTNER) == null) { throw new CustomException(ErrorCode.PARTNER_ONLY_ACCESS); } return true; }session에 null이 들어가는 거 까진 디버깅으로 확인을 했는데jakarta.servlet.ServletException: Request processing failed: reservation.hmw.exception.CustomException: 파트너 회원만 접근할 수 있습니다.이런식으로 테스트가 실패를 하네요...어떻게 하면 예외를 잡아서 성공 테스트코드를 짤 수 있을까요?
-
해결됨스프링 부트 웹 개발 입문 - 따라하며 배우기
500에러
<!DOCTYPE html> <html lang="ko"> <head> <title>Coffee Order List</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" type="text/css" href="/css/comm.css"> <link rel="stylesheet" type="text/css" href="/css/coffee.css"> </head> <body> <!-- 헤더 위치 --> <div class="topnav"> <a href="/v2/home">Home</a> <a href="/v2/menu">커피메뉴</a> <a href="/v2/order">주문내역</a> <a href="/v2/member">고객정보</a> </div> <div id="main" style="font-size:large; text-align: center; "> <div id="search" style="height: 150px;padding: 15px; font-size: small; width: 90%; margin-left: auto; margin-right: auto;"> <h3>[ Coffee Order List <span style="font-size:30px;">🛒</span> ]</h3> <form name="fm_order" autocomplete="on"> <fieldset> <legend> [검색조건] </legend> <label>등록기간</label><input type="date" id="start_date" name="start_date" min="2020-01-01" max="2023-12-31"> - <input type="date" id="end_date" name="end_date" min="2020-01-01" max="2023-12-31"> <label>메뉴명</label> <input type="text" id="menu" name="menu"> <label>고객명</label> <input type="text" id="name" name="name"> </select> <input type="submit" value="조회" style="width: 80px;height: 30px;font-weight: bold; font-size: medium"> <!-- <a href="javascript:loadDocArray()">test</a> --> <!-- <label>CheckBox : </label><span id="idCheckBox"></span>--> </fieldset> </form> </div> <table class="table"> <thead> <tr class="tr_td"> <th>Chk</th> <th>주문번호</th> <th>커피No</th> <th>메뉴명</th> <th>가격</th> <th>고객ID</th> <th>고객명</th> <th>주문일자</th> </tr> </thead> <tbody id="t_body"> <!--- 데이타 출력 부분 --> <tr th:each="prod : ${list}"> <td><input type="checkbox" name="chkOrderNo" th:value="${prod.getNo()}"></td> <td th:text="${prod.getNo()}">주문번호</td> <td th:text="${prod.getCoffee_no()}">커피No</td> <td th:text="${prod.getCoffee()}">메뉴명</td> <td th:text="${prod.getCust_id()}">고객ID</td> <td th:text="${prod.getName()}">고객명</td> <td th:text="${prod.getReg_day()}">주문일자</td> </tr> </tbody> </table> </div> <!-- 푸터 위치 --> <div class="footer"> <!-- https://www.w3schools.com/html/html_emojis.asp --> <h4>[Footer] <span style="font-size:30px;">⛵</span> Spring boot 항해 ~ with Me</h4> </div> </body> </html> 계속 오류가 There was an unexpected error (type=Internal Server Error, status=500).An error happened during template parsing (template: "class path resource [templates/v2/order/order.html]")org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/v2/order/order.html]") at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241)이렇게 떠요ㅠㅠ
-
미해결토비의 스프링 6 - 이해와 원리
PaymentConfig에 대해 궁금한게있습니다
@Bean public ApiTemplate apiTemplate() { return new ApiTemplate(new HttpClientApiExecutor(), new ErApiExRateExtractor()); }위 코드에서 new HttpClientApiExecutor(), new ErApiExRateExtractor()를 new 하지않고 exRateProvider()에서 apiTemplate()를 bean으로 만든것처럼 bean으로 생성해서 넣어도 괜찮은건가요???
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
패키지 질문 있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]SpringConfig를 만들 때 service 패키지에 만든 이유가 있나요? 메인 클래스와 같은 패키지 및 아래 패키지에 존재하면 상관 없나요?
-
미해결스프링 시큐리티 OAuth2
authenticationEntryPoint 질문입니다.
강의 10분22초 강의자료 그림에서 인증이 실패하면 DaoAuthenticationProvider가 BasicAuthenticationEntryPoint를 호출한다고 돼있는데, AuthenticationEntryPoint는 이 과정에서의 실패가 아니라 해당 필터를 지나서 AuthorizationFilter에서 인증이 안된 사용자가 권한으로 인해 예외가 발생했을 경우 호출되는거 아닌가요? UsernameAuthenticationFilter에선 이런식이였던거 같은데 제가 잘못 이해한걸까요? DaoAuthenticationProvider에서 인증이 실패하면 BasicAuthenticationEntryPoint가 아니라 해당 필터에 등록된 FailureHandler가 호출되야할거 같은데 설명 부탁드립니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
응용해볼려고 세션을 이용한 테스트코드 작성중인데 잘모르겠습니다.
강의를 보다 혼자 응용해봤는데@Mock private HttpServletRequest request; @Mock private HttpSession session; @Test void store_canAccess() throws Exception { // given given(request.getSession(false)).willReturn(session); given(session.getAttribute(SessionConst.LOGIN_PARTNER)) .willReturn(1L); // when // then mockMvc.perform(post("/store/somePoint") .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); }@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpSession session = request.getSession(false); if (session == null || session.getAttribute(SessionConst.LOGIN_PARTNER) == null) { throw new CustomException(ErrorCode.PARTNER_ONLY_ACCESS); } return true; }채찍피티의 도움과 함께 이렇게 짰는데 CustomException이 터져요...혹시 잘못된 부분이 있을까요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
로그가 안찍혀요 ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용 OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended2024-10-03T23:40:00.663+09:00 INFO 9488 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'2024-10-03T23:40:00.665+09:00 INFO 9488 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2024-10-03T23:40:00.670+09:00 INFO 9488 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.> Task :testBUILD SUCCESSFUL in 4s4 actionable tasks: 1 executed, 3 up-to-date오후 11:40:00: Execution finished ':test --tests "jpabook.jpashop.MemberRepositoryTest.testMember"'. 테스트는 통과하는데 저렇게 뜨면서 로그가 안찍히네요 ㅠㅠ 설정도 줄맞춰서 다 해봤는데 도저히 안돼서 .. 뭐가 문제일까요 ㅠ
-
해결됨스프링 부트 웹 개발 입문 - 따라하며 배우기
v2 객체 만드는중 입니다
v2 객체 만들고 이름도 바꾸고 패키지도 다시 만들었는데 이 오류가 자꾸 발생합니다..3일동안 하는데 계속 같은 오류가 뜨네여[2024-10-0323:26:47:2892] [restartedMain] DEBUG o.s.b.d.LoggingFailureAnalysisReporter -Application failed to start due to an exception org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.sailing.v1.dao.MenuDao' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
스프링 jpa 기반의 Entity가 올라온다면 서비스 계층이 순수하다고 볼 수 있을까요?
안녕하세요? 강의 잘 듣고 있습니다강의 내용을 쭉 들으면서, 결과적으로 서비스계층에 어떻게 하면 순수한 비즈니스 로직을 남겨둘수 있을까? 에 대한 고민을 풀어주셨다고 생각합니다. 그런데 저 개인적으로 드는 의문은, 일반적으로 JPA를 사용한다면 jpa ORM Entity가 서비스계층에 출몰하게 될텐데, 이는 곧 서비스계층이 JPA기반의 스택에 의존하게 된다는 것 아닌가요? 예를 들어 DB를 MYSql -> Mongo로 바꾼다고 했을 때, 서비스계층에서의 코드변화도 필요할 것 같은데, 이러한 부분에 대해서 어떻게 생각하시는지가 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 리포지토리와 회원 서비스
[질문 내용]회원 리포지토리는 인터페이스와, 메모리 구현체로 이루어져 있습니다. 그런데 회원 서비스는 회원 리포지토리와는 반대로 클래스로만 이루어져 있는데 왜 회원 리포지토리는 회원서비스처럼 클래스로 만들지 않고 인터페이스와 메모리구현체 클래스로 나뉘었는지 궁금합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
파라미터에 String이나 기본 타입을 받을 때 @RequestParam을 생략하면
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]파라미터에 String이나 기본 타입을 받을 때 @RequestParam을 생략하면 @RequestParam(required = false)처럼 동작하는 것이 맞나요?
-
미해결토비의 스프링 6 - 이해와 원리
애플리케이션 예외 사용에 대한 질문
토비 스프링 3.1 책과 강의를 병행하면서 궁금한 점이 있어서 질문 남깁니다.책 [4.1.4 예외처리 전략 - 애플리케이션 예외] 에서는 '외부의 예외상황이 원인이 아니라 애플리케이션 자체의 로직에 의해 의도적으로 발생시키는 예외도 있다' 라고 하는데요.예를들어 잔고 부족과 같은 상황에서 예외상황에 대한 리턴값을 코드화 하는것 보다는 InsufficientBalanceException 과 같은 체크 예외를 던지는것도 좋은 방법(코드가 이뻐짐) 으로 소개가 됩니다.그러나 강의에서 예외는 '정상적인 값을 리턴으로 수단으로 사용' 하는 것은 지양하고 '예외적인 상황에서만 사용' 해야 한다고 해주셔서 조금 헷갈리네요. 제가 이해를 잘못했을 수도 있는데요. 같은 상황이 맞다면 어떤게 더 맞는 방향인지 궁금합니다.
-
미해결쥬쥬와 함께 하루만에 끝내는 스프링 테스트
강의를 수강하면서 2가지 질문이 생겼습니다
안녕하세요 쥬쥬님의 강의를 보면서 테스트 코드 작성에 도움을 많이 받고 있습니다. 감사합니다. 질문이 있어서 글을 올려드립니다. 질문1.application.yml 에서 mysql, redis, kafka 의 호스트를 컨테이너 이름으로 지정해주면 굳이 IntegrationTestInitializer 정적 클래스의 initialize() 메서드를 구현해 동적으로 호스트와 아이피를 지정할 필요가 없을 것이라고 생각했습니다. 왜 application.yml 에서 각 모듈의 호스트를 localhost 로 지정해주셨는지 여쭤보고 싶습니다. 질문2.redis, kafka 에 특화된 테스트 컨테이너 모듈을 사용하셨는데, 이러한 모듈을 사용하지 않고 그냥 testImplementation "org.testcontainers:testcontainers:1.19.0" 만을 사용해서 테스트 컨테이너를 구동시켜 테스트해도 되는지 여쭤보고 싶습니다. 예를 들어 이런 식으로 입니다. 질문 읽어주셔서 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의 소스코드
혹시 강의 소스코드를 받을 수 있을까요??의존성 문제가 해결이 안돼서 강의 코드를 한번 받고싶습니다
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
생성메서드에 대한 질문입니다.
제가 강의를 듣다가Order 엔티티의 생성메서드의 파라미터에는 OrderItem의 리스트가 넘어오고,OrderItem 엔티티의 생성메서드의 파라미터에는 Item 객체가 넘어오는데 각각 Order 엔티티의 생성메서드에 OrderItem 리스트가 넘어오는 이유는 주문상품이 있어야 주문이 있기 때문이고, OrderItem 엔티티의 생성메서드에 Item 객체가 넘어오는 이유는 상품이 있어야 주문상품이 있기 때문이라고 이해하면 될까요??
-
미해결스프링 핵심 원리 - 기본편
중복 등록과 충돌 강의에서 질문있어요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 빌드실행도 Gradle(default)으로 설정했는데 왜 안된는 건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원가입 등록 이후 두번째 회원가입부터 오류 발생
2024-10-02T00:24:30.390+09:00 ERROR 17692 --- [hi-spring] [nio-8080-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because the return value of "com.example.hi_spring.domain.Member.getName()" is null] with root causejava.lang.NullPointerException: Cannot invoke "String.equals(Object)" because the return value of "com.example.hi_spring.domain.Member.getName()" is nullat com.example.hi_spring.repository.MemoryMemberRepository.lambda$findByName$0(MemoryMemberRepository.java:31) ~[classes/:na]at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:178) ~[na:na]회원가입에서 이름 입력 이 후 두번째부터 회원가입 등록 시 위와 같은 오류메세지가 나타납니다.회원목록 화면으로 가보아도 처음에 정상적인것처럼 등록한 이름도 나오지 않고, #이름 위와 같은 화면으로 숫자만 생성되어 있고 빈칸으로 나옵니다. 오류메세지에서는 findByName 부분이 잘못 되어졌다고 나오는데 오류원인이 무엇인지 모르겠습니다.도움부탁드립니다.