묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
final 과 this
[질문 내용]여기에 질문 내용을 남겨주세요. service 에서 repository 호출 시 final 쓰는 이유 좀 설명해주세요 ㅠ 그리고 this의 의미가 setName(String name){.....} 에서 매개변수로 넘어온 (String name)을 지칭하는 것인가요??
-
미해결ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
해외에서는 웹 어플리케이션 개발할때 프로시저를 더많이 사용하나요?
안녕하세요. 강의를 듣다가 해외에서 프로시저를 사용하는 부분에서 궁금한점이 들어서 질문을 남깁니다.해외의 경우 웹 애플리케이션을 개발할때 전부 프로시저로 개발하거나 비중이 높은 사이트나 회사도 있나요?(범용적으로 유지보수와 가독성을 위해서 적절히 섞어서 사용한다고 알고 있습니다.)만약 프로시저 비중이 높거나 전체를 개발 된 사이트가 있다면 혹시 어떻게 생각하는지 들을 수 있을까요?(저는 별로라고 생각합니다!)
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
폼데이터 GET 요청 시, WhiteLabel 페이지 출력
환경: Mac OS, Spring Boot 3.2.5, Java 17 강의, 문서 코드 그대로 작성했습니다.10:10부터 설명해주시는 폼데이터 GET 요청 시, WhiteLabel 페이지가 출력이 됩니다.반환하는 뷰 이름과 뷰 파일 이름이 매칭이 되지 않는지 확인했고, 무슨 문제인지 감이 잘 잡히지 않습니다. 확인 한 번만 부탁드리겠습니다! 감사합니다
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
리다이렉트시...
1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 내용 들으면서 예시 프로그램 만들어 봤습니다.MemberDTO 에는 회원 가입시 비밀번호 확인 하는 부분이 없습니다. 이때, 비밀번호랑 비밀번호 확인란이랑 같은 것이 입력되었는지 확인하고 싶어서 이렇게 ModelAttribute로 member랑 mbrPwdConfirm을 넘겨 받아서 member의 pwd와 mbrPwdConfirm의 값이 같은지 비교했습니다. 그후 로그인 화면으로 리다이렉트 했는데, 이때, 이렇게 위에 mbrPwdConfirm부분이 쿼리로 나타납니다. singIn 함수에서 mbrPwdConfirm 부분을 제거 하고, request.getParameter("mbrPwdConfirm")을 하면 되긴합니다. 왜 전자의 방식은 안되고 후자의 방식은 되는 지 궁금합니다. 또한, 리다이렉트시 이 부분을 없애고 싶은데, 그러면 modelAttribute 부분을 없애야 하는데... 그러면 signIn함수에서 값을 사용을 못합니다....
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
체크예외를 런타임예외로 변환하는 코드
[질문 내용]해당 영상에서 unCheckedAppTest 클래스 내에서 SQLException을 RuntimeException으로 변환하는 부분을 static class로 생성해서 사용하고 있습니다.<첫 번째 질문>이렇게 체크 예외를 런타임 예외로 바꿀 때 항상 static class로 생성해야 되는지 아니면 try { ~~ } catch(SQLException e) { throw RuntimeException(e); } 이렇게 사용해도 되는지 궁금합니다.<두 번째 질문>체크 예외를 런타임 예외로 바꾸는 부분을 static class로 생성할 때 무조건 해당 체크 예외가 발생하는 클래스에다 생성해야 하는지도 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
value값이 null로 나오는 이유???
[질문 내용]여기에 질문 내용을 남겨주세요.value 값이 왜 null로 나오나요???????????
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
HandlerExceptionResolver 시작 질문있습니다.
잘못된 입력값이라고 나오는데 줄이 되게 길게 나옵니다.혹시 강의처럼 똑같이 나올려면 코드 어느부분을 추가해야하나요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
스프링 DB2 테스트 - 데이터 롤백 오류
findItems()에서 "itemA", "itemB"가 남아있다는 오류가 발생합니다. jdbc:h2:tcp://localhost/~/testcase 로 접속해서 select 해 보면 데이타가 없는데, =jdbc:h2:tcp://localhost/~/test 로 접속해서 select하면 "itemA", "itemB" 가 남아있습니다.(삭제하고 다시 실행해도....). TestDataInit을 실행하는거 같네요??@Bean @Profile("local") public TestDataInit testDataInit(ItemRepository itemRepository) { return new TestDataInit(itemRepository); }링크 :: https://drive.google.com/file/d/1HD2gxtYhL8B5fZ3KazZ148-4x66PPCuo/view?usp=sharing
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
스프링DB 2 :: 테스트 - 데이터 베이스 연동 오류 (원하는 답변이 아닙니다)
Lombok의 @Data 가 @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode 를 만들어주는 애노테이션이라는 건 잘 압니다.제 질문은 왜 스프링DB 2 :: 테스트 - 데이터 베이스 연동 테스트의 save에서 오류가 발생 했었는데, @Getter, @Setter를 @Data 로 바꾼 행위만으로 오류가 발생하지 않게 된 이유를 알려달라는 겁니다. @Getter, @Setter 만 설정하는게 잘 못 된거라면 그 이유가 뭐냐는 걸 문의한겁니다. https://www.inflearn.com/questions/1258907/%EC%8A%A4%ED%94%84%EB%A7%81db-2-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%97%B0%EB%8F%99-%EC%98%A4%EB%A5%98
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
프로젝트 실행 오류 해결 방법 공유 드립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.=========================================헤매다가 해결했는데 다른 분들께 도움이 될 것같아서 커뮤니티에 남깁니다 ㅎ_ㅎ .gradle 폴더 내 6.8.2 파일 삭제(gradle 충돌 방지)gradle/wrapper/gradle-wrapper-.properties 수정distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zipbuild.gradle 파일 수정plugins { id 'java' id 'org.springframework.boot' version '3.2.5' id 'io.spring.dependency-management' version '1.1.4' } group = 'hello' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() } javax -> jakarta 수정// import javax.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
테스트 v3_4와 v4 모두 오류가 발생합니다.
https://drive.google.com/file/d/1n_YIwUiIsidlVs38Oq6rPsBjoO8HgW1T/view?usp=drive_link 강의자료 코드도 복붙해보고 소스파일 올려주신거도 열어봤는데 오류가 발생합니다. h2데이타베이스 내렸다 다시 켜봐도 안됩니다 ㅠ 로그를 보니까 OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended오류가 뜨고 멤버 테이블도 존재하지 않는다고 합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
HandlerExceptionResolver 시작 8분 7초에서 질문입니다.
package com.example.exception.resolver; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import java.io.IOException; @Slf4j public class MyHandlerExceptionResolver implements HandlerExceptionResolver { @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { try { if (ex instanceof IllegalArgumentException) { log.info("IllegalArgumentException resolver to 400"); response.sendError(HttpServletResponse.SC_BAD_REQUEST, ex.getMessage()); return new ModelAndView(); } } catch (IOException e){ e.printStackTrace(); } return null; } } package com.example.exception.api; import lombok.AllArgsConstructor; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.server.ResponseStatusException; @Slf4j @RestController public class ApiExceptionController { @GetMapping("/api/members/{id}") public MemberDto getMember(@PathVariable("id") String id) { if (id.equals("ex")) { throw new RuntimeException("잘못된 사용자"); } if (id.equals("bad")) { throw new IllegalArgumentException("잘못된 입력 값"); } return new MemberDto(id, "hello " + id); } @Data @AllArgsConstructor static class MemberDto { private String memberId; private String name; } } if (ex instanceof IllegalArgumentException) {위에 코드가 "ex" 객체가 IllegalArgumentException 클래스의 인스턴스인지를 확인합니다.근데 ex객체가 어디 선언되어있나요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
스프링DB 2 :: 테스트 - 데이터 베이스 연동 오류
추가 질문입니다. @Data 보다는 @Getter @Setter를 쓰는게 좋다고 하셔서@Getter @Setter를 쓰고 별도 생성자도 만들었는데.......@Getter @Setter를 @Data로 변경 햤을 때 오류가 발생하지 않는 이유를 알려주세요. https://www.inflearn.com/questions/1258907/%EC%8A%A4%ED%94%84%EB%A7%81db-2-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%97%B0%EB%8F%99-%EC%98%A4%EB%A5%98
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
서블릿 필터 - 인증 체크 강의 질문있습니다.
18분 4초에서 6초 사이 로그인 하면 상품목록으로 바로 보여야 하는데 제코드는 홈 화면으로 갑니다.return "redirect:"+redirecURL;를 작성하면 로그인 전화면이 보여줘야 하는데 안보여집니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
서블릿 필터 - 인증 체크 질문입니다.
public class LoginController { private final LoginService loginService; private final SessionManager sessionManager; @PostMapping("/login") public String loginV3(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletRequest request) { if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); if (loginMember == null) { bindingResult.reject("loginFail", "아이디 또는 비밀번호가 맞지 않습니다."); return "login/loginForm"; } //로그인 성공 처리 //세션이 있으면 있는 세션 반환, 없으면 신규 생성 HttpSession session=request.getSession(); //세션에 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER,loginMember); return "redirect:/"; }@Slf4j public class LoginCheckFilter implements Filter { private static final String[] whitelist={"/","/members/add","/login","/logout","/css/*"} @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest=(HttpServletRequest) request; String requestURI = httpRequest.getRequestURI(); HttpServletResponse httpResponse=(HttpServletResponse) response; try{ log.info("인증체크 필터 시작{}",requestURI); if (isLoginCheckPath(requestURI)){//화이트 리스트가 아닐 때 true반환 로그인 상태가 필요한 사이트이라면 log.info("인증체크로직실행{}",requestURI); HttpSession session = httpRequest.getSession(false); if (session==null || session.getAttribute(SessionConst.LOGIN_MEMBER)==null){ log.info("미인증 사용자 요청{}",requestURI); //로그인으로 redirect httpResponse.sendRedirect("/login?redirectURL="+requestURI);//로그인 되면 다시 반환된 페이지로 로그인 return; } } //화이트 리스트일 때 chain.doFilter(request,response); }catch (Exception e){ throw e;//예외 로깅 가능하지만, 톰캣까지 에외를 보내주어야 한다. }finally { log.info("인증체크필터종료{}",requestURI); } { } }public String loginV3( 안에 HttpSession session=request.getSession(); 세션이 없으면 무조건 생성인데요.class LoginCheckFilter는 httpRequest.getSession(false);이거는 왜 false인가요? 로그인과 관련된 페이지 잖아요. 로그아웃의 경우 없애버릴꺼여서 세션을 만들지 않는것까지 이해했는데요.
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
예외를 전환할떄 기존 예외 포함이 무슨 말인가요?
체크예외에서 런타임 예외로 변경할 때 cause 생성자를 포함 해야한다는 의미인건가요? 그리고 기존 예외가 포함된다는게 어떤 말인지 잘 모르겠습니다. 어떻게 기존 예외가 포함이 되는건가요? 또 예외출력 로그를 보고 어디가 문제인지 어떻게 판단하고 수정을 하는건가요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
중요한 런타임 예외를 안잡아주면 시스템은 어떻게 되나요?
예시로 설명해주신 NetworlClient클래스의RuntimeConnectionEx 예외를 실제 시스템에서 잡지 않고 무시하면 서비스를 이용하는 고객들에게 어떤 문제가 발생하였는지 인지 시켜줄 수 없게되고 고객들은 연결이 안되는 서비스를 무한 로딩한 상태로 대기 하게 되는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.다음과 같은 오류가 발생하는데 어떻게 해결하나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
웹 프로젝트가 아닌 앱 프로젝트를 할 떄도 spring web을 사용하나요?
강의 내용이 어려워서 다시 마음 잡을겸 처음부터 보고 있습니다.강의 내용을 들으면서 앱도 웹 기반 동작을 하기 때문에 벡엔드 개발은 클라이언트에 의존하지 않는다고 이해 하였는데 웹 개발이 아닌 앱 개발을 할때도 start.spring.io 사이트에서 spring web을 다운 받으면 되는건가요?+ 현제 스프링 db1편을 수강중인데 db2편까지 수강을 마치면 db연동까지 가능한(동시에 여러 사용자가 사용하는) 프로젝트를 개발하는것이 가능한가요? 아니면 나머지 강의인 스프링 고급과 핵심원리 활용까지 수강을 하여야 하나요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
스프링DB 2 :: 테스트 - 데이터 베이스 연동 오류
저는 데이터를 새로 생성해서 테스트를 했는데, save와 finditems 두 군데 모두 오류가 발생합니다. 링크 :: https://drive.google.com/file/d/1i7i95iRprKTD08l5TuPj1iCOAVPDvNTT/view?usp=sharing save 오류 :: org.opentest4j.AssertionFailedError: expected: hello.itemservicedb.domain.Item@a2df0d5 but was: hello.itemservicedb.domain.Item@26d028f7 finditems 오류 :: org.opentest4j.AssertionFailedError: Expecting actual: [hello.itemservicedb.domain.Item@4cc26df, hello.itemservicedb.domain.Item@7848321e, hello.itemservicedb.domain.Item@f4f843f, hello.itemservicedb.domain.Item@7b5833ee, hello.itemservicedb.domain.Item@1e471884, hello.itemservicedb.domain.Item@27261190, hello.itemservicedb.domain.Item@543b0737]to contain exactly (and in same order): [hello.itemservicedb.domain.Item@6e46891d, hello.itemservicedb.domain.Item@48632f69, hello.itemservicedb.domain.Item@5fde1d64]but some elements were not found: [hello.itemservicedb.domain.Item@6e46891d, hello.itemservicedb.domain.Item@48632f69, hello.itemservicedb.domain.Item@5fde1d64]and others were not expected: [hello.itemservicedb.domain.Item@4cc26df, hello.itemservicedb.domain.Item@7848321e, hello.itemservicedb.domain.Item@f4f843f, hello.itemservicedb.domain.Item@7b5833ee, hello.itemservicedb.domain.Item@1e471884, hello.itemservicedb.domain.Item@27261190, hello.itemservicedb.domain.Item@543b0737]