inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

11분 42초 SecurityConfig 적용안됨

미해결

스프링부트 시큐리티 & JWT 강의

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 11분 42초에 나오는 시점에 permitAll() 때문에 로그아웃 상태일때 처럼 되야되는데 login 창이 계속 나옵니다. user,manager도 403이 안나오고 login으로 갑니다..

  • spring
  • Spring Security
  • jwt
현승 이 댓글 2 좋아요 0 조회수 1209

window에서 gradlew build시 cmd 환경변수 오류

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. Please set the JAVA_HOME variable in your environment to match the location of your Java installation. 에러 발생 해당 폴더에서 gradlew build 를 하는데 버전 오류가 계속 나요. 환경변수 설정 제대로 되어있는데도 계속 오류납니다 ㅠ 버전확인 해보면 버전 일치하고 경로도 맞아요... 도대체 뭐가 문제일까요 ㅠㅠ 도와주세요..

  • java
  • 환경변수
  • spring-boot
  • cmd
  • MVC
  • spring
  • java
heily 댓글 1 좋아요 0 조회수 949

스프링 DB 접근기술에 대한 전반적인 내용 질문있습니다

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원가입때 넣은 정보들을 (1)순수jdbc이든, (2)jdbc Template이든, (3)JPA이든 다 저장할 방법은 있는데, 1에서 2로 넘어갈땐 중복코드를 많이 지워주고, 2에서 3으로 넘어갈땐 더 코드가 짧고 간결해진다. 라고 이해했는데 맞나요?? jpa가 저장하는 방법은,, 회원정보 들어오면, hibernate가 그 정보가지고 알아서 select, insert문 만들어서 db에 자동으로 저장해준다 인가요? 코드가 간결하다는 것 외에 jpa가 앞선 2개의 방법과는 다른게 무엇인가요?? JPA가 정확히 어떤건지 잘 감이 안옵니다... 서버와 DB를 연결해주는 3가지 방법중 하나인데, 그중에서 sql을 직접 작성하지 않는 가장 간결한 방법인가요??

  • spring
  • MVC
  • java
  • spring-boot
  • java
  • spring
팡휘 댓글 1 좋아요 1 조회수 253

개방폐쇠원칙 질문있습니다

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

제가 이해한바로는, jdbc 회원 레포지토리를 변경한 후에 스프링 설정을 변경(SpringConfig 파일)해줘야 하는데, 이때 개방폐쇠원칙에 의해(?) 다형성을 활용해 springconfig 파일에 있는 코드만 바꿔도 ..... 메모리 저장방식에서 DB저장방식으로 바뀌게 되고, 이로써 더이상 정보가 날아가지 않고 껐다켜도 회원목록이 잘 저장된다..... 인데 혹시 맞게 이해한걸까요 ???? SpringConfig에서 코드를 바꿈으로써 메모리저장에서 DB저장으로 바뀌게 된건가요??? 조금 논외이긴 한데.... 저희가 데이터를 DB에 저장을 했는데 이 DB는 spring이 제공하는 DB인가요? 저는 DB를 약간 무형의 USB정도로 생각하고 있는데 이것도 쓰려면 돈을 내야하지 않나요? SPRING을 공부하는 사람들이 다 DB를 쓰면 이 큰 용량을 회사가 어떻게 감당하는건가요?? 너무 엉뚱한 질문인데... 궁금합니다

  • spring
  • MVC
  • java
  • spring-boot
  • spring
  • java
팡휘 댓글 1 좋아요 0 조회수 276

ID 생성이 랜덤인가요??

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

ID는 랜덤으로 생성된다고 하셨는데 그래도 선생님 화면 보니까 1,2,3,4 처럼 순서는 있더라고요 근데 저는 갑자기 33 34로 시작하는데 뭔가 잘못돼서 이렇게 되는건가요 아니면 그냥 랜덤으로 배정받은건가요 ???

  • spring
  • spring-boot
  • java
  • MVC
  • java
  • spring
팡휘 댓글 1 좋아요 1 조회수 497

자동완성도 안되고 회색으로 뜨는 이유가 무엇인가요??

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

properties 파일에 쓰고있는데, 자동완성도안되고 회색으로 뜨네요 뭔가 문제가 있는것같고 warning도 뜹니다 혹시 이유가 무엇인가요 ???

  • spring
  • spring-boot
  • java
  • spring
  • MVC
  • java
팡휘 댓글 1 좋아요 1 조회수 1349

cmd에서 h2.bat 실행한거 끄면 안되나요??

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

선생님께서 이제 이거를 끄면 정보가 날아가니까 끄면 안된다고 하셨는데 그럼 cmd에서 h2.bat을 실행해놓은 상태로 계속 cmd를 켜놔야하는건가요?? 나중에 insert를 많이 해서 정보를 DB에 많이 넣어놓은 상태면 노트북도 못끄나요??

  • java
  • spring
  • java
  • spring
  • db
  • MVC
  • spring-boot
