묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 시큐리티
세션 STATELESS 일때 궁금한점이 있습니다.
강사님 정말 강의 잘 듣고 있습니다. SecurityContext에 대해서 강의를 듣던중에 궁금한 점이 있어 질문을 남깁니다 세션 방식일때 SecurityContext(authentication)를 세션에 저장하고, 인증이 완료된 후에는 세션에 있는 SecurityContext를 꺼내어 SecurityContextHolder에 저장하여 stateful한 상태를 유지합니다. 근데 세션 stateless 일때는 , 세션 또한 존재하지 않을것이고, 여기서 spring security는 인증이 완료된 후에 SecurityContext에 인증객체를 담는 과정도 진행하는지 궁금합니다. stateless한 즉 rest api를 이용해서 통신을 할 경우에는 매 요청마다 인증 과정을 거칠텐데 SecurityContext에 인증객체를 담아야 하는지 궁금하네요
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
circuitbreaker custom config 관련
강의를 따라하며 circuitbreaker custom config 파일을 만들었는데요. 빈에 주입하게 되실겁니다. 하고 코드에서 별다른 수정이 없는데 적용이 된건가요?빈에 따로 주입하지않아도 만들기만하면 알아서 적용이 되는건가요???
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
BookLoanRequest 위치에 대해서 궁금한게 있습니다.
강의에서는 BookLoanRequest 가 도서 대출에 관련된 기능이기 때문에패키지 위치가 dto > book > request 에 위치하게 됩니다. 내부에서 로직을 수행하는 도메인은 유저에 관련된 도메인이기 때문에domain > user > loanhistory 패키지에 도메인이 위치하게 되었습니다. 제가 이해한건 기능은 책 대출과 관련되어 있지만, 내부 로직에서는 책과 유저 사이 중간 매핑 테이블을 사용하기 때문이고도메인 user 패키지내에 있는건 유저가 책을 빌리는 서비스이기 때문이고 만약 서비스가 책이 대출되었는지 안되었는지 검색하는 기능이였다면loanhistory가 도메인 book쪽에 가는거라고 생각이 되는데 제대로 이해한게 맞을까요?
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
쿼리가 어떻게 전달되는 건가요??
강의 초반에 쿼리는 URL 주소에서 뒤에 붙여져서 보내진다고 알고 있습니다. 근데 @GetMapping("/user") 이런 식으로 URL을 받거나 할 때는 뒤에 작성하는 쿼리 부분이 없는데 어떻게 @RequestParam을 통해 쿼리 데이터를 받아오는지 궁금합니다. 이름과 나이를 작성할 때 그 데이터가 쿼리로 가는 거 같은데 도서 웹 페이지에서 해당 데이터가 어떻게 쿼리로 데이터를 받아오는지 궁금합니다. 아직 강의 초반이고 잘 모르다 보니 바보 같은 질문일 수도 있지만 알려주세요!!! 선생님!!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트에서 @Transactional 을 붙히지 않으면 왜 일차캐시가 작동하지 않을까요?
@Service @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; @Transactional public void signUp(Member member){ memberRepository.save(member); } public Member findOne(Long id){ return memberRepository.findById(id).orElseThrow(); } } @Test void signUp() { Member member1 = Member.builder() .userId("user1") .birthDay(LocalDate.now()) .password("pass") .email("aa@bb.cc") .build(); memberService.signUp(member1); Member member2 = memberService.findOne(member1.getId()); assertThat(member1).isEqualTo(member2); } 트랙잰션이 Memberservice에서 signUp을 완료 하고 트랜잭션이 끝난다고 영속성 컨텍스트가 비워지지 않다고 이해 했는데 왜 같은 id 값으로 다시 찾을 때 동일성을 보장하지 않는걸까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드할때 ClassNotFoundException
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]계속 이렇게 뜨네요..무료버젼이라 세팅 들어가서 gradle로 바꿔줬습니다 ㅠ인텔리제이 17버젼이고,스트링부트는 3.0이상이라 찾아서 이렇게 변경했는데 계속 안되네요 뭐가 문제일까요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
중복회원 가입이 왜 될까요? + 중복회원 예외 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 다른 분들이 질문 남겨주신 부분 토대로 거의 다 확인한 것 같은데 계속 오류가 납니다 ㅠㅠ 1) 회원가입 테스트 시 중복으로 데이터가 저장됨 2) 중복회원 예외 테스트 시 중복으로 데이터가 저장됨 3) 중복회원 예외 테스트 시 예외처리가 안됐다는 오류? 제가 코드 잘못 작성한 부분이 있을까요?
-
미해결스프링 시큐리티 OAuth2
소셜로그인과 JWT 인증 방식에 대해 궁금한점이 있습니다.
일반 로그인 + 소셜 로그인 전체로 JWT 인증 방식으로 도입하고자 할때소셜 로그인 인증 성공 후에 JWT 인증 객체를 발급해서 그 토큰으로 프론트단과 통신하면 되는건가요?? 그리고 JWT로 인증하는 과정이 현 강의와 밑에 나중 강의들에 나오는지 궁금합니다. 단지 인가서버에서 내려준 엑세스 토큰을 리소스 서버에서 JWT 토큰을 검증하기 위한 것인지. 아니면 일반 로그인에 대해서도 JWT 인증을 도입할시에 도움이 되는지 궁금합니다.
-
미해결스프링 부트 - 핵심 원리와 활용
/actuator/promrtheus 값 관련
안녕하세요 /actuator/prometheus 관련하여 질문이 있습니다.하기 화면은 prometheus로 연동할 데이터를 확인한 화면인데uri가 UNKNOWN으로 나오고 있습니다. 다른 자료를 찾아보니 프로메테우스 버전과 관련된 부분이 언급이 되어 있는데 아직 버전을 변경하여 진행해보지는 않았구요 만약 지칭하는 자원이 없다면 404로 나왔을텐데 206으로 나오고 unkonwn으로 나와서 좀 애매하네요 혹시 이런 경우가 있었는지 문의 드립니다.감사합니다.
-
해결됨스프링 배치
청크 프로세스 - StepExecution, ItemReadListener 질문
안녕하세요. 강의 수강하며 많은 도움이 되고 있습니다!제가 현재 Spring Batch 로 배치 업무를 개발 중에 있는 데 질문이 있어 문의드립니다. 청크 프로세스를 사용하여 개발하면서 reader, processor, writer 로 구현하였을 때,청크 단위로 데이터를 처리할 때 BATCH_STEP_EXECUTION 테이블에 실시간으로reader 시에는 read_count 가. writer 시에는 write_count 가 청크 단위로 업데이트 되는 걸로 이해하고 있습니다. 문의 드리고자 하는 내용은 ItemReadListener(혹은 이외에 방법)를 통해서 StepExecution 객체를 불러와 readCount, writeCount, commitCount 등을 확인(로깅)하는 방법이 있을지 문의드립니다.즉, 동일 Step 안에서 청크단위마다 reader() 메소드를 반복 수행할 때 StepExecution의 readCount 를 조회가 가능할 지 궁금합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
order의 orderItem
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이게 주문아이템이 한번에 여러 개 일 수 있으니까,public Long order(Long memberId, List<OrderItemDto> orderItemsDto){ List<OrderItem> orderItems = new ArrayList<>(); for( OrderItemDto orderItemDto : orderItemsDto){ Item item = itemRepository.findOne(orderItemDto.itemId); int orderPrice = orderItemDto.price; int count = orderItemDto.count; OrderItem orderItem = OrderItem.createOrderItem(item, orderPrice, count); orderItems.push(orderItem); } }이런 식으로 하는 것도 괜찮죠?제가 아직 Dto를 잘 몰라서Data to Object 인 거 같은데 그러면OrderItem을 만들어서 Dto에 넣어야 하나 생각했더니 그건 왠지 아닌 것 같고.. 컨트롤러 단계에서 엔티티를 꺼내서 써야 하게 될테니..그냥 Dto를 데이터를 모아 사용하기 편한 오브젝트로 만들어주는 그런 느낌으로.. 여튼 저런 식으로 하면 잘한건가요?
-
미해결스프링 부트 - 핵심 원리와 활용
디스크 사용량 관련
안녕하세요 질문이 있습니다. 강의중에PC 디스크에 관한 총용량과 현재 사용량을 알아보는 내용이 있었습니다. 혹시 특정 폴더에 관하여현재 사용량을 알아볼 수 있는 방법이 있을까요? 관련한 정보가 있으시다면코멘트 부탁 드리겠습니다. 감사합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
createOrderItem의 setter 사용
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]그 지금은 예제라 그런거고,실무에서는 저렇게 많은 setter들이 밖으로 표출되지는 않죠?보통 저런 건setter를 private 등으로 한 다음에OrderItem에 비즈니스 메소드를 추가하는 게 맞는거죠?예를들어orderItem.initOrderItem(item, orderPrice, count)해서요.메소드 명은 적절한게 생각이 안나서.. 저는 setter는 가급적 쓰지 말고,연관관계 메소드 구현할 때 처럼 부득이 하게 필요할 경우만 public으로 하게끔 하는 걸로 이해하고 있어요.
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
companion object사용에 관하여 + entity class의 올바른 메서드 사용
안녕하세요. 우선 양질의 kotlin과 jpa관련 강의제공해주셔서 감사합니다.덕분에 어느정도 갈피를 잡을 수있었어요.어설픈 질문이지 않을까 걱정도 되지만, 조심스레 여쭤봅니다.[21강에 사용되는 companion object 의 fun fixture]해당 메소드는 객체가 생성될때 기본값을 가지도록 되어있는데 해당방식은 실제 프러덕션코드 에서도 적용할 수 있는 방식일까요?만약 그렇다면 다음과같이 직접적으로 field의 초기값을 설정하는것과 어떻게다른지 궁금합니다.@Entity class Book( val name: String = "", @Enumerated(EnumType.STRING) val type: BookType = BookType.COMPUTER, @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long? = null, ) { init { if (name.isBlank()) { throw IllegalArgumentException("이름은 비어 있을 수 없습니다") } } fun generateIntegrateName(): String { return type.toString() + name } companion object { fun fixture( name: String = "책 이름", type: BookType = BookType.COMPUTER, id: Long? = null, ): Book { return Book( name = name, type = type, id = id, ) } } } 만약 test를 위해서만 존재하는 코드라면, entity class안에 test만을 위한코드가 존재하는게 자연스러운 구조인가요?[entity와 관련된 값 구성 강제하기]entity filed에는 정의되지 않아 Database에 column으로존재하진않지만, dto로 반환하는 integrateName의 생성을 강제하고 싶을때는 위코드의 fun generateIntegrateName 을 entity에 구성하여 dto에서 사용되는것이 올바른 방법인지 궁금합니다.data class BookInfoResponse( val integrateName: String, ) { companion object { fun of(entity: Book): BookInfoResponse { return BookInfoResponse( integrateName = entity.generateIntegrateName() ) } } }val book = bookRepository.findByName("이상한 나라의 엘리스") ?: throw IllegalArgumentException("잘못된 요청값입니다.") val result = BookInfoResponse.of(entity = book).integrateName강의내용과 검색등의내용을 짜집기해서 사용해보고있는데 막상 구현을하고 보니 적절한 방법인지 알길이 없어서 고민하다 질문드립니다.시간 내어주셔서 감사드립니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
springframework 라이브러리 인식 오류
인텔리제이 종료 후 재실행하여 프로젝트를 열었을 때 아래 화면과 같이 오류가 발생합니다.org.springframework.boot 라이브러리 자체를 인식하지 못하는 것으로 확인되는데,어떻게 고칠 수 있을지 알 수 있을까요?(인텔리제이 종료 전까지만 해도 정상 동작하였습니다.) 제 개발 환경은 MacOS, IntelliJ, JDK 11, Spring 2.x 버전 입니다.
-
미해결스프링 시큐리티
Spring Security 6.0 이상 (Spring boot 3.0 이상)에서 다중 config 설정 방법
안녕하세요 이렇게 좋은 Spring Security에 애를 많이 먹던 도중 늦게나마 열심히 듣고 있는 사람입니다. 강의를 들으면서 Spring Security 6.0 이상 버전으로 혼자 마이그레이션 해보며 공부를 진행하는데요..다른 분들은 모르겠지만 저는 6.0 이상 버전에서의 다중 보안 설정에서 애를 좀 먹어서.. 혹시나 저 같으신 분들이 있으실까봐 글을 남깁니다..! 다름이 아니라 Spring Security 6.0 이상 버전에서는 먼저오버라이드해서 함수를 구현하는 것이 아니라 컴포넌트화 시켜서 진행합니다. 또한 HttpSecurity 안의 내용을 구현하는데 변경점이 있다는 것이 가장 큰 차이점인 것 같습니다. 예를 들어 UserSecurityConfig, AdminSecurityConfig를 만들어서 각 경우에 따라 다른 설정을 적용하고 싶은 경우에 두 가지의 config 파일을 만들 수 있다고 가정하면.. 저의 경우에는 AdminSecurityConfig에서 지정한 부분이 권한 정보에 따라 접근이 막히지 않고 다 접근이 가능한 ("/admin/pay"를 user가 접근 가능) 상황이었습니다. 뭐가 문제인지 한참을 찾던 도중https://docs.spring.io/spring-security/reference/servlet/configuration/java.html공식 문서를 통해 답을 찾았습니다.간략하게 해결법부터 말씀드리자면 path로 접근 제한을 하는 경우에 http.securityMatcher()를 사용해야 한다는 점 입니다. 이렇게 하면 아주 잘 구분이 되더군요..! 혹시나 저처럼 하시는 분이 계실까봐 남깁니다..!@Bean @Order(0) public SecurityFilterChain adminFilterChain(HttpSecurity http) throws Exception{ http .securityMatcher("/admin/pay") .authorizeHttpRequests(request -> request.anyRequest().hasRole("ADMIN")); return http.build(); } @Bean @Order(1) public SecurityFilterChain systemFilterChain(HttpSecurity http) throws Exception{ http .securityMatcher("/admin/**") .authorizeHttpRequests(request -> request .anyRequest().hasAnyRole("SYS", "ADMIN")); return http.build(); } @Bean @Order(2) public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{ http .authorizeHttpRequests(request -> request .requestMatchers(antMatcher("/user/**")).hasRole("USER") .anyRequest().authenticated());
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MEMBER테이블 생성안됨
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요, 다른 MEMBER테이블이 생성되지 않는다는 게시글을 읽고, H2경로 설정에 대한 글 전체 다 읽었지만 여전히 testMember()메서드는 통과하지만 MEMBER테이블이 생성되지 않습니다.... 참고로 로그에 CREATE TABLE( ... )은 정상적으로 나오네요. application.yaml은 다른 강의듣는 분 자료 검색해 참고해서 그대로 복붙했습니다(띄어쓰기 문제ㄴㄴ) jpashop의 경로는 C:에 있습니다..... 추가) 내pc>다운로드 의 경로에 있는 jpashop.trace, jpashop.mv파일을 삭제 후 이렇게 연결했더니 성공했지만 testMember()메서드가 통과하지 못하네요..... 오류메세지는 이렇게 납니다.org.h2.jdbc.JdbcSQLNonTransientConnectionException: Unsupported database file version or invalid file header in file "C:/Users/User/jpashop.mv.db" [90048-214] 제가 궁금한 점은왜 h2.bat실행시 바로 꺼지는가application.yaml과 h2 console의 경로만 맞춰주면 강의를 따라하지 않아도 된다고 하는데 맞는가jpashop의 경로와 h2의 경로를 맞춰야하는가...??
-
미해결스프링 부트 - 핵심 원리와 활용
Caused by: java.net.BindException
내장 톰캣2-서블릿 강의를 수강하고 있는데 이와 같은 오류가 계속해서 발생합니다. 8080포트를 강제 종료 후 다시 실행해보고 톰캣서버포트도 변경해봤는데도 계속 이런 오류가 발생합니다. 이 문제는 어떻게 해결할 수 있나요?
-
해결됨스프링부트 JUnit 테스트 - 시큐리티를 활용한 Bank 애플리케이션
Builder 사용 궁금
제가 선생님 포토그램 강의를 들을 때는 엔티티클래스 위에 @Builder 어노테이션을 붙혔는데 이번강의에서는 엔티티클래스 내부에 생성자를 만들고 생성자메서드 위에 @Builder 어노테이션을 사용한 이유가 있을까요 ?
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
오 이제부터 강의 계속 올라오는건가요?!!
오 이제부터 강의 계속 올라오는건가요?!!