묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
mybatis 스프링 데이터 업데이트 foreach문 관련 질문입니다.
는지 검dservice 문에서 for 문을 돌려 받은 map list 를 Dao로 보내 어 이런 데이터 값을 받았습니다. [{orderProductQty=3, productCd=4}, {orderProductQty=2, productCd=1}] . 여기서 이 데이터 값이 mybatis에서 update가 되지 않고 있습니다. foreach 문을 다양한 방법으로 변경 해 보았으나 1, <foreach collection="list" item="productMap" separator=";"> 2,<foreach collection="list" item="productMap" separator=";" open="" close=""> 3. <foreach collection="list" item="productMap" separator=";" close=";"> 4, <foreach collection="list" item="productMap" separator=","> 5. <foreach collection="list" item="productMap" separator=";" open=";" close=";"> 모두 같은 에러의 연속이네요. 이거 어떻게 해결 할 수 있을까요? 도와 주시면 너무너무 감사드립니다.
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
repository mocking 문의
안녕하세요~ 최태현님 테스트 코드 작성에 있어서 고민이 있어 문의남깁니다. 이전까지 다른 강의 영상에서는 repository를 mocking해서 서비스를 테스트하는 영상을 많이 봤습니다. 그래서 서비스 테스트시에는 repository 를 mocking 하는것이 실무에서 흔한 방식이고 best practice라고 생각했습니다 그런데 실무에서 적용해보니 mocking을 하게되면 테스트 코드가 서비스 메소드의 내부 구현에 대해 너무 잘 알게되더라구요, 그러다보니 실제 코드의 내부 구현이 바뀌면 테스트 코드도 바뀌게 될 여지가 많더라구요.. 반면 스프링부트 테스트로 h2에 연결해서 하는 테스트는 상대적으로 느려 피드백이 늦는것이 단점일것같습니다. 개인적으로는 강의에 나온것처럼 스프링 부트 테스트로 h2에 연결해서 테스트하는 후자가 더 마음에 드는데요. 실제로 현업에서는 서비스 테스트시 둘중 어떤걸로 사용하시나요? 실제 강의하신것처럼 후자로 테스트를 많이 하시나요? 좋은 강의 감사합니다~
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
상품을 삭제하려면 어떻게 하면 좋을까요?
혹시 상품 상세페이지에서 상품 삭제를 하려면 어떻게 하면 좋을까요??,,,계속해서 하는데 모르겠어서요ㅠㅠ!
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
질문 아님.^^
주니어 개발자 분들이 지금 이 말을 잘 듣고 느끼시길 바래봅니다. 세상이 편해져도 노력없이 얻는건 없습니다. 오히려 4차 산업 5차 산업으로 발전할 수록 기본 지식을 더 많이 필요할 뿐이지 편하다고 생각하시지 마시고기술이 편해진다는 건 더 많은 지식을 요구한다는 것으로 받아 드리시고 루틴 처럼 자기 개발 잘 하셔서 고액 연봉자또는 훌륭한 사업자로의 길로 가시길 기원해 봅니다.대한민국 개발자 화이링!! ^^
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
1인 개발 데스크탑과 노트북에서 DB는 어떻게 처리하나요??
1인 개발을 할때 데스크탑에서 DB관련 작업을 진행하다 노트북으로 진행을하게 되면 이 부분은 어떻게 진행이 되는걸까요!??!?! DB 관련 수업을 들으며 진행하다 문득 궁금해져 QnA 남깁니당 ~
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
Transaction 적용구간에 대한 질문
안녕하세요? 강사님.덕분에 Springboot 수월하게 학습하고 있습니다.좋은 강의 항상 감사드립니다.다름이 아니라Transaction 적용구간에 대한 문의 드립니다.아래 가상 소스를 예를 들면방안1, 방안2 모두 문제점들이 있는데 실제 현업에서는 주로 어떠한 방법으로 해결하시는지 고견을 듣고 싶습니다. 물론, Controller 외부에서 별도 호출하는 방식으로아래 문제를 피해갈 수 있을것 같지만, 서비스 관리 특성성 하나의 메서드로 관리하고 싶다는 전제 입니다. 방안1) 경우 메소드에 Transaction을 적용하면순수 DB처리 이외도 처리도 포함되어 트랜잭션 처리이 짧을 수록 좋은데 길어질 수 있는 문제가 있습니다.방안2) 경우메소드를 쪼개어 순수DB 처리 메소드에만 Transaction을 적용할 수 있겠지만, external 메소드, 등록(), 의 경우 프록시 특성상외부에서 내부 메서드 호출시 트랜잭션이 적용되지 않습니다. 방안1)BasicService{ @Transactional public void 등록() { 1. 이미지 파일 저장 2. 이미지 파일 리사이징 3. ----트랜잭션 구간--- 3-1) 내용 등록 3-2) 업로드 파일 등록 }} 방안2) BasicService{ public void 등록() { 파일업로드(); DB저장(); } public void 파일업로드() { 1. 이미지 파일 저장 2. 이미지 파일 리사이징 } @Transactional public void DB저장() { 3. ----트랜잭션 구간--- 3-1) 내용 등록 3-2) 업로드 파일 등록 }} 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
필터사용
(인터셉터 대신) 특별히 필터를 사용해야 하는 경우는 어떤경우가 있을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
중복체크기능 관련 질문올립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 강사님 강의 잘 듣고있습니다. 강사님 제가 강의에서 들은 내용을 토대로과거 만들었던 프로젝트를 리팩토링하려고 하는데 어려움이 있어 질문올립니다. 강사님 위와같은 형식으로 회원가입을 진행하려고 하는데 과거에는 ajax를 사용해서 아래와 같이 <input type="text" id="signup-form-nickname" placeholder="닉네임을 입력해주세요." check_result="fail" required> <button type="button" id="check-nickname-btn" style="margin-left: 14px;" value="N">중복확인</button> check_result="fail"를 활용해 중복체크를 하면 check_result="success"값으로 바꿔 회원가입을 진행하는 방법을 사용했었습니다. 그런데 Thymeleaf에 와서는 어떤식으로 중복체크를 해야할지 감이 안잡혀 질문을 남깁니다. 타임리프는 ajax를 사용하지도 않고 중복체크 div도 form안에 있어 이것만 따로 보내는 방법도 알지 못하겠어 찾아보았으나 답이 나오지 않아 질문드립니다. 좋은 강의 만들어주셔서 감사합니다. 후기는 취업하고 올리려고 벼르고 있습니다. ㅇㅁㅇ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
게시판을 여러 개 만들 때
1. 예를들어 자유게시판, 건의게시판 이렇게 여러개가 있고 기능은 거의 똑같지만 건의에는 사진업로드 기능이 추가로 존재할 때 자유게시판 컨트롤러, 레파지토리, 모델, ... 건의게시판 컨트롤러, 레파지토리, 모델, ... 이렇게 다 각자 만들어줘야 하나요? 아니면 컨트롤러 레파지토리 모델 자유,건의 게시판 통합해서 만드나요? 2. DB에서 테이블도 자유, 건의 게시판 따로 만들어서 개발하나요? ( title, content 이런 것들 )
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
컨트롤러의 통합에 관한 질문입니다
안녕하세요. 스프링은 스프링 빈중 @Controller 혹은 @RequestMapping이 붙어있을 때 요청정보와 컨트롤러를 매핑한다고 저번시간에 배웠습니다. 제가 이때 이해한 것은 요청정보URL-객체 매핑이 저장된다는 것이었는데, 이렇게 컨트롤러 클래스를 하나로 통합하게 된다면 매핑이 url-메소드 관계가 형성이 되는 것 같습니다. 이 부분이 저희가 지금까지 MVC 프레임워크를 만드는 과정과 조금 결이 다른 부분이라 어떤 식으로 매핑정보가 등록되는 것인지 잘 이해가 가지 않습니다. 매핑이 클래스 단위로 일어날 수도 있지만 메소드 단위로 일어날 수 도 있는 것으로 이해하면 될까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
session.getAttribute(SessionConst.LOGIN_MEMBER) 질문
안녕하세요 영한님! 질문드립니다..! 아래와 같이 로그인 시 세션에 로그인 회원정보를 보관하고 //로그인 성공 처리 TODO //세션이 있으면 있는 세션 반환, 없으면 신규 세션을 생성 HttpSession session = request.getSession(true); //세션에 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 아래와 같이 세션에서 SessionConst.LOGIN_MEMBER가 key 값으로 session 에서 SessionConst.LOGIN_MEMBER와 매칭되는 value인 Member 객체를 꺼내오는 것으로 이해하고 있는데,, Member loginMember = (Member) session.getAttribute(SessionConst.LOGIN_MEMBER); 위와 같은 로직으로 여러회원이 로그인 할 텐데... 어떻게 하나의 key 값으로 여러개의 Member 객체를 구별 할 수 있는지 궁금합니다...! 감사합니다.!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 enum에 관하여 질문 좀 드리겠습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. JPA에서 enum을 활용할 때 질문드리겠습니다. 요일을 enum 타입으로 만들어 (0~6, 일~월 이런 형식) 체크 박스로 입력을 받아, 체크를 선택한 요일은 매장의 휴무일로 지정하는 로직을 구현하는 중입니다. @ElementCollection을 활용하여 간단하게 처리하려고 했으나, 추천하시는 방식이 따로 있길래 어떤 식으로 로직을 작성해야 하는지가 너무 궁금해졌습니다. https://www.inflearn.com/questions/21303 1. 위에서 영한님께서 해주신 답변 중, 2번의 경우를 추천하셨기에 2번으로 진행하려고 하였습니다! 혹시 이 경우, 2번 방법을 추천하신 이유가 무엇인지가 궁금합니다!!! 2. 위 링크의 2번 로직으로 코드를 작성하면 다대다 엔티티 매핑이 발생하는데 개인적인 생각에 요일과의 매핑은 단순히 요일과 요일에 엮여있는 매장 ID값만 알면 되는 것 같아 @ManyToMany를 그대로 사용해도 되는 건가?? 라는 생각이 들었습니다. 그대로 사용을 해도 좋은지 아니면 1 : N, N : 1로 풀어주는 것이 좋은지 궁금합니다!!!! 또, 이렇게 요일을 처리하는 구현을 Enum보다 추천하실만한 방법이 있는지, 있다면 어떤 방식인지도 말씀해주시면 감사드리겠습니다!! 날씨가 많이 더운데 더위 조심하시고 폭우 조심하세요! 감사합니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
WebConfig에서 등록하는건 항상 글로벌로 적용되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]WebConfig에서 등록하는 fomatter는 항상 글로벌로 적용되나요? 특정 Controller class에만 적용되게 하거나, Annotation 기반 formatter처럼 특정 method에만 적용되게 할 순 없는건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트코드 회원가입 오류 질문
IllegalStateException 오류가 나는데,yml에 MVCC도 제거했고, h2도 켰는데도 그러네요@Autowired MemberService memberService;@Autowired MemberRepository memberRepository;여기에서 왜 빨간줄이 나는지 잘 모르겠습니다이상해서 MemberRepository와 MemberService도 pdf에서 복사해서 붙여넣어도 그렇습니다(@Service, @Repository 도 되어있습니다)Unit4로 했습니다!
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
경로 질문
안녕하세요 상품 목록 - 타임리프 강의를 보다가 질문드립니다 <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <link href="../css/bootstrap.min.css" rel="stylesheet"> </head> <body> 를 해당 강의에서 <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> <link href="../css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"> </head> <body> 로 변경하셨습니다. @{/css/bootstrap.min.css}가 static/css/bootstrap.min.css경로를 찾게되는것은 https://www.inflearn.com/questions/266792를 보아서 이해하였습니다. 하지만 @{} 작성하지 않고 <link href="../css/bootstrap.min.css" rel="stylesheet">로 작성해도 css 정상적으로 적용되는 것을 확인했습니다. <link href="../css/bootstrap.min.css" rel="stylesheet"> 만 작성해도 templates/css/bootstrap.min.css 가 아닌 static/css/bootstrap.min.css에 접근할 수 있는 이유가 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
API 개발 협업 관련 질문드립니다.
안녕하세요 영한님 스프링 기본편부터 querydsl까지 들으면서 혼자 프로젝트를 진행했었고 이제 사이드 프로젝트를 하면서 다른 프론트엔드 개발자와 협업해보고 싶습니다. 구글링을 해도 원하는 정보를 얻을 수 없어서... 질문을 남겨보려고 합니다. 보통 사이드 프로젝트를 진행하면 백엔드(저)는 제 pc로, 프론트엔드 개발자분은 그 분의 pc로 개발하게 될텐데, 제가 api 개발을 마치고 깃허브에 코드를 올려놓으면 프론트분이 제 코드를 clone해서 프론트분의 로컬 환경에서 api를 테스트하는 메커니즘인가요? 또한 만약 이렇게 테스트하게 된다면, 프론트분은 db이 어떻게 접근하는지, 보통 백엔드는 api만 개발하고 테스트는 하지 않는지도 궁금합니다.
-
해결됨Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
api-gateway 서버를 실행시키고 first-service와 second-service 를 실행시키면 api-gateway가 실행이 잘 안됩니다.
안녕하세요 Spring Cloud Gateway 프로젝트 생성 강의를 진행했는데요 제가 first-service와 second-service 그리고 api-gateway를 모두 Spring Boot 2.6.10 버전 java 11 버전 sdk도 11 로 생성했습니다. 우선 api-gateway의 application.yml 파일은 다음과 같습니다. server: port: 8000eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://localhost:8761/eurekaspring: application: name: apigateway-service cloud: gateway: routes: - id: first-service uri: http://localhost:8081/ # 여기로 요청할거다. predicates: # 조건절이다. - Path=/first-service/** # 사용자가 이걸호출하면 위에 uri로 간다. 즉 http://localhost:8081/first-service/** 으로 간다. - id: second-service uri: http://localhost:8082/ # 여기로 요청할거다. predicates: # 조건절이다. - Path=/second-service/** # 사용자가 이걸호출하면 위에 uri로 간다. first-service의 application.yml 파일은 다음과 같고 server: port: 8081spring: application: name: my-first-serviceeureka: client: fetch-registry: false register-with-eureka: false FirstServiceController는 다음과 같습니다. @RestController@RequestMapping("/first-service")public class FirstServiceController { @GetMapping("/welcome") public String welcome() { return "Welcome to the First service"; }} 또한 second-service의 application.yml은 다음과 같고 server: port: 8082spring: application: name: my-second-serviceeureka: client: fetch-registry: false register-with-eureka: false SecondServiceController는 다음과 같습니다. @RestController@RequestMapping("/second-service")public class SecondServiceController { @GetMapping("/welcome") public String welcome() { return "Welcome to the Second service"; }} 브라우저에 http://127.0.0.1:8081/first-service/welcome 을 입력하면 Welcome to the First service가 잘뜨고 http://127.0.0.1:8082/second-service/welcome 을 입력하면 Welcome to the Second service 가 잘 뜹니다. 그런데 http://127.0.0.1:8000/first-sevice/welcome http://127.0.0.1:8000/second-sevice/welcome 을 입력하면 역시나 동일하게 Welcome to the ~ 가 나와야하는데 Whitelabel Error Page 404 에러가 발생합니다... 원인이 무엇일까요? 참고로 api-gateway 서버를 먼저키고 first, second 켜보기도하고 first, second 서버 먼저 키고 api-gateway를 켜보기도했는데 상관없이 똑같은 에러가 발생합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 컴파일러 버전문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 위와같은 에러가 발생합니다. 에러 문구에 17버전 이라고 되어있어 구글링을 통하여 java버전이 제대로 설정되어있지 않음을 파악하고 환경변수 설정을 해주었습니다. 그래도 저 에러가 해결되지않아서 질문드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Whitelabel Error Page 질문
webapp 디렉토리의 index.html과 basic.html이 열리지 않습니다.... 인텔리제이 유료버전을 사용하고 있고 build를 인텔리제이로 바꿔도 봤고, build.gradle에서 tomcat 부분을 주석으로도 해봤는데 모두 출력이 정상적으로 이루어지지 않습니다...오타가 있나 봤는데 오타도 없고, 지웠다가 다시 생성해봐도 동일합니다....ㅠㅠ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
구현체의 개념질문입니다
단순한 개념질문인데... DefaultConversionService 인터페이스는ConversionService인터페이스와 ConverterRegistry인터페이스를 확장한 인터페이스로 보입니다. DefaultConversionService를 ConversionService와 ConverterRegistry의 구현체라고 불러도 될까요??(또는 "DefaultConversionService는 구현체"다 라는 명제가 성립되나요?) 보통 지금까진 "A인터페이스를 implements한 B구현체"는 많이봤는데 위 질문내용은 처음봅니다