안녕하세요, 강의를 듣고 있는 학생입니다. 강사님께서 강의 중에 언급해주신 거 같은데 제가 이해를 잘 못해서 다시 질문드립니다. 통합 테스트 시 이전 강의에서 쌓아 둔 데이터를 DELETE query를 통해서 없애고 진행을 했는데, 그렇다면 테스트 코드와 실제 코드가 같은 DB를 공유하고 있다고 봐도 되나요? 만약 같은 DB를 공유하게 된다면, 원래 있던 데이터를 항상 날려야 되는데 문제가 생긴다고 생각이 들어 제가 잘못 이해한 부분을 찾고 싶어 질문을 드렸습니다. 글 읽어주셔서 감사합니다.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
유저 정보를 가져올 때 orElseThrow를 사용하면 userRepository에 입력되어 있는 findByName이 Optional로 선언되어야 한다고 문구가 뜹니다! 근데 Optional<User>로 바꾸면 UserServiceV2에 @Transactional public void deleteUser(String name){ User user = userRepository.findByName(name); if(user == null){ throw new IllegalArgumentException(); } userRepository.delete(user); } user의 타입을 User로 할 수 없다고 떠서 Optional<User>로 바꾸면 userRepository.delete(user)가 파라미터가 적절하지 않다고 뜹니다ㅜㅜ 일단, 구현은 하고 싶어서 userRepository에 findByName은 User 타입으로 정의하고 // 4. 유저 정보를 가져온다 if(userRepository.findByName(request.getUserName()) == null){ throw new IllegalArgumentException(); } else{ User user = userRepository.findByName(request.getUserName()); // 5. 유저 정보와 책 정보를 기반으로 UserLoanHistory를 저장 userLoanHistoryRepository.save(new UserLoanHistory(user.getId(),book.getName())); } bookService를 이렇게 바꾸었는데 상관없을까요? 어떤식으로 해결하는게 맞을까요...
안녕하세요 김영한 강사님의 강의를 듣고 스프링부트를 공부중인 개발자 지망생입니다. 디름이 아니라 @Data 애노테이션에 대한 질문입니다. 다른 분들의 프로젝트 코드를 보던중 저 애노테이션을 엔티티 클래스에 붙여놓은 코드를 보았는데 제가 힉습하기로는 저 애노테이션엔 세터가 내장되어있어 사용을 지양하는것으로 알고있는데 시용해도되는지 시용해도된다면 언제 사용하는것인지 궁금합니다.
안녕하세요 실전! 스프링 부트와 jpa활용1을 듣고있는데요 설계할때 순서가 궁금합니다 먼저 요구사항을 분석하고 도메인모데을 설계한 후에 테이블틀을 먼저 설계하는게 우선인가요 아니면 엔티티 틀을 설계하는게 우선인가요 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] MemberRepositoryTest의 testMember에서 에러가 발생합니다. 에러 내용이 너무 길어 프로젝트 링크 첨부하였습니다. https://drive.google.com/file/d/1flmRAYvWXnIY-1BNrdd76dXY6YdL-kHn/view?usp=sharing
Could not autowire. There is more than one bean of 'MemberRepository' type. Beans: memoryMemberRepository (MemoryMemberRepository.java) springDataJpaMemberRepository ( SpringDataJpaMemberRepository.java ) <스프링 데이터 JPA> 강의에서 테스트 코드를 실행 했을때 동일한 에러가 뜨는데 해결 방법을 찾지 못하고 있습니다. 도와주세요 .. 동일한 타입의 빈이 중복 등록되어 발생한 문제임을 알고 있습니다. 어디서 중복 등록이 된 건지 찾지 못하고 있어요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] org.h2.Driver에서 오류가 발생하는데 이는 어떻게 수정해야하나요?
안녕하세요 강사님 좋은 강의 감사드립니다. 해당 영상보면서 따라해보고 있는데 시큐리티 버젼이 달라서 그런건지 원인은 잘 알 수 없지만 @PreAuthorize(value="") 이렇게 설정하면 에러가 발생합니다. 제가 작성한 코드는 다음과 같은데 이유를 알 수 있을까요? 강의와 다른점은 저는 @PreAuthorize 어노테이션을 컨트롤러에 선언했습니다. 확인해주시고 답변 주시면 정말 감사드리겠습니다. @Configuration @EnableWebSecurity @EnableMethodSecurity(prePostEnabled = false) public class CustomMethodAuthorizationManagerConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http.authorizeHttpRequests(auth -> auth .anyRequest().authenticated()) .formLogin(Customizer.withDefaults()) .csrf(AbstractHttpConfigurer::disable) ; return http.build(); } } @EnableMethodSecurity(prePostEnabled = false) @Configuration public class MethodSecurityConfig { @Bean @Role(BeanDefinition.ROLE_INFRASTRUCTURE) public Advisor preAuthorize() { return AuthorizationManagerBeforeMethodInterceptor.preAuthorize(new MyPreAuthorizationManager()); } @Bean @Role(BeanDefinition.ROLE_INFRASTRUCTURE) public Advisor postAuthorize() { return AuthorizationManagerAfterMethodInterceptor.postAuthorize(new MyPostAuthorizationManager()); } } MyPostAuthorizationManager와 MyPreAuthorizationManager는 강의의 코드와 동일합니다. @RestController @RequestMapping("/method/custom") @RequiredArgsConstructor public class CustomMethodController { @GetMapping("/admin") @PreAuthorize(value = "") public String admin() { return "admin"; } @GetMapping("/user") @PostAuthorize(value = "isAuthenticated()") public MethodAccountDTO user(String name) { return new MethodAccountDTO(name, false); } }
<p th:text="'안녕하세요.ddd ' + ${data}" >안녕하세요. 손님</p> 이 부분에서, 정작 p태그의 사이 공간에 들어가는 내용 즉, "안녕하세요. 손님" 이 부분은 아예 화면에는 렌더링이 안 되는 걸로 보이는데 이 부분은 그러면 개발자 입장에서는 주석처럼 사용하는 건가요? 타임리프에서 p 태그의 사이공간은 어떻게 활용되는지 궁금합니다.
먼저 좋은 강의 감사합니다. 현재 윈도우 환경에서 강의를 듣고 있습니다. 집킨 파트를 수강하는데 zipkin.jar 를 받을수 있는 방법이 없습니다. 윈도우에서는 강의에서 나온 curl 명령에서 bash 명령어가 먹지도 않고 해서 제대로 다운로드도 안됩니다. 해서 zipkin.jar 파일을 따로 올려주실수는 없으실지 문의 드립니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 중복_회원_예외() 테스트에서 @Rollback(false)를 적용하고 테스트를 돌리면 member1 & member2 모두 DB에 데이터가 들어가지 않는데 이유를 생각해 보면 테스트에서 시작하는 중복_회원_예외() 메서드에서 2번의 조인 모두 @Rollback 이랑 @Transactional 모두 1개의 물리 트랜잭션에 묶여 있는 것이고 1개의 논리 트랜잭션인 2번째 join이 실패하였으니 첫 번째 논리 트랜잭션은 @Rollback(false)이지만 해당 물리 트랜잭션이 실패 판정되어서 모두 롤백 되는 거겠죠? 서비스 레벨에서 join()을 Propagation.REQUIRES_NEW를 통해 신규 물리 트랜잭션을 만드니까 예상대로 member1만 DB에 적용됩니다 정리하면 테스트에서 붙이는 트랜잭션 또한 트랜잭션 전파 원리는 동일 테스트에 트랜잭션을 붙이면 추가적으로 @Rollback(true)가 default로 붙는데 이 또한 같이 같은 원리로 전파된다가 맞을까요?
안녕하세요. 통합인증서버 - 클라이언트 - 백엔드서버 이런식으로 구성 되어 있는데요. 플로우 관해서 질문이 있습니다. client -> auth server : return url / client id 통합인증서버로 보내고 auth server -> client : auth id 통합인증서버에서 받고 client -> be server : client id / auth id 클라이언트에서 받고 be server -> auth server : client id / auth id 백엔드서버에서 통합인증서버로 보내고 auth server -> be server : access token / refresh token 백엔드서버에서 통합인증서버로 받고 be server -> client : access token / refresh token 백엔드서버에서 클라이언트 보내기 이런식으로 구성을 한다고 하더라구요. 저는 3번에서 바로 auth id를 통합인증서버로 보내고 토큰을 클라에서 받고 저장 그리고 백엔드 보내고 저장이라고 생각이 드는데요. 불필요한 작업이 추가로 하는거 같다라는 생각을 했는데요. 클라에서 auth id를 통합인증서버로 보낼때 get으로 보내서 보안 문제가 있어서 서버 투 서버로 보낸다고 하더라구요.(백앤드 서버에서 보내는 것만 받으려고) 어떠한 방식이 옳은건지, 저렇게 하면 보안적으로 더 좋은건지 잘 모르겠습니다. 제가 생각하는 방식으로 해도 되는건지.. 고견 부탁드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] Member와 Order의 연관관계에서 궁금한 점이 있습니다. Member와 Order 테이블만 보고, 일대 다 양방향 연관관계인지 다대 일 양방향 연관관계인지 정하는 기준이 있을까요? 일대 다의 단방향 연관관계매핑은 사용하지 않는것이 좋다는건 기본편에서 들어서 배웠습니다. 그런데 왜? 양방향 연관관계는 사용하면 안되는건가요? Member에서 Order를 가진다고 문제될게 있나요?
강의 내용 대로 코드를 짰는데 localhost ::8080으로 연결하면 static 폴더에 있는 html이 아닌 template 폴더에 있는 html이 뜹니다. static 폴더에 있는 html을 실행시키면 localhost ::63342로 정적 페이지가 뜹니다. thymeleaf를 이용한 template 폴더에 있는 파일은 localhost ::8080/hello를 하면 제대로 뜹니다. 무엇이 문제인걸까요
섹션 4. 회원 도메인 개발 회원 기능 테스트 강좌 관련 질문입니다. @Test public void 회원가입() throws Exception { // given Member member = new Member(); member.setName("kim"); // when Long saveId = memberService.join(member); // then assertEquals(member, memberRepository.findOne(saveId)); } 위의 코드를 실행시켰을 때, insert문 쿼리가 왜 나가지 않는지는 이해를 했습니다. 하지만 select 쿼리가 왜 나가는지는 궁금합니다. 제가 생각한 흐름을 설명드리면, memberService의 join 함수를 실행해서 member 객체를 영속화하게 되면 1차 캐시에 해당 데이터가 저장이 될 것이고 동시에 쓰기 지연 SQL 저장소에 insert 쿼리문이 쌓입니다. 이때 쿼리문은 트랜잭션이 커밋되면 DB에 반영이 되지만 테스트 클래스에서는 트랜잭션이 롤백되기 때문에 insert 쿼리가 나가지 않게 됩니다. 이후 findOne 메소드를 실행할 때에는 DB에서 직접 찌르는 것이 아니라 1차 캐시에 저장되어 있기 때문에 1차 캐시에서 데이터를 가져와도 되기 때문에 select문이 나가지 않아도 된다고 생각했는데 실제 실행결과를 보니 select 쿼리문이 나가더군요.. 이유가 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 순수 jdbc 강의 16분내용으로 코드실행하는데 매핑한 주소 모두 file not found가 뜹니다.. Identify and stop the process that's listening on port 8082 or configure this application to listen on another port.라고 콘솔에는 뜨는데 톰캣포트랑 h2포트랑 같아서 생기는 문제일까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] MemberServiceIntegrationTest 에서 회원가입 코드를 실행하면 MemberController 에서 오류가 발생합니다. 이유가 무엇일까요?