@Getter @RequiredArgsConstructor public class ErrorResponse { private final String code; private final String message; } 여기서 @Getter 애노테이션을 쓰는 이유가 무엇일까요?
이런 내부 인증 과정을 세세하게 알 수 있어서 너무 좋습니다.. 근데 중간에 브레이킹 포인트 찍을 때 장면이 생략이 되서 중간 중간 부분이 아는 사람만 알게 넘어간 것 같아서 질문 드립니다.. 1) AbstractAuthenticaionProcesingFilter 해당 filter 에 attemptAuthentication 가 추상 메서드로 있는 상태에서 this.attemptAutehnticaion 했을 때 어떻게 UsernamPasswordAutenticationFilter에 구현 된 attemptAutentication이 실행 되는지 2) UserNamePasswordAuthenticationFilter에서 return this.getAuthenticationManager().authenticate(authRequest); public interface AuthenticationManager { Authentication authenticate(Authentication authentication) throws AuthenticationException; } impementation이 5개가 있는데 왜 ProviderManager 클래스로 넘어갈 수 있는 건가요? 3) ProviderManager에서 해당 인증을 처리할 수 있는 Provider인 DaoAuthenticationProvider에서 createSuccessAuthenticaion까지 가는 과정을 알 수 있을까요?
강의 22분 35초 경 switch-case 문을 통해 체크박스의 id로 분기를 하려고 할 때 // id로 분기함 switch (checkboxId) { case R.id.checkBox: break; case 문의 R.id .checkBox 부분에서 "Constant expression required" 에러가 발생합니다. 구글링을 해보니 switch-case 문의 상수가 final로 선언되지 않아 발생하는 문제라고 하는데 어떻게 해결할 수 있을까요?
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요 강사님먼저 첫번째 질문은 DTO (CalculatorMultiplyRequest request)를 매개변수로 받는 데, 자동으로 request 인스턴스가 생성되는 것이 이해가 가지 않습니다. 클래스는 생성자를 호출하기 위해서는 new키워드로 생성해야 하는 것으로 알고있는데, 이해가 잘 되지 않습니다.두번째 질문은 GET요청과는 다르게 POST요청은 Request 클래스 내부에 생성자 없이도 number1과 number2에 값이 할당되는 점입니다.어떻게 이게 가능할 수 있죠..?
@Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http .authorizeHttpRequests(authorize -> authorize .anyRequest().authenticated() ) ; return http.build(); } 이런 식으로 설정을 했는데 아예 권한이 없어서(?) 접근이 안되는 403 에러가 나네요.. 해당 부분은 SecurityConfig 설정 하는 방법이 변경 되어서 나는 다른 점일까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. <property name="hibernate.hbm2ddl.auto" value="update"/> create / create-drop 은 잘 됩니다. 하지만 update는 이상한점을 발견을 했습니다. 이유를 알고 싶어서 이런 질문 드립니다. update를 value에 작성을 한뒤에 Member class 에서 A - private int age x B - private Integer o 위 와 같이 작성을 하고 나서 실행을 해보면 A는 오류가 발생하지만 B는 정상적으로 작동이 됩니다. 이유를 알려주세요.
안녕하십니까. 데이터 검증2 를 듣다가 궁금한점이 생겨서 질문을 남기게 되었습니다. @Getter @RequiredArgsConstructor public class ErrorResponse { private final String code; private final String message; private final List<Validation> validations = new ArrayList<>(); public void addValidation(String fieldName, String errorMessage) { this.validations.add(new Validation(fieldName, errorMessage)); } private record Validation(String fieldName, String errorMessage) { } } @Test @DisplayName("/posts 요청시 title 값 필수.") void test2() throws Exception { mockMvc.perform(post("/posts") .contentType(MediaType.APPLICATION_JSON) .content("{}") ) .andExpect(status().isBadRequest()) .andExpect(jsonPath("$.code").value("400")) .andExpect(jsonPath("$.message").value("잘못된 요청입니다.")) .andExpect(jsonPath("$.validations[0].errorMessage").value("title을 입력해주세요.")) .andExpect(jsonPath("$.validations[1].errorMessage").value("content를 입력해주세요.")) .andDo(print()); } 일단 Map -> List<Validation> 방식으로 수정해보았는데요 @Setter @Getter @ToString public class PostCreate { @NotBlank(message = "title을 입력해주세요.") private String title; @NotBlank(message = "content를 입력해주세요.") private String content; } 테스트 코드에서 0번째 에러메시지가 title을 입력해주세요 가 될 줄 알았는데 content를 입력해주세요 가 나와서 실패했습니다. (PostCreate 필드 순서대로 validations에 담길 줄 알았는데 예상되로 나오지 않았습니다.) -> 테스트 할 때마다 결과가 뒤죽박죽 이네요. 이러한 경우 어떻게 테스트 하는지 궁금합니다. 또한 이렇게 만약 여러 error field가 잡히거나, 에러 메시지가 바뀌는 경우가 생기면 테스트 코드 수정이 빈번해 질 것 같은데 어떻게 해결할 수 있을지 궁금합니다. 마지막으로 List<Validation> 방법 말고 조금 더 많이 쓰이는 ? 혹은 괜찮은 방법 있으면 추천해주시면 감사하겠습니다.
[질문 내용] 준영속 상태와 비영속 상태의 차이점에 대해 이해한바는 다음과 같습니다. 비영속 상태 : 한번도 엔티티 매니저의 관리를 받아본적 없는 엔티티 준영속 상태 : 엔티티 매니저의 관리를 받다가 연결을 끊음으로써 더이상 관리 받지 않고있는 상태. 제가 아는 차이점은 이것 뿐인데 혹시나 이게 두 상태의 차이점의 전부라면 굳이 상태를 나눌 필요가 있나? 라는 생각이듭니다. 그냥 '준영속 상태' 라는 단계를 없애고 연결이 끊기면 비영속 상태 로 , 다시 연결을 맺으면 영속 상태 로 이렇게 단계를 줄여도 되지 않을까요? 혹시나 제가 모르거나 잘못이해하고 있는점이 있다면 알려주시면 감사드리겠습니다!!
강사님 덕분에 잘 취업해서 살고 있습니다. 취업해보니 강사님의 원리 위주의 강의를 들은 것이 많은 도움이 되고 있습니다. 어려운 기술들 보다 Base되는 원리 하나를 잘 습득하는 게 참 중요하다는 걸 많이 느낍니다. 뭐가 잘 안되면 블로그나 검색엔진을 사용하기 보다는 강사님 강의하면서 배운 내용을 다시금 봅니다. 왜냐면 그 안에 현업에서 쓰는 기본적인 것들이 많이 담겨져 있기 때문입니다. 조금 실력이 몇개월 쌓인 뒤에 보니 어려웠던 내용들도 쉬운건데 어렵다고 생각을 해서 어려웠구나 라는 생각도 하게 되네요 특히 요약 파일 띄워놓으시고 마우스로 그리면서 설명해주시는 것이 정말 도움 많이!!! 됐습니다. Spring이 아니라 사물인터넷 mosquitto 들으러 인프런에 잠시 왔는데요 예정보다 조금은 시간이 많이 흘렀지만 어떤 종류의 강의든 다음 강의를 기대하고 있습니다. 중간중간에 답변도 늦지 않게 잘 해주셨던 기억이 있어서 더더욱 감사드립니다. 행복한 하루되시고 누군가에게는 긍정적인 큰 영향을 주셨다는 거 기억해주세요. 선생님 아니였으면 취업 준비하다가 포기했을 거 같아요.(진심) 좋은 하루 되세요^^ -선생님 모든 강의를 다 구독한 1人 올림-
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ajaxLoginProcessingFilter' defined in class path resource [io/security/corespringsecurity/security/config/SecurityConfig.class]: authenticationManager must be specified AuthenticationManager를 빈으로 등록해야 할거 같은데 강의랑 버전차이가 나서 쉽지가 않네요 OOQanT/SpringSecurity (github.com)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 간단한 내용이지만 조금 고민이 있어서 질문드립니다. 요청을 통해서 받은 데이터를 통해서나 로직상에서 연관관계에 필요한 Entity의 id값을 알고 있는 경우 필요한 Entity를 DB에서 조회하는 과정 없이 id값만 초기화된 Entity를 생성하여 주입하는 방식이 가능한 것으로 알고 있습니다. 이 때, 그렇게 주입된 Entity는 persist된 상태가 아니라는 점인데요. ( cascade 옵션이 적용 안 되었다는 가정 ) 이런 경우에 두 가지 경우의 수를 고려하였습니다. 첫 번째는 연관관계 Entity가 연관관계 설정 외에는 사용될 일이 없는 로직의 경우이고 두 번째는 연관관계에 필요한 Entity가 이후에도 여러 로직에서 사용되는 경우입니다. 두 번째의 경우에는 사실 고민할 것 없이 ID를 이용해 Entity를 생성하는 것이 아닌 SELECT를 통해서 Entity를 조회하여 사용하는 것이 좋은 방법이고 EntityGraph를 맞추는 면에서도 당연히 해주어야 하는 것으로 사료됩니다. 하지만 첫 번째의 경우 굳이 Entity를 ID값을 통해 조회하는 과정이 필요한 지에 대한 의문입니다. 저런 단순한 로직의 경우 굳이 DB와의 정합성을 위해 조회 및 연관관계 편의메소드 등을 이용해서 EntityGraph를 맞춰줄 필요가 있나 싶었습니다. 이런 경우에서 실제 현업에서는 어떤식으로 처리하는 지 궁금합니다. 저렇게 각 상황에 따라 효율을 따져서 다르게 처리하는 지 아니면 ID를 통해 데이터를 조회하는 것은 크게 성능상 문제가 되지 않으니 불필요하더라도 로직의 통일성이나 혹시 모를 사이드 이펙트를 대비해서 조회한 뒤 연관관계 편의 메소드를 통해 EntityGraph까지 맞춰 주는 지 궁금합니다..! 저는 불필요하다고 생각하여 굳이 Entity그래프를 맞춰줄 필요가 없는 경우는 그런 과정을 생략하며 프로젝트를 하고 있었는데, 완성하고 보니 EntityGraph를 맞춰 주는 로직이 단 하나도 없는 걸 알게 되었습니다. 아무래도 복잡한 비즈니스 로직이 없어서 그럴 수도 있겠다는 생각은 들었지만 너무 심한 것 같아 제가 JPA를 제대로 쓰고 있는 게 맞나 싶어 질문드립니다..ㅠㅠ
메인 화면에서 로그인 하지 않은상태에서 이동하면 오류가 나는데, 7:25초경 top.html에서 @{/api/login} 이걸로 수정하면 안되는 것 같습니다. 해당경로는 Post방식으로 요청해야 하는 ajax 인증처리 url인데 해당 영상에서 수정하신 경로는 로그인 화면으로 이동해야 하는 Get방식의 요청입니다. 제 생각이 맞을까요??
Cookie 값을 삭제 하며 여러 동작을 해보던 도중, 로그인을 하기 전부터 JSSESSIONID 값이 cookie 에 들어가 있는 것을 확인하였습니다. 처음에는 오류인가 싶어 값을 삭제하고 로그인하였더니, 로그인이 동작하지 않고 그냥 페이지가 reload 된 다음 임의의 JSSESSIONID 값을 가져왔습니다. 왜 reload 할 때마다 JSSESSIONID 값을 가져오는 걸까요? 그리고 왜 JSSESSIONID 값 없이는 로그인 동작 자체가 안 되는 걸까요?
수업을 들으면서 강사님과 같은 부분에서 브레이크를 걸고 디버깅을 해보려고 했는데, 해당하는 각 객체들 (FilterChainProxy 등등) 을 어떻게 찾아서 들어가야 하는 지를 모르겠습니다 ㅠㅠ command + shift + f 로 검색해도 나오지가 않는데, 혹시 정확한 repo 위치를 알아서 각 객체를 하나씩 보는 방식(?) 으로 접근해야 하는 걸까요?