묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
테스트에서 select 로그가 노출안되는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 테스트 케이스 중 save() 테스트와 updateItem()테스트에서 itemRepository.findById를 호출하는 부분이 있습니다.itemRepository.findById(item.getId()).get();이 경우 select 쿼리가 나가는 걸로 알고 있는데 로그에는 노출되지 않습니다.1) save()2) updateItem()강사님 화면에도 노출되지 않던데 그 이유가 있을까요??
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
RDBMS 락과 비스니스 로직 전체에 대한 락 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 영한님.항상 좋은 수업 감사합니다. 이번 수업을 통해 MySQL 또는 Postgresql와 같은 대중적인 RDBMS의 경우,서로 다른 세션에서 시작된 서로 다른 트랜잭션에서 동시에 동일 테이블의 동일 row에 대해 write operation을 수행할 때에는,별도의 Pessimistic Lock등을 사용하지 않더라도,RDBMS에서 제공해주는 기본 락이 걸리는 것으로 이해했습니다.그럼에도 불구하고 상품 주문시 상품의 재고를 감소시키는 등의,비즈니스 로직 단위의 레이스 컨디션 문제의 경우,select 후 udpate를 하게 되는데그 select에서 update되기 전 값을 읽어온다면,(read operation에 대해서는 rdbms 기본 lock이 안걸리니깐)여기서 레이스 커디션 문제가 발생하므로,비즈니스 로직 단위의 레이스 컨디션 문제를 막고자 한다면DB 락 or 레디스 등 별도의 솔루션을 적용해야 하는 것으로 이해했는데요,제가 이해한 내용이 맞을지 질문 드립니다. 감사합니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
예외를 처리하는 부분에있어서 질문있습니다!
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]예외를 던지거나 잡아서 처리한다는 내용에 대해 질문이 있는데요.. 어떻게 예외를 처리해야하는지 그 부분이 현재까지 본 강의로는 조금 추상적이라 이해가 부족한데 혹시 조금더 설명 해주실수 있으실까요? try catch 를 이용해서 예외 발생시 롤백을 하고 어떤 응답값을 리턴한다 같은 처리를 이야기 하는걸까요?만약 그렇다면 @Transactional을 하는 경우는 롤백은 되지만 응답에 대한 처리는 어떻게 할 수 있을까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
섹션1. 빌드하고 실행하기
이번 강의는 처음부터 이해가 가지않습니다..ㅠㅠ명령 프롬프트를 실행해서 이것저것 해봤는데 어떻게 빌드하고 실행하는지 모르겠습니다.그리고 왜 자바가 아니라 이렇게 외부에서 하는지도 이해가 되지 않습니다ㅠㅠ 완전 뉴비라서 콘솔로 이동하라는게 어디로 이동하라는 건지, 명령 프롬프트가 뭘하는지도 잘 모르기에... 이번 강의는 하나도 이해가 되지 않았습니다ㅠㅠ어떻게 해야하는지 알려주시면 감사하겠습니다!! 아래는 제가 명령 프롬프트에서 실행했을때 메시지입니다.((C:\Users\IDEAPAD>./gradlew'.'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다.C:\Users\IDEAPAD>gradlew.bat'gradlew.bat'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다.C:\Users\IDEAPAD>./gradlew'.'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다.C:\Users\IDEAPAD>cd study지정된 경로를 찾을 수 없습니다.C:\Users\IDEAPAD>E:\Spring-start'E:\Spring-start'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다.C:\Users\IDEAPAD>cd Spring-start지정된 경로를 찾을 수 없습니다.))
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인 처리하기 - 직접 만든 세션 적용 질문있습니다.
로그인 처리하기 - 직접 만든 세션 적용 3분 51초 부분에 요.public class HomeController {public String homeLoginV2(HttpServletRequest request, Model model){//세션 관리자에 저장된 회원 정보 조회Member member=(Member)sessionManager.getSession(request);//Object이기 때문에 member로 캐스팅 한다. SessionManager코드 중 public Object getSession(HttpServletRequest request){Cookie sesionCookie=findCookie(request,SESSION_COOKIE_NAME);if (sesionCookie==null){return null;}return sessionStore.get(sesionCookie.getValue());}sessionManager가 Object객체인데 Member로 캐스케이딩하는 데 member가Object의 부모인가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@Bean Validation이 던지는 예외 메세지를 @ExceptionHandler에 이쁘게 받는법
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Bean Validation과 @ExceptionHandler을 같이 사용하여 REST API를 작성하길 희망해서 아래와 같이 코드를 작성했습니다.#회원가입 DTO@Setter @Getter public class JoinDTO { @NotBlank(message = "아이디는 필수값입니다.") private String username; @NotBlank(message = "패스워드는 필수값입니다.") private String password; }#회원가입 컨트롤러 @PostMapping("/join") public String joinProcess(@RequestBody @Validated JoinDTO joinDTO) { 회원가입하는 로직이 들어있습니다. }#ExControllerAdvice에 MethodArgumentNotValidException예외 처리 추가@ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler public ErrorResult userExHandle2(MethodArgumentNotValidException e) { return new ErrorResult("join-ex", e.getMessage()); } 이상황에서 postman을 통해 password를 빼고 보내면 아래와 같이 응답값이 나오는데요.{ "code": "join-ex", "message": "Validation failed for argument [0] in public java.lang.String aaa.bbb.controller.JoinController.joinProcess(aaa.bbb.dto.JoinDTO): [Field error in object 'joinDTO' on field 'password': rejected value [null]; codes [NotBlank.joinDTO.password,NotBlank.password,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [joinDTO.password,password]; arguments []; default message [password]]; default message [패스워드를 입력해주세요]] " }제가 원한건 아래 형태입니다{ "code": "join-ex", "message": "패스워드를 입력해주세요" }깔끔하게 Bean Validation에서 보낸 message를 받는 방법이 없을까요?(e.getXxx메서드들 다 찍어보았는데 원하는 결과가 안나오네요 ㅠ)
-
미해결ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0
해당 코드가 작동하지 않는 이유
강의 들으면서 도움이 많이 되고 있습니다.중간까지의 과정을 복습하고싶어 필기와 기억을 토대로 코드를 작성했는데, 첫 수업 복습부터 난항을 겪고 있습니다. program.cs에 오류가 없음에도 작동하지 않아 고민입니다. 1강 강의 기준 똑같은 내용의 코드를 이미 만들어두었던 코드에서 가져와 붙여놓았을때에는 또 정상적으로 작동하는데, 무엇이 문제인지 도통 모르겠습니다.var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); var app = builder.Build(); app.MapControllerRoute( name: default, pattern: "{controller=Home},{action=Index}/{id?}"); app.Run();이게 문제가 발생하는 코드var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); var app = builder.Build(); app.MapControllerRoute( name: default, pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();이게 정상적으로 작동하는 코드입니다.이럴 때에는 어떻게 해야 하나요? 왜 첫 코드가 정상적으로 작동하지 않을까요? 무엇을 놓친건지를 모르겠어요...
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
pdf 파일에 스프링3부터는 jakarta로 해야 한다고 추가해야 될 것 같습니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]ErrorPageController에서 RequestDispatcher 상수 추가하는 부분에 스프링3버전 이상부터는 javax가 아니라 jakarta로 해야 된다고 적어야 할 것 같아요! 이걸로 좀 헤맸네요public static final String ERROR_EXCEPTION = "jakarta.servlet.error.exception"; public static final String ERROR_EXCEPTION_TYPE = "jakarta.servlet.error.exception_type"; public static final String ERROR_MESSAGE = "jakarta.servlet.error.message"; public static final String ERROR_REQUEST_URI = "jakarta.servlet.error.request_uri"; public static final String ERROR_SERVLET_NAME = "jakarta.servlet.error.servlet_name"; public static final String ERROR_STATUS_CODE = "jakarta.servlet.error.status_code";
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
MyBatis나 Jpa를 사용했을 때, 커넥션이 커넥션 풀로 반환되는 시점 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 영한님.이번 강의를 들으면서 실제 MyBatis나 JPA를 사용했을 때커넥션이 커넥션 풀로반환되는 시점이 궁금했습니다.GPT에게 물어본 결과로는,트랜잭션 단위로 커넥션을 커넥션 풀로 반환한다는 답변을 받았습니다.예를들어 트랜잭션 1에서 findById(), findByUsername()을 호출한다면 트랜잭션 1에서 획득한 커넥션 1을 가지고findById()에 의한 select 쿼리를 호출 후커넥션1을 반환하지 않고그대로 유지하다가 findByUsername()으로 두 번째 select 쿼리를 호출한다는 답변을 받았습니다.이부분이 맞는지 질문 드리고 싶습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
애노테이션에 대해서 전반적인 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]애노테이션에 대해서 @xxx 을 붙이면 이런기능이 된다. 이렇게만 알고 있는데요, 실제로 컴파일할 때 어떻게 이루어지는지 조금더 자세한 설명같은게 없을까요? https://developer-youn.tistory.com/122 위의 링크에 있는 정보보다 조금더 deep한 내용이었으면 좋겠습니다.
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
현재 스프링db2편 학습하는 중인데요
영상에선 itemservice-db파일 기존의 코드를 수정해서 사용하라고 하셔서 그렇게 했는데요거기에 깔려있는게 2.6.5입니다.id 'org.springframework.boot' version '2.6.5'근데 강의 자료에선 이제 3.0이상을 쓰라고 하셔서요이게 일단 거기 있는데로 2.65로 진행해도 되는건가요?아님 spring.io가서 3.0을 다시 깔아야하나요jpa까지 하다가 오류가 계속나서 처음부터 다시 시작하려고 하는데요일단 영상 그래도 2.6.5으로 진행하고 싶은데자료를 계속 보는데 전부 2.xx는 지원이 끊겨서 3.0으로 쓰라고 하셔서요진짜 2.xx다 빼고 3.0이상으로 전부 바꿔야 하나요?
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
람다식이 이해가 안됩니다.
멤버서비스 테스트에서 예외가 발생했을때 사용한 람다식이 해석이 안됩니다. 무슨 의미 인가요?assertThatThrownBy(()-> member service.accountTransfer(members.getMemberId(), memberEx.getMemberId(), 2000) .isInstanceOf(IllegalStatementException.class);위 람다식은 어떻게 해석해야 하나요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
데이터베이스 커넥션 및 세션 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 영한님.먼저 항상 좋은강의 잘 듣고 있습니다.최근에 이직을 하게 되면서 여유가 생겨영한님 강의로 다시 학습을 시작하고 있는데요,결론적으로 먼저 데이터베이스에 관한 지식(커넥션 , 세션 뿐만 아니라 성능 튜닝 및 설계) 을 위해 추천해주실만한 책이 있을까요?당연히 영한님 관계형 데이터베이스 강의가 나온다면 너무 좋겠지만,직금은 자바 강의만으로 바쁘신거 같아서요!왜냐하면 저는 springboot 시작 시점에 db connection pool을 채울 때,하나의 db session만을 가지고 여러 db connection을 만들어 connection pool을 채울것이라고 생각했습니다.(db session도 web session처럼 인증을 유지하는 논리적인 연결 개념이라고 이해했고, 어차피 동일한 username password를 사용하니깐요) 그렇지만 검색 후 진짜 영한님 설명처럼각각의 connection은 별도의 db session으로 맺어지는것으로 나와있었습니다.그래서 제가 아직 관계형 데이터베이스 관련 지식이 많이 부족하다는 생각이드는데요,혹시 추천해주실만한 학습 방법(책을 포함한) 이 있으실지 궁금합니다!(혹은 1월 meet up에서 말씀해주신 것 처럼 올해 까진 관계형 데이터베이스 강의가 나올지도 궁금합니다!)감사합니다.!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
16분 servlet/members 404 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]package hello.servlet.web.servlet; import hello.servlet.domain.member.Member; import hello.servlet.domain.member.MemberRepository; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.List; @WebServlet(name = "memberListServlet", urlPatterns = "/servlet/members") public class MemberListServlet extends HttpServlet{ private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<Member> members = memberRepository.findAll(); System.out.println("members : "+members); response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); PrintWriter w = response.getWriter(); w.write("<html>"); w.write("<head>"); w.write(" <meta charset=\"UTF-8\">"); w.write(" <title>Title</title>"); w.write("</head>"); w.write("<body>"); w.write("<a href=\"/index.html\">메인</a>"); w.write("<table>"); w.write(" <thead>"); w.write(" <th>id</th>"); w.write(" <th>username</th>"); w.write(" <th>age</th>"); w.write(" </thead>"); w.write(" <tbody>"); for (Member member : members) { w.write("<tr>"); w.write(" <td>" + member.getId() + "</td>"); w.write(" <td>" + member.getUsername() + "</td>"); w.write(" <td>" + member.getAge() + "</td>"); w.write("</tr>"); } w.write(" </tbody>"); w.write("</table>"); w.write("</body>"); w.write("</html>"); } }servlet 주소의 new-form이나 save는 문제없이 잘 작동하는데, list를 출력하는 페이지에서 404 오류가 발생하여 질문 드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Bean Validation 상품 수량 입력 값 넘길 시
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]상품 수량 입력 시 1111111111 Integer 값을 넘기면 숫자를 입력해주세요 메시지 박스가 뜨는데 아마 저의 개인적인 생각은 properties 설정에typeMismatch.java.lang.Integer=숫자를 입력해주세요. 메시지 대로 사용되는 것이고 오버 플로우 문제거나 다른 예외로 lang.Integer 아이디로 쓰인 것이 맞나요? 그리고 이런 예외 사항은 실무에서는 예외로 처리하는지 아니면 서버 단에서 Max 에노테이션 중 어디서 검증하나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인 처리하기 - 세션 직접 만들기 질문있습니다.
//에러상황: Non-static method 'expire(javax.servlet.http.HttpServletRequest)' cannot be referenced from a static context SessionManager.expire(request);강의에서도 해당 메소드는 void로 설정이 되어있는데 제코드에서는 static으로 변경하라고 합니다. 왜그런건가요?전체코드는 아래입니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
로그인 처리하기 - 세션 직접 만들기 질문있습니다.
public class SessionManagerTest { SessionManager sessionManager=new SessionManager(); @Test void sessionTest(){ //세션을 생성 <-이게 클라이언트단에서 생성이되는건가요? 서버에서 생성하는건가요? MockHttpServletResponse response=new MockHttpServletResponse(); Member member=new Member(); sessionManager.createSession(member,response); //요청에 응답 쿠키 저장 <-서버 저장이고 MockHttpServletRequest request=new MockHttpServletRequest(); request.setCookies(response.getCookies()); //세션조회 <-클라이언트 조회가 맞나요? Object result=sessionManager.getSession(request); Assertions.assertThat(result).isEqualTo(member); }}주석에 질문 달았습니다
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 부트 메시지 소스 설정 부분 궁금한 점 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이 의미를 제가 이해한 대로라면application.properties에 제가 아무 것도 추가하지 않으면스프링 부트가 알아서 application.properties에spring.messages.basename=messages 이걸 추가하고, 이렇게 messages만 지정되어도 부가적으로 messages_en.properties, messages_ko.properties 이것들도 인식되는 거로 이해했습니다. 꼭 ko나 en 말고도messages_temp.properties 또는 messages_sdfsdf.properties 이것들도 다 인식된다고 보면 되나요? 아니면 _ 뒤에 와야 하는 건 kr이나 en 등 몇 가지가 따로 지정되어 있는 걸까요? 2) 또 하나 궁금한 점이 있습니다. 스프링 부트를 쓰지 않고@Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); messageSource.setBasenames("messages"); messageSource.setDefaultEncoding("utf-8"); return messageSource; }이 코드를 쓴다고 한다면, 이때도 messageSource.setBasenames("messages"); 이렇게 messages만 지정하면 messages_en.properties , messages_ko.properties 다 인식할 수 있나요?
-
미해결
oAuth2.0 로그인 후 쿠키 생성 질문
@Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { // CSRF 설정 http.csrf((csrf) -> csrf.disable()); http.authorizeHttpRequests((authorizeHttpRequests) -> authorizeHttpRequests .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll() .requestMatchers("/").permitAll() .anyRequest().authenticated() ); http.oauth2Login((oauth2Login) -> oauth2Login .loginPage("/login") .userInfoEndpoint(userInfoEndpoint -> userInfoEndpoint .userService(principalOauth2UserService)) .defaultSuccessUrl("/", true) .permitAll() ); return http.build(); } 현재 위와 같이 우선 oAuth2.0 인증 기반을 구현했습니다.이 상태에서 로그인을 하면웹 브라우저 쿠키에JSESSIONID : 0C3706243FE7B32FF2A3C757013B164C 형식의 값이 삽입됩니다. 이후 test 용으로 작성한 "/user" 경로로 접근을 시도하면 접근이 가능하게 됩니다.만약 쿠키를 지우고 "/user" 로 접근하면 "/" 로 튕기고, 다시 로그인을 해야합니다. 여기서 궁금한 게 저는 별도의 쿠키 생성 로직을 작성하지 않았는데 oAuth 로그인 후JSESSIONID : 0C3706243FE7B32FF2A3C757013B164C이 녀석이 어떻게 생성된 것인지 궁금하며,어떻게 저 녀석으로 인증이 필요한 자원에 접근이 가능한 것인지 원리가 궁금합니다.검색해보니 톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키라고 하는데,이게 그냥 인덱스 페이지에 최초 접속할 때도 생기더라구요 ?oAuth 로 로그인하면 값이 바뀌긴 하지만,,, 구글링 해보면 세션 만들고 쿠키 만들고 하던데, 그럴 필요가 없는 거 아닌가요 ?+ 추가질문http.sessionManagement( (sessionManagement) -> sessionManagement .sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED) .maximumSessions(1) // 최대 허용 가능 세션 수 .maxSessionsPreventsLogin(false) // 멀티로그인 차단, false : 기존 세션 만료(default) .sessionRegistry(sessionRegistry()) ); 이와 같이 또 세션 정책을 세웠는데, 네이버 웨일로 로그인하고, 크롬으로 로그인 하면 둘 다 로그인 상태가 유지되는데 왜 이러는 걸까요...
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
강의 질문있습니다.
강의 HandlerExceptionResolver 시작을 듣는데public class ApiExceptionController { }에서 괄호 부분에서 빨간줄이 나오는데 강의코드랑 같은데 왜 나오는건가요?