묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
event, study 참조
강의 잘 듣고 있습니다! 현재 Event에서 다대일로 study를 단방향으로 참조하고있는데 스터디 모집시에 event쪽이 삭제되지 않아 버그가 생깁니다. 해결법으로는 2가지 생각해봤는데요.양방향관계로 변경 후 Cascade사용단방향으로 유지하지만 스터디종료 메서드에서 event를 수동으로 remove처리1번 방법으로는 엔티티 설계 구조가 깨지니까 2번방법이 나으려나요. 고민이됩니다. 이런 참조 문제가 더 생길것을 방지해 양방향 관계로가는게 더 유연할지가 고민입니다. 아니면 초기설계목표상 모임이 하나라도 존재하면 스터디가 삭제되면안되는것인가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원가입 테스트 Rollback(false) 설정 했는데 h2 db에 데이터 없음.
=====================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]회원가입 테스트 시 Rollback(false)를 설정하고 실행은 정상적으로 되고 log에서도 insert 된 것을 확인할 수 있는데, h2 db 에서는 데이터가 들어와있지 않습니다. 왜 그런걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
assertj 에 해당하는 Assertions 이 import가 상단에 되지 않는이
[질문 내용]ctrl + enter 를 해도 import가 상단에 안되는데 어떻게 해결을 해야할까요? junit 의 Assertions 만 import가 잘됩니다.
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
anonymousAuthenticationFilter 와 AuthorizationFilter 의 로직 순서
SecurityFilterChain 의 순서를 보면 AnonymousAuthenticationFilter 가 먼저이고 AuthorizationFilter 가 맨 마지막에 실행되는 것을 확인했습니다. Anonymous 강의에서 AnonymousAuthenticaionFilter는 authentication이 null 인 경우 AnonymousAuthenticaionToken을 생성하여 익명 사용자로 처리한고 Authentication이 null이 아닌 경우 doFilter()로 다음필터로 넘어간다고 하셨는데.오늘 강의를 보니 anonymousAuthenticationFilter 에는 authenticaion 이 있는지 확인을 하지 않고 authorizationFilter 에서 getContext().getAuthentication() 을 통해 유무를 확인후 없다면 다시 AnonymousAuthenticationFilter 를 통해 AnonymousAuthenticationToken을 생성시켜 할당하는 것 처럼 보이는데 맞을까요?즉 anonymousAuthenticationFilter doFilter() --> AuthorizationFilter getAuthentication() --> anonymousAuthenticationFilter에서 생성
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 부분에서 오류가 납니다.
빌드 부분에서 오류가 납니다.JAVA버젼도 21버젼으로 다시설치했고 경로에 한글도 없는데 왜일까요?답변 부탁드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
오류페이지 404 화면 안나옴
package hello.exception.servlet; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import java.io.IOException; @Slf4j @Controller public class ServletExController { @GetMapping("/error-ex") public void errorEx() { throw new RuntimeException("예외발생"); } @GetMapping("/error-404") public void send404Error(HttpServletResponse response) throws IOException { response.setStatus(404); // 상태 코드 설정 response.getWriter().write("404 오류 발생"); } @GetMapping("/error-500") public void send500Error(HttpServletResponse response) throws IOException { response.setStatus(500); // 상태 코드 설정 response.getWriter().write("500 오류 발생"); } } 이렇게 400오류일 때 페이지를 설정해도 error-404로 들어가면 오류가 발생하고 error-400에 들어가면 404 화면이 나옵니다.application.properties는 이렇게 구성되어있고, html파일은 수업 자료 코드 그대로 가져왔습니다.확인 한번 해주시면 감사하겠습니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost:8080 접속시 로그인
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 localhost:8080 입력했는데로그인 하라고 떠서요.. 혹시 뭐가 잘못된걸까요....?오늘 인텔리제이는 처음 설치해서 사용중이고원래는 sts3을 사용했었습니다..!!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
프로젝트 오픈 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.build.gradle 오픈하니까 이런 에러가 뜹니다.
-
미해결Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
Downstream Mono, Flux가 subscriber인가요?
안녕하세요! 마블 다이어 그램을 보면 upstream Flux나 Mono는 코드상 Flux.just(), Mono.just()를 통해 직관적으로 생산자로 이해가 되는데! Downstream Flux, Mono는 무엇을 의미하는지 이해가 가지 않습니다. Subscriber라고 보면 될까요? 좋은 강의 감사합니다.^^
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프로젝트설정 6분경
자바 23버전으로 스프링사이트에서 다운받고 위처럼 설정하였습니다 run한결과 체크표시는 안뜨고 계속 로딩중 마크로 뜨고 있습니다. 하지만 localhost:8080으로 들어가면 잘 나오긴합니다. 실행멈춤을 하면 밑에 처럼 나옵니다 특별하게 문제 될건 없을까요? 원인은 무엇일까요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
InitBinder 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]복습겸 개인 프로젝트를 하고 있는데요, 로그인과 회원가입을 각각 검증기를 넣어주려고 하는데, 두 가지 검증기를 넣으니 다른 한 쪽에서는 오류가 발생합니다. 예를 들어, 로그인 페이지에 들어갈 경우에는 java.lang.IllegalStateException: Invalid target for Validator [com.weblibrary.domain.user.validation.JoinValidator@135416b2]: LoginUserDto(username=null, password=null) 이런 식입니다. supports에 해당하지 않으면 무시하는 게 아니라, 예외가 발생하는 걸까요? 이런 경우 어떻게 해결하는 게 좋을까요? package com.weblibrary.domain.user.controller; import com.weblibrary.domain.user.model.JoinUserDto; import com.weblibrary.domain.user.model.LoginUserDto; import com.weblibrary.domain.user.model.User; import com.weblibrary.domain.user.service.UserService; import com.weblibrary.domain.user.validation.JoinValidator; import com.weblibrary.domain.user.validation.LoginValidator; import jakarta.servlet.http.HttpSession; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; /** * 유저 회원가입 컨트롤러, GET, POST에 따라 다르게 동작. */ @Controller @RequiredArgsConstructor @Slf4j public class AccountController { private final UserService userService; private final LoginValidator loginValidator; private final JoinValidator joinValidator; @InitBinder public void initLoginBinder(WebDataBinder dataBinder) { dataBinder.addValidators(loginValidator); dataBinder.addValidators(joinValidator); } /* join form 보여주기 */ @GetMapping("/join") public String joinForm(Model model) { model.addAttribute("user", new JoinUserDto()); return "home/join"; } /* 회원가입 처리하기 */ @PostMapping("/join") public String join(@Validated @ModelAttribute("user") JoinUserDto user, BindingResult bindingResult) { log.debug("objectName={}", bindingResult.getObjectName()); log.debug("target={}", bindingResult.getTarget()); log.debug("Input User DTO: {}", user); if (bindingResult.hasErrors()) { log.debug("errors={}", bindingResult); return "home/join"; } // 회원가입 후에 홈으로 리다이렉트 return "redirect:/"; } @GetMapping("/login") public String loginForm(Model model) { model.addAttribute("user", new LoginUserDto()); return "home/login"; } /* 로그인 처리하기 */ @PostMapping("/login") public String login(@Validated @ModelAttribute("user") LoginUserDto user, BindingResult bindingResult) { log.debug("objectName={}", bindingResult.getObjectName()); // loginUserDto로 나오고 있었다. @ModelAttribute("user")로 해결 log.debug("target={}", bindingResult.getTarget()); // 정상적으로 LoginUserDto 인스턴스를 찾아옴. log.debug("Input User DTO: {}", user); if (bindingResult.hasErrors()) { log.debug("errors={}", bindingResult); return "home/login"; } // 로그인 후에 홈으로 리다이렉트 return "redirect:/"; } @PostMapping("/signout") public ResponseEntity<String> signOut(HttpSession session) { User user = (User) session.getAttribute("user"); log.debug("login user={}", user); if (user == null) { return new ResponseEntity<>("로그인되지 않았습니다.", HttpStatus.FORBIDDEN); } session.setAttribute("user", null); return new ResponseEntity<>("로그아웃 되었습니다.", HttpStatus.OK); } }
-
미해결Practical Testing: 실용적인 테스트 가이드
헥사고날 아키텍처 질문 있습니다.
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. jpa와 너무 강하게 결합되어 있어 repository 인터페이스를 만든다고 하셨는데그러면 1. repository 인터페이스2. 1의 repository 인터페이스를 구현한 repositoryimpl3. 2의 repositoryimpl에서 사용할 jparepository 이렇게 세 개나 만들어서 사용하는건가요?
-
미해결스프링 핵심 원리 - 기본편
AppConfig의 역할
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]AppConfig의 역할이 여러 서비스를 하나로 조합하는 그런역할인건가요? 마치 application 역할의 facade 랑 비슷한건가요??
-
미해결스프링 핵심 원리 - 기본편
지금 보시는 강의자료 어디서 다운받나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제가 다운 받은건 객체지향 설계와 스프링 밖에 없는데 이번강의나 지난 강의에서 수업때 보여주시는 피피티는 어디서 다운받나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
./gradlew build 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용].\gradlew build를 했더니 오류가 떠요PS C:\Users\chyt7\OneDrive\바탕 화면\study\hello-spring> .\gradlew build> Task :test FAILEDFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':test'.> There were failing tests. See the report at: file:///C:/Users/chyt7/OneDrive/%EB%B0%94%ED%83%95%20%ED%99%94%EB%A9%B4/study/hello-spring/build/reports/tests/test/index.html* Try:> Run with --scan to get full insights.BUILD FAILED in 2s7 actionable tasks: 1 executed, 6 up-to-date
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
DB 테이블명들이 복수형일 때 자바 엔터티 클래스명을 단수로 써야 할지 복수로 써야 할지 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의의 @Table(name = "orders") 이 부분 때문에 궁금한 점이 생겼습니다. @Entity @Table(name = "orders") @Getter @Setter public class Order { . . . }이 경우 데이터베이스에 생성되는 테이블명이 orders로 복수형이 되는데, DB를 설계할 땐 테이블명들을 전부 단수형을 쓰든, 전부 복수형을 쓰든 하나로 전부 통일하는 게 낫다고 들었습니다. 그럼 실무에서 데이터베이스 테이블명을 전부 복수형으로 통일한다면, 자바 코드의 엔터티 클래스 이름은 단수로 하고, @Table을 통해 복수형으로 바꾸게 되나요? 아니면 이 경우 @Table을 일일이 적기 번거로우므로 자바 클래스 이름도 복수형으로 하나요? 즉 예를 들어@Table("items")public class Item {}이런 식으로 모든 엔터티 클래스에 @Table을 통해 복수형 이름을 지정하는지, 아니면 @Table 애노테이션을 안 쓰고public class Items {}이렇게 클래스 이름 자체를 복수형으로 쓰는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
타임리프 에서 겹따옴표 내부에 홀따옴표 이후 변수 표기 방법
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]onclick=겹따옴표 내부에 홀따옴표 이후 변수가 제대로 표현이 안되는데 어떻게 해야 할까요?예를 들어 원하는건 다음과 같습니다.onclick="location.href='/edit/변수'"변수의 형태는 ${item.id} 입니다.아래와 같이 시도를 해보았습니다.th:onclick="|location.href='@{/edit/${item.id}}'|"위와 같이 시도를 해 보았는데 웹페이지 소스보기를 하면 아래와 같이 출력이 됩니다.onclick="location.href='/edit/${item.id}'"홀따옴표 앞에 역슬래시, 백틱 등등 해볼건 다 해보았는데 잘 안되네요. 뭔가 분명히 방법이 있을 것인데요. 조언 부탁 드립니다. 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JDBC URL 연동 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]JDBC 연동 질문입니다. test.mv.db 가 C://USERS/USER/안에 만들어졌습니다. 하지만 인텔리제이에서 url로 진입시에 계속해서 Driver org.h2.Driver claims to not accept jdbcUrl 에러가 뜹니다. 다른 문의들 많이 참고해서 설정들도 꼼꼼히봤고, https://docs.google.com/document/d/1j0jcJ9EoXMGzwAA2H0b9TOvRtpwlxI5Dtn3sRtuXQas/edit?tab=t.0링크에 H2데이터베이스 접속 오류 해결방안2를 그대로 했지만h2콘솔에서는 접속이 잘되는 것 같은데 인텔리제이에서는 url 을 찾지 못하는 것 같습니다. 아래는 코드 입니다. 몇시간째 제자리라서 도움 부탁드립니다ㅜ
-
해결됨비전공자를 위한 Spring MVC 뽀개기 응용
오라클연동방법
선생님 질문있습니다현재 mvc초급편 강의 완료후강의가 좋다고 생각해서 mvc고급편 강의도 등록해서 수강중입니다. h2로 db사용중인데 오라클로 사용하고싶어서 변경하려고 하는데 문제가 생겨서 질문드립니다 zulu21 사용중이므로 ojdbc11.jar 다운받아서 라이브러리에 추가해줬습니다라이브러리 추가 방법은 project우클릭 build path를 통해서 libraries에서 classpath에 addExternal jars를 통해서 ojdbc11를 추가해줬습니다이후 pom.xml에 h2관련 디펜던시를 주석처리 하였고jdbcUtil.java에 Connection getConnection메서드 아래 try {// 연결에 필요한 정보// String user = "system";// String pw = "**";// String url = "jdbc:oracle:thin:@:1521:xe"; // 드라이버를 메모리에 할당Class.forName("oracle.jdbc.driver.OracleDriver"); // 연결된 객체 가져오기conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "system", "**");} catch (ClassNotFoundException e) {System.out.println("드라이버 로딩 실패");// 드라이버 주소가 잘못됨} catch (SQLException e) {System.out.println("연결 실패");// url이 잘못됨} catch (Exception e) {System.out.println("알수 없는 오류");}return conn;위로직을 추가했습니다 추가후 서버 재기동후 테스트결과Cannot invoke "java.sql.Connection.prepareStatement(String)" because "this.conn" is null위 오류가 나타납니다드라이버 로딩이 실패했다고 해서 conn주소 localhost를 ip로 바꿔서 테스트를 해보았는데도 똑같은 오류가 발생합니다 JDBCUtil.java 변경이전에 jdbc설정부터 왠지 잘못된거같은데오라클(디벨로퍼)연동방법 한번 설명해주실수 있나요 ㅠ??그리고 로컬오라클에는 board, users 테이블 모두 생성했고 테이블에 insert도 한 상태입니다.
-
미해결비전공자를 위한 Spring MVC 뽀개기 응용
글 목록 기능 구현 vo 문의요
선생님 안녕하세요 질문있습니다vo.setSearchCondition(searchCondition);vo.setSearchchKeyword(searchKeyword); GetBoardListController를 수정중에 위 setSearchCondition, setSearchchKeyword 를 찾을 수 없다고 하는데 BoardVO에 선언을 해주어야 하는건가요?어디서 선언후 사용해야하는지 잘 모르겠습니다답변주시면 감사하겠습니다