묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
화면 한글깨짐 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.인텔리 제이에서 한글 깨짐 문제 정상적으로 한글 값이 저장되는거 같습니다. 하지만 화면에 표시할 때 오류가 발생합니다. 인텔리 제이 인코딩 설정 은 다음과 같습니다
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
Rest API - 많이하는 실수 에서 복수형
회사 컨벤션마다 다르긴한데 생각보다 단수로도 많이 사용하지 않나요? 단일 데이터를 생성하는것과 여러 데이터를 생성하는 것을 구분하는 경우도 많은 것으로 알고있습니다. 실제로 naver, kakao의 많은 부서에서도 이런 컨벤션을 지키는것으로 아는데 반드시 복수형으로 쓰면 안되는것일까요? 참고 공식자료가 있을까요?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
강의 버전 정보
프로그램 버전 정보가 없는데 어디서 찾아요?
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
프로젝트 실행 에러
안녕하세요?강의는 이미 구입하였으나 그동안 다른일로 바빠서 수강을 미루다가 이제서야 들을려고 하는데 공유해주신 샘플 프로젝트를 다운받아서 실행할려고 하니 다음과 같은 에러가 발생해서 문의드립니다.Execution failed for task ':com.group.libraryapp.LibraryAppApplication.main()'.> Process 'command 'C:/Program Files/Amazon Corretto/jdk17.0.14_7/bin/java.exe'' finished with non-zero exit value 1다른 버전의 JDK나 아마존에서 배포하는 JDK를 다운받아서 실행해보아도 동일한 에러가 계속 반복되어서 문의드립니다. 참고로 사용중인 IDE는 IntelliJ IDEA 2024.3입니다. 감사합니다.
-
해결됨Practical Testing: 실용적인 테스트 가이드
stubbing을 해줘야 하는 이유
안녕하세요https://inf.run/QwLTR위의 링크와 연계되는 질문입니다. 복습을 하다 보니 언제 when()으로 stubbing 을 해 줘야할까에 대해 헷갈려져서, 저의 사고 흐름을 정리해봤습니다컨트롤러에서는 서비스 단 하위로는 모킹을 한다.모킹하는 객체들은 테스트에서 주 관심사가 아니며, 항상 잘 동작한다고 가정한다.모킹해오는 객체들은 stubbing을 해주지 않는다면 기본 값들을 반환하는 정책을 따른다.위 질문 링크의 "판매 상품을 조회한다." 테스트에서는 모킹 객체인 productService의 메소드가 어떤 리턴값을 반환하든 presentation 레이어에서 검증하고 싶은 내용이 아니기 때문에, 검증을 수행하지 않았고, productService.getSellingProducts()에 대한 stubbing도 굳이 필요 없다."메일 전송 테스트" 에서 mailSendClient.sendEmail()에 대한 stubbing이 필요한 이유모킹 객체인 mailSendClient.sendMail()이 기본 값 반환 정책이 false이어서, 테스트 하고자 하는 mailService.sendMail()에 영향을 미치기 때문이다. (여기서 기본 값 반환 정책이 true였다면 굳이 stubbing 해주지 않아도 된다 -> "메일 전송 테스트"에서 검증하고자 하는 대상이 아니기 때문에)이런식으로 테스트에 검증하고자 하는 대상에 집중하다 보면 모든 동작을 제대로 stubbing했다고 보장하기 어려워 진다 -> Mockist의 치명적인 단점 제가 정리해 본 내용이 적절한지 알려주시면 감사합니다.테스트의 세계는 정말 헷갈리네요..
-
미해결Practical Testing: 실용적인 테스트 가이드
테스트코드 범위
안녕하세요 선생님 질문이 생겨서 글 남깁니다.! 선생님이 생각하시는 가장 이상적인 테스트 코드 범위는 어디 까지인가요??예를들어 controller,service,repository가 있다고 가정하고 선생님 강의처럼 각각 레이어별로 테코를 짜고 service 쪽도 repo를 mock처리하여 단위테스트까지도 진행 하여야하나요?제 질문을 정리하자면 controller,service,repository 각각 단위테스트 작성후 service + repo로 통합테스트 하는게 옳은 이상적인 범위인가 궁금합니다감사합니다
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
UserDetailsService()에서 UserDetail이 아닌 타입을 반환할 수 있나요?
UserDetailsService()을 커스텀으로 만든 후에 UserDetail이 아닌 타입을 반환할 수 있나요? 아니면 UserDetail의 멤버변수들 뿐 아니라 더욱 많은 멤버 변수들을 추가해서 사용해도 문제가 없나요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
최악이라 하셨던 jsonignore
여기 강의 섹션2.API개발 기본-회원조회 강의에서는 @jsonIgnore 사용은 최악이라고 하셧거든요. 이유도 납득갔습니다. 그런데,섹션4.API개발 고급-간단주문 조회 V1에서는 최악이라고 하셨던 @jsonIgnore를 쓰시는데 . 어떻게 받아들이면될까요??최악이라고 하셨는데 ,나중에 사용하셔서 학습자입장에서 띠용했습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
User import문 자동으로 추가하는 키
8강에서 import문 자동으로 추가하는 키가 뭘까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
7강 패키지 관련
혹시 패키지를 dto랑 controller랑 나누는 이유가 뭔가요?
-
미해결스프링 핵심 원리 - 기본편
CoreApplication 실행 안 됨
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.jdk도 다 맞게 설정한 거 같은데 왜 실행이 안 될까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
whitelabel error page 500
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 회원목록 화면 들어가면 저렇게 Whitelabel Error Page가 뜹니다. properties에 username도 추가했고, localhost로도 바꿨는데 계속 안되네요 ㅠ 조언 부탁드립니다ㅠ!
-
미해결
org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing 오류
스프링부트에서 Thymeleaf를 이용해 회원가입 폼을 만들고 있는데 폼에 입력을 제대로 하면 의도한대로 회원가입이 잘 됩니다.하지만 폼에 아무것도 입력하지 않으면 유효성 검사에서 @NotBlank를 만나서 그에 맞는 에러 메시지를 출력해야 하는데 저렇게 오류가 뜨네요... 대체 이유가 뭘까요 ㅠㅠ 제 회원가입 코드는 다음과 같습니다. User.java (Entity)@Getter @Setter @Builder @NoArgsConstructor @AllArgsConstructor @Entity(name="users") //테이블 이름 public class User { @Id //기본키 = userid @GeneratedValue(strategy = GenerationType.IDENTITY) private long userid; @Column(unique = true) //아이디 중복 방지 private String username; private String password; @Column(unique = true) //이메일 중복 방지 private String email; } RegisterDTO.java (DTO)@Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class RegisterDTO { @NotBlank(message = "아이디를 입력하세요.") private String username; @NotBlank(message = "비밀번호를 입력하세요.") private String password; @NotBlank(message = "이메일을 입력하세요.") private String email; } UserController.java (컨트롤러)@Controller @RequiredArgsConstructor public class UserController { private final UserService UserService; @GetMapping("/register") // 유저 등록 창 불러오기 public String ShowRegister(Model model) { model.addAttribute("userDTO", new RegisterDTO()); return "register"; } @PostMapping("/register") // 유저 등록 public String Register(@Valid RegisterDTO userDTO, BindingResult result, Model model) { if (result.hasErrors()) { // 유효성 오류 발견 System.out.println("유효성 오류"); return "register"; } try { UserService.saveDTOUser(userDTO); // 유저 등록 } catch (IllegalArgumentException e) { // 중복된 사용자 발견 System.out.println("예외 처리"); model.addAttribute("error", e.getMessage()); return "register"; } return "redirect:/userlist"; } } UserService.java (서비스)@Service @RequiredArgsConstructor public class UserService { private final UserRepository userRepository; public void saveDTOUser(RegisterDTO userDTO) { if (userRepository.existsByUsername(userDTO.getUsername())) { throw new IllegalArgumentException("이미 등록된 아이디입니다."); } if (userRepository.existsByEmail(userDTO.getEmail())) { throw new IllegalArgumentException("이미 등록된 이메일입니다."); } User user = User.builder() .username(userDTO.getUsername()) .email(userDTO.getEmail()) .password(userDTO.getPassword()) .build(); userRepository.save(user); } } register.html<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Register User</title> </head> <body> <h1>Register User</h1> <form th:action="@{/register}" method="post" th:object="${userDTO}"> <label for="username">username:</label> <input type="text" id="username" name="username" th:field="*{username}" /> <div th:if="${#fields.hasErrors('username')}" th:errors="*{username}"></div> <br> <label for="password">Password:</label> <input type="password" id="password" name="password" th:field="*{password}" /> <div th:if="${#fields.hasErrors('password')}" th:errors="*{password}"></div> <br> <label for="email">email:</label> <input type="text" id="email" name="email" th:field="*{email}" /> <div th:if="${#fields.hasErrors('email')}" th:errors="*{email}"></div> <br> <div th:if="${error}" class="error"> <p th:text="${error}"></p> </div> <button type="submit">Register</button> </form> <br> <a th:href="@{/userlist}">Back to User List</a> </body> </html> 컨트롤러에서 작성한 "유효성 오류", "예외 처리" 구문은 잘 나오더라구요. 그러면 유효성 검사는 잘 수행하는거 아닌가요?
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
패키지 구조에 대한 질문
요즘 가장 많이 쓰는 패키지 구조가 있죠. 아래와 같이 레이어끼리만 모아둔과연 이것이 좋은 패키지 구조일까요? 더 좋은 코드를 위해 추천하는 패키지 구조나 레퍼런스가 있는지 여쭤보고 싶습니다.
-
미해결스프링 핵심 원리 - 기본편
spring 3.x 버전 오버라이딩 로그 변화
안녕하세요. 정말 궁금한 부분이 있어서, 질문 글을 올리게 되었습니다. 결론부터 말하면 오버라이딩 로그가 최신 버전에서는 다르게 출력되고 앞으로 이런 변하는 어떡해 알아가야 하나요? 강의에서는 스프링부트 2.x 버전으로 되어있어 오버라이딩 메시지가 명확합니다. ㄴ 빈에서 오버라이딩이 발생하면 메시지로 명확하게 알려줌하지만 개인 프로젝트에서는 스프링부트 버전은 3.x로 되어 있어서 오버라이딩 메시지가 명확하지 않습니다. ㄴ 명확하게 오버라이딩 메시지가 나타나지 않고, 다른 메시지로 표기됨 스프링 부트를 다운그레이드 하여 2.x로 하면 명확한 오버라이딩 메시지를 확인가능 하지만 업그레이드를 3.x로 진행하면 명확한 오버라이딩 메시지를 확인할 수 없습니다. 아주 사소한 변화라고 생각할 수 있지만, 이러한 변환된 정보는 어떡해 얻을 수 있을까요?spring 공식문서를 뒤적 거려봤지만 해당 내용을 쉽게 찾을 수 없습니다. 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
9:28 패턴 3의 경우 마지막으로 설정한 것만 적용되는 것 같습니다.
스프링 부트 3.4.3, 스프링 시큐리티 6.4.3 기준입니다.다음과 같이 설정하게 되면 api/**는 적용되지 않고 oauth/**에만 적용됩니다.http.securityMatchers(matchers -> matchers.requestMatchers("/api/**") ) .securityMatchers(matchers -> matchers.requestMatchers("/oauth/**") );
-
미해결Practical Testing: 실용적인 테스트 가이드
findProductsBy 메소드에서 왜 Map 을 만들어 찾는지 잘 이해가 안됩니다
private List<Product> findProductsBy(List<String> productNumbers) { return productRepository.findAllByProductNumberIn(productNumbers); } 그냥 이렇게 바로 리턴 해도 되지 않나요??
-
해결됨Practical Testing: 실용적인 테스트 가이드
MockBean Deprecated
@MockBean 이 Spring Boot 3.4.0 버전부터 Deprecated 되었다고 경고를 띄워주는데요이런 경우 @MockitoBean 을 사용하면 되나요?
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
PDF 문서에 오타가 있어서 알려드립니다.
PDF 문서에 오타가 있어 알려드립니다. divideTest()인데 minus(3)으로 되어 있습니다.
-
미해결스프링부트 시큐리티 & JWT 강의
Jwt쓰면 스프링시큐리티는 필수적으로 사용해야하나요?
소셜 로그인을 가지고있는 서비스를 만들고있는데 jwt를 도입하려고 합니다oauth2와 시큐리티는 안쓰고 API호출로만 소셜로그인은 완료했습니다JWT강의 듣는데 시큐리티쓰시길래 혹시 꼭 필요한건지 궁금합니다!