묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
강의 6강 질문
CalculatorMultiplyRequest DTO에서 다음과 같이 final을 붙여주면, postman에서 send 버튼 눌렀을 때 에러가 표시되는데 왜 그런지 알 수 있을까요?!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
GetMapping("") 대신 ("/") 를 사용?
16강 "홈 화면 추가" 강의를 듣고 있는데, @GetMapping("/")으로 기본 홈 페이지를 만드는데 사용하셨습니다. @GetMapping("") 으로 사용해도 되는지 궁금해서 해보니까 가능한 것을 확인했습니다.@GetMapping("") 대신에 ("/") 를 사용해야 되는 이유가 혹시 있는지, 아니면 둘 중 아무거나 사용해도 상관은 없는지 궁금합니다.
-
미해결스프링 시큐리티
Account 객체 형변환 오류 문의드립니다
실전프로젝트 강의 듣고 있습니다.접근권한 관련해서 오류가 있어서 문의 드립니다.authentication.getPrincipal() 을 Account 로 형변환시 오류가 발생하네요.값들을 찍었을 때 아래와 같이 나옵니다. 1. accountContext.getAccount() : Account(Id=1, username=user, password={bcrypt}$2a$10$Uh4Z9AZmSNzdke9QgvawxODb0pK2vwV2xzrMS9EgXGzICO54WoIU2, email=abc@gmail.com, age=99, role=ROLE_USER)2. authentication.getPrincipal() : io.security.corespringsecurity.security.service.AccountContext [Username=user, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, credentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[ROLE_USER]] getPrincipal() 에 관련없는 텍스트가 나와서 그런지 잘모르겠군요. => 'io.security.corespringsecurity.security.service.AccountContext'어떤 이유에서 오류가 발생하는지 답변 부탁드려요~ @GetMapping(value={"/denied", "/api/denied"})public String accessDenied(@RequestParam(value = "exception", required = false) String exception, Model model){Authentication authentication = SecurityContextHolder.getContext().getAuthentication();// 형 변환이 안되네요.Account account = (Account) authentication.getPrincipal();model.addAttribute("username", account.getUsername());model.addAttribute("exception", exception);return "user/login/denied";}
-
미해결[개념은 호옹~, 실습 빡] 스프링 부트, 입문!
강의수강 연장이 가능할까요?
안녕하세요 강사님 지난 연말연초에 일이 있어 그동안 강의를 많이 듣지 못했는데 강의가 오늘까지더라구요. 혹시 수강기간 연장이 가능할까요? 꼭 완강하고 싶습니다..
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
flush() 전에 Insert 쿼리 출력되는 현상
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]강의에서는 flush()를 호출하기 전에는 insert 문이 나가지 않는다고 하셨는데, 저 같은 경우에는 위와 같이 작성해도 insert 문이 콘솔에 출력됩니다. 이유가 궁금합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
ArrayList API 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]ArrayList<> 객체의 인수로 store.values()를 넣고 return 하게되면 어떤 알고리즘으로 store에 저장된 데이터들이 반환되는지 궁금합니다!해당 ArrayList의 API를 보면이런 식으로 구성돼있는 것을 확인할 수 있었는데 이게 무슨 뜻인지 이해가 잘 가지 않아서 여쭤봅니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
트랜잭션 롤백 시 Insert 쿼리
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.위와 같이 테스트를 구현하고 테스트 실행 시 Insert 쿼리가 나갑니다. 그런데 예외가 발생했기 때문에 롤백이 되어서 또는 테스트의 트랜잭션 디폴트 값이 Rollback이라서 Insert 쿼리가 나가지 않아야 하는 것 아닌가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Task :test FAILED이 뜹니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]gradlew build를 하면 이런 에러가 발생합니다. 인텔리제이 설정에서 build Tools > Run tests using 항목을 IntelliJ IDEA로 변경을 해보았으나 에러는 동일하게 발생했지만 해결책을 모르겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
index.html의 href 경로가 C:/로 연결됩니다.
index.html의 href 경로가 localhost:8080/hello로 연결되지 않고 C:/hello로 연결되어서원하는대로 작동하지 않습니다. 제가 뭘 놓친 걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 주문 에서 Submit 버튼 누를시 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 상품 주문에 정보를 입력하고 submit 버튼을 누르면 Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported] 오류가 발생합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
MSA에서 데이터를 가져오는 방법
MSA에서 다른 어플리케이션의 데이터를 가져오는 방법으로 RestTemplate, FeignClient를 사용하는 방법을 알려주셨는데요.데이터를 가져오는 것은 보통 rest 통신을 사용하여 가져오나요?실무에서 카프카나 다른 라이브러리를 사용해서 가져오는지, 아니면 설명해주신 것 처럼 rest 통신을 통해 가져오는지 궁금합니다~
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
build.gadle 파일 오픈시 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]프로젝트 생성 시에 아래와 같은 오류가 발생합니다
-
미해결스프링 시큐리티
ExceptionTranslationFilter가 하는 역할에 대해서 질문합니다.
이번 강의 초반에구분 사항인증 예외가 발생하면 해당 필터, 지금 같은 경우는 UsernamePasswordAuthenticationFilter가 받아서 처리를 하고인가 예외는 ExceptionTranslationFilter가 처리 한다.라고 설명해주셨는데요.앞서 개념 강의 예외 처리 및 요청 캐시 필터 : ExceptionTranslationFilter, RequestCacheAwareFilter9) 인가 개념 및 필터 이해 : Authorization, FilterSecurityInterceptor에서는 인증 예외와 인가 예외 모두 ExceptionTranslationFilter가 받는다고 설명해주셔서 혼란이 옵니다. 어떤 것이 맞는 설명인가요? Access Denied 는 인가 예외인데 강의 제목이 인증 거부 처리 - Access Denied 입니다. 인가 거부 처리 - Access Denied로 바꾸는 게 맞지 않나요? 그렇게 중요한 문제는 아닌 듯 합니다만, 제가 제대로 알고 있나 확인하는 차원에서 질문드립니다. 이렇게 2개 질문 드리고요. 좋은 강의 감사드립니다. 덕분에 도움이 많이 되고 있습니다. 답변 부탁드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JUnit 관련 질문드립니다!
https://drive.google.com/file/d/1unGqgPSn0E7OZF838uysk3upX7nTwUjR/view?usp=share_link회원 리포지토리 테스트 케이스를작성하던 중 버전 문제인지 사진과 같은 에러가 발생해서 질문 남깁니다!
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Spring Security 최신버전(Spring Boot 3.X.X 대)의 WebSecurity 설정 공유드립니다.
최신버전으로 진행하다보니 막혔었는데요. 구글링, ChatGPT 등을 통해서 동작하는 코드 공유드립니다.정확한 구현은 아닐 수 있겠지만, 강의를 진행하는 데는 문제 없는 것 같습니다. 참고만 부탁드려요~ package com.example.userservice.security; import com.example.userservice.service.UserService; import lombok.RequiredArgsConstructor; import org.springframework.boot.autoconfigure.security.servlet.PathRequest; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.ObjectPostProcessor; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.util.matcher.IpAddressMatcher; @Configuration @EnableWebSecurity @RequiredArgsConstructor public class WebSecurity { private final UserService userService; private final BCryptPasswordEncoder bCryptPasswordEncoder; private final ObjectPostProcessor<Object> objectPostProcessor; private static final String[] WHITE_LIST = { "/users/**", "/", "/**" }; @Bean protected SecurityFilterChain config(HttpSecurity http) throws Exception { http.csrf().disable(); http.headers().frameOptions().disable(); http.authorizeHttpRequests(authorize -> { try { authorize .requestMatchers(WHITE_LIST).permitAll() .requestMatchers(PathRequest.toH2Console()).permitAll() .requestMatchers(new IpAddressMatcher("127.0.0.1")).permitAll() .and() .addFilter(getAuthenticationFilter()); } catch (Exception e) { e.printStackTrace(); } } ); return http.build(); } public AuthenticationManager authenticationManager(AuthenticationManagerBuilder auth) throws Exception { auth.userDetailsService(userService).passwordEncoder(bCryptPasswordEncoder); return auth.build(); } private AuthenticationFilter getAuthenticationFilter() throws Exception { AuthenticationFilter authenticationFilter = new AuthenticationFilter(); AuthenticationManagerBuilder builder = new AuthenticationManagerBuilder(objectPostProcessor); authenticationFilter.setAuthenticationManager(authenticationManager(builder)); return authenticationFilter; } } 이렇게 하시고 중요한 것이, Login Form을 사용하지 않기 때문에 AuthenticationFilter 클래스의 Override 메소드 중 successfulAuthentication 메소드 내부에super.successfulAuthentication(request, response, chain, authResult);코드가 작성되어 있다면, 아래처럼 제거 또는 주석 처리를 꼭 해야 합니다! (다른 질문 글에서 발견하였습니다, 공유 감사드립니다.)하지 않은 경우 에러가 발생하며 login 요청이 제대로 동작하지 않습니다. package com.example.userservice.security; import com.example.userservice.vo.RequestLogin; import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import java.io.IOException; import java.util.ArrayList; public class AuthenticationFilter extends UsernamePasswordAuthenticationFilter { @Override public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException { try { RequestLogin creds = new ObjectMapper().readValue(request.getInputStream(), RequestLogin.class); return getAuthenticationManager().authenticate( new UsernamePasswordAuthenticationToken( creds.getEmail(), creds.getPassword(), new ArrayList<>() ) ); } catch (IOException e) { throw new RuntimeException(e); } } @Override protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response, FilterChain chain, Authentication authResult) throws IOException, ServletException { //super.successfulAuthentication(request, response, chain, authResult); } }
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
git push 중에 에러가 발생합니다.
git push 중에 다음과 같은 에러가 발생햡니다.error: src refspec master does not match anyerror: failed to push some refs to 'https://github.com/kparkjun/library-app.git'
-
해결됨스프링 부트 - 핵심 원리와 활용
uuid 로깅과 쓰레드 ID 로깅
안녕하세요! 강의를 실무 모니터링 팁을 듣던 중 궁금증이 생겨 질문드립니다.현재 logback에서 로그를 찍을 때 [%thread] 패턴으로 쓰레드ID를 기록하도록 해서 사용하고 있었는데 추가로 MDC를 사용한 필터로 uuid도 기록하는게 좋을까요? 아니면 두 방법 중 하나만 선택해서 사용해도 충분할까요?실무에서는 어떤 방법이 더 좋은지 궁금합니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew 용어 인식 불가
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요../gradlew는 잘 되는 것 같은데 grdlew를 작성하니 gradlew : 'gradlew' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오.오류가 발생합니다. 어떤 점이 문제인지 파악하지 못해 질문을 올립니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
서버와관련해서 질문
보통 AWS를 이용해서 서버를 임대해서 웹사이트를 개설하잖아요? 개인용 소규모 웹사이트를 운영한다고쳤을때 집에다 만약 PC한대를 서버로 돌린다쳤을때그런경우는 AWS를 사용할필요가없잖아요?이런경우에 배포하는방법은 알려주실수없으신지?집에 따로 서버용 PC를 구축해서 개인용 소규모 웹사이트를 운영했을경우 배포는 어떻게해야할지 궁금해지네요 AWS는 사용하면 할수록 요금이 청구가되니 ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
13분에 나오는 main 런 눌렀는데
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요?예[질문 내용]여기에 질문 내용을 남겨주세요.이렇게 뜹니다뭘 고쳐야 할까요?ㅠㅠ