묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
커넥션 세션 질문
1:55 쯤에서 영한님이 커넥션 10개를 생성하면, 세션도 10개 만들어진다고 하셨습니다. 그럼 1개의 커넥션에는 1개의 세션이 만들어진다가 맞나요?커넥션과 세션은 일대일 매칭인건가요?여러 커넥션이 하나의 세션을 바라보거나 하나의 커넥션이 여러 세션을 생성할 수는 없을까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@PostMapping("/order") 에서 @RequestParam 대신 @ModelAttribute 사용하려면
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요 강의에서 사용하신 코드를 이거에서 @PostMapping("/order") public String createOrder(@RequestParam("itemId") Long itemId, @RequestParam("memberId") Long memberId, @RequestParam("quantity") int quantity) { orderService.order(memberId, itemId, quantity); return "redirect:/"; } 이렇게 ModelAttribute 를 사용해서 변경하고 싶은데 값을 조회해보니까 testForm 값이 안들어가게 되는데 이러한 방식이 왜 불가능한지 알고 싶습니다.@PostMapping("/order") public String createOrder(@ModelAttribute TestForm testForm) { orderService.order(testForm.getMemberId(), testForm.getItemId(), testForm.getQuantity()); return "redirect:/"; }TestForm 의 필드입니다.public class TestForm { private Long memberId; private Long itemId; private int quantity; }감사합니다.
-
미해결3. 웹개발 코스 [Enterprise Architecture(EA) X 전자정부프레임워크]
파일을 다운로드 로드중 문제가 생겼습니다
필요한 파일들을 다운로드 해서 심고있습니다이렇게 해서 계속해서 지나가지 않고 계속 다시 시도를 눌러도 경로가 너무 길다고 나옵니다어떻게 해야할까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
GPG 체크 오류
만약 GPG체크오류가 계속 해서 뜬다면 이것을 시도해보세요다운로드한 패키지들을 dnf 명령어를 사용하여 설치합니다. 먼저, 패키지들을 다운로드합니다:wget https://repo.mysql.com/yum/mysql-8.0-community/el/9/x86_64/mysql-community-client-8.0.37-1.el9.x86_64.rpmwget https://repo.mysql.com/yum/mysql-8.0-community/el/9/x86_64/mysql-community-client-plugins-8.0.37-1.el9.x86_64.rpmwget https://repo.mysql.com/yum/mysql-8.0-community/el/9/x86_64/mysql-community-common-8.0.37-1.el9.x86_64.rpmwget https://repo.mysql.com/yum/mysql-8.0-community/el/9/x86_64/mysql-community-icu-data-files-8.0.37-1.el9.x86_64.rpmwget https://repo.mysql.com/yum/mysql-8.0-community/el/9/x86_64/mysql-community-libs-8.0.37-1.el9.x86_64.rpmwget https://repo.mysql.com/yum/mysql-8.0-community/el/9/x86_64/mysql-community-server-8.0.37-1.el9.x86_64.rpm dnf 명령어를 사용하여 GPG 체크 없이 패키지를 설치합니다:sudo dnf install ./mysql-community-client-8.0.37-1.el9.x86_64.rpm --nogpgchecksudo dnf install ./mysql-community-client-plugins-8.0.37-1.el9.x86_64.rpm --nogpgchecksudo dnf install ./mysql-community-common-8.0.37-1.el9.x86_64.rpm --nogpgchecksudo dnf install ./mysql-community-icu-data-files-8.0.37-1.el9.x86_64.rpm --nogpgchecksudo dnf install ./mysql-community-libs-8.0.37-1.el9.x86_64.rpm --nogpgchecksudo dnf install ./mysql-community-server-8.0.37-1.el9.x86_64.rpm --nogpgcheck MySQL 서비스 시작 및 상태 확인sudo systemctl start mysqldsudo systemctl status mysqld이렇게 하면 해결 되는것 같아요 저도 엄청 꼬였는데 이 코드면 해결되네요
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
invalidateHttpSession, clearAuthentication 메서드에 관하여
안녕하세요 강의 잘 수강하고 있습니다. 질문이 있어 글 남기게 되었습니다. SecurityContext 는 기본적으로 SecurityContextHolder에 의해 관리되며, 기본적으로 ThreadLocal 변수에 저장된다고 알고 있습니다. TreadLocal 은 스레드별로 독립적으로 생성되는 변수라고 알고 있는데, 그러면 invalidateHttpSession 메서드는 서버의 세션을 무효화하는 기능이고, clearAuthentication 메서드는 현재 스레드의 SecurityContext 에서 Authenitcation 을 삭제하는거라고 이해하면 될까요?
-
미해결스프링 시큐리티 OAuth2
컨트롤러에서 Authentication이 null 일 때
"/home" 으로 리다이렉트 할 떄 Authentication 이 null로 가져와지는 문제가 있습니다.왜 그럴까?OAuth2AuthenticationToken 은 Principal의 하위 클래스입니다. 이는 ServletRequestMethodArgumentResolver 에서 잡아서 resolve 해줍니다.그런데 여기서 resolve 하는 과정에서 SecurityContext로부터 Authentication 을 꺼내는데 익명사용자일 경우 null 로 반환하게 됩니다. 인증되지 않았다는 것이죠.아까 우리는 인증을 했지만 이 결과가 장기적인 저장을 담당하는 SecurityContextRepository에 저장이 제대로 되지 않았기 때문입니다.CustomOAuth2LoginAuthenticationFilter 의 부모인 AbstractAuthenticationProcessingFilter 가 사용하는 securityContextRepository가 RequestAttributeSecurityContextRepository 또는 NullSecurityContextRepository(예전버전 기준) 로 되어 있습니다.이렇게 되어 있으면 다시 "/home" 으로 리다이렉트되어 요청될 때 SecurityContextHolderFilter에서 인증 결과를 못 불러오는 문제가 생깁니다.실습의 편의상 세션에 저장하는게 좋은데, filter.setSecurityContextRepository(HttpSessionSecurityContextRepository()) 코드를 추가하셔서 설정하시면 될 것 같습니다. 다시 요청이 들어왔을 때 SecurityContextHolderFilter를 거치면서 세션의 Authentication 을 꺼내서 SecurityContext에 담아주기 때문에 성공적으로 인증된 OAuth2AuthenticationToken 을 바인딩 받으실 수 있을겁니다.
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
synchronized 오류
@Service public class StockService { private final StockRepository stockRepository; public StockService(StockRepository stockRepository) { this.stockRepository = stockRepository; } // @Transactional public synchronized void decrease(Long id, Long quantity) { // Stock 조회 Stock stock = stockRepository.findById(id) .orElseThrow(EntityNotFoundException::new); // 재고 감소 stock.decrease(quantity); // 갱신된 값을 저장 // stockRepository.save(stock); } }안녕하십니까! 제가 알기로는 영속성 컨텍스트의 변경감지 기술로 인해서 별도의 save 메서드를 실행하지 않아도 값이 update 되는 걸로 알고있는데 그럴 경우 @Transactional를 제거하면 영속성 컨텍스트로 관리하지 않기 때문에 테스트를 진행하면 오류가 발생하고있습니다ㅠㅠ 혹시 제가 잘못된 지식을 갖고있는건가요?ㅠ
-
미해결견고한 결제 시스템 구축
Payment Order 테이블 스키마
https://algoalgo.notion.site/Payment-Service-88c97b1300cd4224b5790b328ab0e9dc페이지에 Payment Order 테이블 스키마 내용중 order_id 컬럼이 UNIQUE 로 작성되어 있습니다. 강의 내용과 맞지 않는 부분이라 수정이 필요해 보입니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Model 질문
@RequestMapping("/response-view-v2") public String responseViewV2(Model model) { model.addAttribute("data", "hello"); log.info("data={}", model.getAttribute("data")); return "response/hello"; }여기서 받는 파라미터 Model은 인터페이스고 이를 구현한 몇 가지가 있습니다. 구현된 것들은 addAttribute 메서드 또한 구현해 놨는데 어떤 게 model로 넘어오는지 모르겠습니다.ㅠpublic class ConcurrentModel extends ConcurrentHashMap<String, Object> implements Model { public ConcurrentModel(String attributeName, Object attributeValue) { this.addAttribute(attributeName, attributeValue); } }몇가지 구현체들중에 같은 메서드를 가지고있고, 이걸 사용하는 거 같은데 어떻게 이게 선택이 되는 건가요??
-
미해결스프링 핵심 원리 - 기본편
섹션 5 getMemberRepository() 질문
섹션5의 @Configuration과 싱들톤 부분에서 강사님은 getMemberRepository()를 가져와서 쓰시는데 저는 오류가 나고 보니까 생성이 안되어있습니다. 그래서 이전에 강의에서 제가 빼먹었나 하고 찾아봤는데 이전 강의에서도 만드시는 부분은 없어서 여쭤봅니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
실무 백엔드, 프론트엔드 관하여 질문드립니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 아니요2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요?예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의의 실습은 Spring + Thymeleaf 를 이용하여 구현하는데, 실제 현업에서는 백엔드와 프론트엔드가 분리되어 각각 개발할 수도 있는데, 타임리프는 JSP와 같이 프론트단에 서버 관련 로직이 연동되어 분리하여 각각 분담하기엔 어려움이나 프론트의 불만이 있지 않을까 생각되는데, 실제 현업에서는 어떻게 진행하는지 궁금합니다. (서버 개발자가 프론트까지 담당하면 어려움이 없겠으나, 분리되어 프로젝트를 진행하는 경우에도 타임리프를 사용하는지 궁금합니다. )(JSP는 공부한적 있지만 실제 현업에서 사용해본적은 없습니다)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
오류가 납니다!!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]WARNING: A Java agent has been loaded dynamically (C:\grade\caches\modules-2\files-2.1\net.bytebuddy\byte-buddy-agent\1.14.16\4a451ee6484abac3a498df0f3b33ed00a6fced4d\byte-buddy-agent-1.14.16.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more informationWARNING: Dynamic loading of agents will be disallowed by default in a future releaseJava HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 이런식으로 오류나는데 어떻게 해결해야 할까요??
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
섹션 6. 질문
@PostMapping("/request-body-string-v3") public HttpEntity<String> requestBodyStringV3(HttpEntity<String> httpEntity, @RequestHeader MultiValueMap<String, String> headerMap) throws IOException { String messageBody = httpEntity.getBody(); log.info("messageBody={}", messageBody); return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED) }교재에 보니, 이렇게 나와있는데 적용을 해봤더니 Hello World가 아니라 제가 h로 입력을 보내면 H로 화면에 출력됩니다.제대로된 출력이 되지 않는 이유와 responseHeaders를 넣으면 어떻게 사용되는지 궁금합니다.
-
미해결Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 1부
예시코드는 webflux의 이점보단 webclient의 이점 아닌가요?
for문 5번 도는데, resttemplate은 blocking / webclient은 non-blocking 이라 결과가 달라진 것 같아서요 보내는게 non-blocking 이면 mvc도 결과가 동일 했을 것 같아요
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
파일에서 찾기 단축키 알려주실 수 있나요?
혹시 저 파일에서 찾기 단축키가 뭔지 알 수 있을까요???너무 유용해보이는데 여기저기 찾아봐도 잘 못 찾겠어요...
-
미해결스프링 핵심 원리 - 기본편
객체 생성 후 의존관계 주입
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]객체 생성 후 의존관계 주입이라고 했는데,자동 의존관계 주입은 앞에서 말했듯이 다 생성자 주입으로 할 텐데 그러면 수동주입을 말해서 객체생성 후 의존관계 주입이라고 하는 건가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
중간중간 나오는 강사님의 노트도 볼 수 있나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]중간중간 나오는 강사님의 노트도 혹시 볼 수 있나요??
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
컨트롤러에서 어설픈 엔티티를 생성하면 안 되는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] 해당 부분에서 컨트롤러에서 어설픈 엔티티를 생성하지 말라고 하셨습니다그 말인 즉슨 컨트롤러에서 준영속 엔티티를 생성해서 운영을 지양하라는 말씀이신데 이유가 궁금합니다준영속 상태의 엔티티는 불안정하니 가급적 자제해야한다는 이유일까요?아니면 단순 서비스 계층에 수정할 파라메터만 "명확"하게 던지는 게 좋은 설계이므로 그렇게 말씀하신 건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Exception 던질 때 String 으로 반환값을 설정하는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] @GetMapping("/api/response-status-ex2") public String responseStatusEx2() { throw new ResponseStatusException(HttpStatus.NOT_FOUND, "error.bad", new IllegalArgumentException()); } 이 코드를 보면 String 을 반환하게 되어 있는데 저렇게 exception 던지면 String 반환하는 게 아니지 않나요? void 대신 String 을 쓰는 이유가 있는지 궁금합니다!
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
커스텀 UserDetailService 구현하기 중 질문사항이 있습니다!
항상 퀄리티 높은 강의 감사합니다!몇가지 궁금한게 있어서 질문드립니다. @Service어노테이션으로 인해 이미 빈으로 등록되어서 .userDetailsService(userDetailsService)을 쓰지 않아도 자동으로 등록이 되는걸로 알고있었는데 코드를 쓰는 이유가 있나요?왜 @Service 이름을 "userDetailsService"로 하신건지 궁금합니다. SecurityConfig 에서 private final UserDetailsService userDetailsService; 에서 FormUserDetailsService대신 UserDetailsService을 쓰는 이유가 뭔지 궁금합니다. (그냥 클래스를 그대로 쓰면 안되는건가요?)