팡휘 댓글 2 좋아요 0 조회수 683

DataSourceUtils.releaseConnection 질문

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

DataSourceUtils.releaseConnection() 을 사용하면 커넥션을 바로 닫는 것이 아니다. 트랜잭션을 사용하기 위해 동기화된 커넥션은 커넥션을 닫지 않고 그대로 유지해준다. 트랜잭션 동기화 매니저가 관리하는 커넥션이 없는 경우 해당 커넥션을 닫는다. 라고 이전 강의에서 말씀 하셨는데 그러면 releaseConnection는 트랜잭션만 종료시키고 커넥션은 살리는것을 뜻하나요? 만약 맞다면 트랜잭션의 종료는 커밋이나 롤백을 통해 이루어지는데 releaseConnection를 사용하여 트랜잭션만 종료시키면 커밋이나 롤백을 사용할수 없지않나요?

  • spring
댓글 1 좋아요 3 조회수 660

dto와 도메인의 업데이트 메소드를 만들어 보았습니다. 이렇게 하는게 맞는건가요?

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

강의에서 말씀하신대로 만들어 보았습니다. 이렇게 하는것이 맞는건지 궁금하여 질문드리게 되었습니다. Book 도메인 UpdateItemDto ItemService ItemController 항상 감사합니다.

  • java
  • spring-boot
  • JPA
  • 웹앱
  • spring
ansxogh97 댓글 1 좋아요 0 조회수 559

controller 패키지의 역할은 무엇인가요??

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

controller의 정확한 역할이 무엇인가요?? controller라는 이름은 그냥 그렇게 쓰기로 한 암묵적인 약속인가요? 아니면 원래 문법상 그렇게 써야하는건가요?? controller 안에 있는 파일들은 항상 @Controller로 감싸주는 것 맞나요??? 그리고 조금 논외이긴 한데 자바에서 패키지랑 디렉토리의 차이가 무엇인가요?? 아이콘이 달라서 차이가 있을거라고 생각되는데 정확한 차이를 모르겠습니다 답변해주시면 감사하겠습니다 !!

  • java
  • spring
  • java
  • spring
  • MVC
  • spring-boot
팡휘 댓글 1 좋아요 1 조회수 706

스프링빈과 의존관계에서 방법의 차이가 무엇인가요

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

스프링 빈과 의존관계에서, (1)컴포넌트 스캔과 자동 의존관계 설정 / (2) 자바 코드로 직접 spring 빈 등록하기 총 2가지 방법으로 설명해주셨고 2가지 방법 모두 알아야한다고 말씀해주셨는데, 두 방법이 사용되는 상황이 다른가요?? 각 방법이 어떤 차이가 있고 장단점이 있다면 궁금합니다!

  • spring
  • java
  • spring-boot
  • bean
  • spring
  • MVC
팡휘 댓글 1 좋아요 0 조회수 642

HelloTraceV1 주입하는이유

해결됨

스프링 핵심 원리 - 고급편

안녕하세요 제가 뭔가 기초가 부족한것 같긴한데 질문드립니다 HelloTraceV1 구현체는 빈으로 등록해서 OrderControllerV1에 주입하는 이유가 무엇인가요?? 인터페이스라면 OCP원칙을 지킨다는이점으로 이해할수있는데 new로 생성하지않고 구현체를 직접 등록하는이유는 따로 있나요?? 이부분에선 OCP원칙이 아닌 스프링빈의 싱글톤,생명주기 관리 등의 이점을 얻기위해 인가요?? 혹은 훗날 HelloTraceV1이 변경될수있는 가능성을 염두하는건가요??

  • spring
  • 디자인-패턴
댓글 1 좋아요 0 조회수 300

ApplicationContext(), AnnotationConfigApplicationContext() 차이

미해결

스프링 핵심 원리 - 기본편

둘의 차이는 ApplicationContext가 상위 인터페이스라 기능이 적어서 AnnotationConfigApplicationContext()를 쓴다고 알고있는데 어차피 이거나 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 이거나 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 결국 둘 다 new로 AnnotationConfigApplicationContext()를 구현해 줬으니 똑같은 기능을 사용할 수 있는 것 아닌가요? 왜 ApplicationContext를 사용하면 getBeanDefinition()메소드를 이용할 수 없는 것이죠?

  • spring
  • oop
라이언 댓글 1 좋아요 0 조회수 613

POST 요청시 메서드로 들어오는 BookForm 객체의 생성 주체가 누구인가요?

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요. 코드를 읽어보며 흐름을 파악하다가 궁금증이 생겨 질문 드립니다. public class ItemController { @GetMapping("/items/new") public String createForm(Model model) { model.addAttribute("form", new BookForm()); return "items/createItemForm"; } @PostMapping("/items/new") public String create(BookForm form) { ... 생략 } /items/new 에 GET 으로 접근하면, createForm() 이 호출되어 BookForm 객체가 생성되고, Model 객체를 통해 viewResolver로 넘어가는 로직은 이해가 됩니다. 그러나 POST 요청을 보내면, create() 가 호출되어 BookForm 객체를 인자로 받는데요. 이때, 인자로 들어온 BookForm 객체는 GET 요청시 보내준 BookForm 객체와 다른 객체더라구요. 아마 누군가가 HTML input 태그에 입력된 값을 BookForm 객체로 변환시켜 넣어주는 것 같은데요. 누가 이 책임을 갖고, 어떻게 데이터를 객체로 변환시키는지 그 흐름이 궁금합니다. 마치 @ResponseBody 에서 HttpMessageConverter 가 객체를 JSON으로 변환시켜준 것처럼 이번에도 스프링 이 HttpMessageConverter 를 통해 HTML input 데이터를 객체로 변환시켜 Controller 에게 반환시켜 주는 걸까요? 감사합니다.

  • java
  • spring-boot
  • 웹앱
  • JPA
  • spring
anthologia 댓글 1 좋아요 1 조회수 452

메시지 경로를 등록 할 수는 없을까요?

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

회원 가입을 할 때의 텍스트들과 에러메시지들을 모두 분리해서 여러 파일이 나왔을때 application.properties 에 , 콤마를 사용해서 다 등록 할 수 도 있겠지만 /** 이런식의 등록은 방법이 없을까요?

  • spring
  • MVC
댓글 1 좋아요 0 조회수 256

@EntityGraph(attributePaths={"team"})

미해결

실전! 스프링 데이터 JPA

안녕하세요, 영한님! 강의 정말 잘 듣고 있습니다! 강의 중 궁금한 부분이 생겨 질문 드립니다. `@EntityGraph(attributePaths={"team"}) ` attributePaths 속성에 들어가는 이름이 연관 관계가 걸려있는 필드의 이름이 들어가는 건가요?

  • spring
  • JPA
  • spring-boot
  • java
나 좀 도와줘요 댓글 1 좋아요 3 조회수 344

mysql wait_timeout 관련 질문입니다.

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

안녕하세요. 실무에서 트랜잭션과 관련해서 해결할 이슈가 있어서 급하게 영한님 강의를 듣고 있는데요. 일단 제가 해결하고자 하는 이슈는 다음과 같습니다. 대용량의 파일 데이터를 읽어서 디비에 반영해야 하는데 디비의 wait_timeout 시간보다 트랜잭션이 길어져서 타임아웃이 나서 롤백이 되어버립니다. 그래서 영한님 강의 듣고 REQUIRES_NEW 로 다른 트랜잭션을 만들어서 테스트를 해보는 중인데요. 자식 트랜잭션은 성공을 하지만 부모 트랜잭션은 타임아웃으로 롤백이 되는거 같습니다. 아마 강의 내용처럼 Suspending current transaction 이것 때문에 부모 트랜잭션이 대기 상태에 빠져 자식 트랜잭션을 수행후 다시 부모 트랜잭션이 커밋 하려는 시점에 타임아웃이 나는거 같은데... 이런 경우에 어떻게 처리 할 수 있을까요? 그리고 강의를 듣다보니 REQUIRES_NEW 로 트랜잭션을 생성하는건 결국 커넥션풀을 하나씩 사용하는거라 새로 트랜잭션을 계속 생성하는것도 좋은 방법은 아니라는 생각이 드는데요. 다른 대안이 있을지 궁금합니다. 파일의 크기에 따라 일정 정도의 크기로 잘라서 REQUIRES_NEW 로 새로운 트랜잭션을 계속 만들려고 생각했는데 그러면 커넥션풀을 너무 많이 사용하는건 아닐까 하는 생각이 듭니다. 그리고 만약 각각의 트랜잭션으로 분리를 한다면 하나의 트랜잭션에서 에러가 났을 경우 각각 다른 트랜잭션인데 이걸 다시 전부 롤백할 수 있는 방법이 수동으로 하는거 말고는 없을까요? 두서 없이 질문을 드렸는데 정리해보면 다음과 같습니다. 파일 데이터를 읽어서 디비에 반영시 디비 wait_timeout 발생 REQUIRES_NEW 로 새 트랜잭션 만들어서 디비 반영비 자식 트랜잭션 반영 성공, 부모 트랜잭션 타임아웃 롤백 파일 크기에 따라 일정 정도로 잘라서 REQUIRES_NEW 로 새 트랜잭션을 계속 만들어서 디비 반영하는건 커넥션풀을 파일 크기에 따라 너무 많이 먹을거 같은데 다른 대안이 있을지? 만약 각각의 트랜잭션으로 분리해서 반영하다가 하나의 트랜잭션에서 에러가 발생했을 경우 모든 트랜잭션을 롤백할 방법이 있을지?

  • spring
opensesame 댓글 1 좋아요 1 조회수 442

스프링 데이터 jpa

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

스프링 데이터 jpa는 기본적인 함수를 제공한다고 했는데 기본적인거 말고는 직접 개발자가 작성해야하는건가요?

  • MVC
  • spring-boot
  • spring
  • java
박준형 댓글 1 좋아요 0 조회수 265

강의를 다 들은 후 공부는 어떻게 하는게 좋을까요?

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

강의를 들으면서 코드를 다 따라 쳐보고, 적당히 필기하면서 듣고... 그러고 있는데 강의를 다 들으면 해당 내용들에 대해 어떻게 공부를 해야하나요?? 강의 전체 한바퀴를 다 돌린 후에 어떻게 공부를 해야하는지 궁금합니다 안보고 직접 만들기에는 제가 너무 실력이 딸리는데.... 추천하시는 공부법이 있을까요???

  • 공부법
  • java
  • spring
  • 공부
  • spring-boot
  • MVC
팡휘 댓글 1 좋아요 2 조회수 1478

Page를 1부터 시작하기(Pageable, Page 커스텀) 질문 있습니다.

미해결

실전! 스프링 데이터 JPA

안녕하세요. 강의 열심히 듣는 중에 궁금한 점이 있습니다. 17:30초 쯤에 Page를 1부터 시작하기 부분에서 1. Pageable, Page를 파리미터와 응답 값으로 사용히지 않고, 직접 클래스를 만들어서 처리한다. 그리고 직접 PageRequest(Pageable 구현체)를 생성해서 리포지토리에 넘긴다. 물론 응답값도 Page 대신에 직접 만들어서 제공해야 한다. 이 부분을 직접 구현해보려고 했는데 제가 놓치는 부분이 있는 건지 잘 안 되더라구요. 그래서 https://inflearn.com/questions/201572 이 질문에 답변해주신 분의 블로그를 참고하여 커스텀을 해봤습니다. package study.datajpa.dto; import lombok.Getter; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Slice; @Getter public class PageableCustom { private boolean first; private boolean last; private boolean hasNext; private int totalPages; private long totalElements; private int page; private int size; public PageableCustom() { } public PageableCustom(PageImpl page) { this.first = page.isFirst(); this.last = page.isLast(); this.hasNext = page.hasNext(); this.totalPages = page.getTotalPages(); this.totalElements = page.getTotalElements(); this.page = page.getNumber() + 1; this.size = page.getSize(); } public PageableCustom(Slice slice) { this.first = slice.isFirst(); this.last = slice.isLast(); this.hasNext = slice.hasNext(); this.page = slice.getNumber() + 1; this.size = slice.getSize(); } } package study.datajpa.dto; import lombok.Getter; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.SliceImpl; import java.io.Serializable; import java.util.List; @Getter public class PageCustom<T> implements Serializable { private List<T> content; private PageableCustom pageableCustom; public PageCustom(List<T> content, Pageable pageable, long total) { this.content = content; this.pageableCustom = new PageableCustom(new PageImpl(content, pageable, total)); } public PageCustom(List<T> content, Pageable pageable, boolean hasNext) { this.content = content; this.pageableCustom = new PageableCustom(new SliceImpl(content, pageable, hasNext)); } } @GetMapping("/memberscustom") public PageCustom<MemberDto> listCustom(Pageable pageable) { Page<MemberDto> map = memberRepository.findAll(pageable).map(MemberDto::new); return new PageCustom<MemberDto>(map.getContent(), map.getPageable(), map.getTotalElements()); } 결과적으로는 커스텀에 성공했지만 코드 내용부분에서 뭔가 아쉬운 부분이 있더라구요. 이게 블로그 보면서 작성한 MemberController 단 내용인데, 보시면 listCustom(Pageable pageable) 에서 Pageable pageable 이 파라미터를 그대로 하지말고 이 부분 또한 커스텀해서 PageRequest.of()를 이용하라고 설명하시더라구요. 혹시 PageRequest.of()를 활용해서 코드를 좀더 최적화 할 수 없을까요? 제가 놓치는 부분이 있는 것 같은데 잘 떠오르지 않아서 이렇게 질문 드립니다! https://drive.google.com/file/d/1I__dQwuBmtkUdvT5RahN8ksF3Tr21UP8/view?usp=sharing 아! 제 프로젝트 구글 링크 드립니다!ㅎㅎ 항상 양질의 강의 감사합니다!

  • spring-boot
  • java
  • JPA
  • spring
Mr.Lee 댓글 1 좋아요 0 조회수 3098

인기 태그

인프런 TOP Writers

주간 인기글