묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
MyBatis 환경설정과 조회하기 문의
MyBatis 설정 & 조회 문의드립니다.우선 하단의 youtube 영상의<logger name="com.boot.sailing" level="info" /> <root level="Debug"> <appender-ref ref="console" /> </root>추가하여 확인하였지만 error의 구문 자체가 모호해서 어디에서 문제가 발생을 하는지를 모르겠습니다.ioC 구성도 문제 되는 게 없고 코드 상의 오타도 없고 mybatis 쿼리 문도 문제가 없는데 현재 hikariCP에서 문제가 발생하고 있습니다.코드도 점검하고 행여 눈에 보이지 않는 오타 때문인가 싶어 소스코드 내용을 복사하여 붙여 가며 확인을 해보았지만 달라지는 점이 없는데 어디에서 문제가 발생하는지를 모르겠습니다.구글링을 찾아봐도### Error querying database. Cause: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: null ### The error may exist in file [D:\workspace\sailing\build\resources\main\sqlmapper\CoffeeMenu.xml] ### The error may involve com.boot.sailing.dao.MenuDao.doList ### The error occurred while executing a query ### Cause: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: null에러의 경우 대부분 코드 전반적인 부분을 봐야 한다는 글들이 대부분인 관계로 문의드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
설정 관련
수업과는 별개의 질문이지만 ctrl + p 해서 파라미터 힌트를 볼 때 현재 입력해야 하는 부분이 회색배경에 파란색 글씨라 너무 가독성이 안나와서 진한 검정색이나 가독성 좋은 색으로 변경하고 싶은데 혹시 아시는분 계실까요,, 구글링 실력이 제가 부족한지 잘 나오지가 않아서 질문 남겨봅니다 ㅠㅠ참고로 테마는 지금 만족해서 저 색상만 변경하고 싶어요 !
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의에 언급된 개념 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)너무 사소한 질문이지만 작은 부분에서 혼동이 와 구글링 후 질문드립니다.강의시간 7:25 @PostMapping해당 강의에서 구성하신 로직은 API가 아니라고 이해가 됩니다. '다음으로'에서도 API와 분리된 개념으로 말씀하신 것 같습니다. 제가 알기로는 해당 로직도 API의 종류라고 알고 있습니다.강사님이 말씀하신 API는 JSON이나 XML로 응답코드를 얻는 RESTful API를 설명하신 것일까요,,? API 개념에 대한 혼동이 옵니다. 강의시간 11:45 '앞 단이든 서비스 계층이든 id에 대한 권한 여부 체크하는 것을 서버에 로직을 추가'하라고 하셨습니다. 앞 단이든 서비스 계층이든 상관없다고 하셨으니 여기서 말씀하신 서버는 백 단만 말씀하시는게 아닌 것으로 이해하면 되나요? [질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결실전! 스프링 데이터 JPA
db에서 데이터 확인이 안됩니다..
안녕하세요, 강의 수강 중에 궁금한 점이 있어 질문드립니다! 섹션4의 벌크성 수정 쿼리 부분을 실습하고 있는데요, 테스트 코드 실행 후 db에서 변경된 내용을 확인하려고 했는데 데이터가 없다고 나옵니다..테스트 클래스에 @Rollback(false)은 설정했는데 어떤 부분이 문제인 걸까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OSIV 관련하여 질문드립니다!
User user = userQueryService.findById(userId); postService.createPost(user)OSIV를 끈채로 특정 유저가 게시글을 작성하는 로직을 Command와 Query를 분리하여 위와 같이 컨트롤러에 작성하고자 합니다.OSIV가 꺼져있기에 user는 준영속상태로, createPost 트랜잭션 안에서 user를 변경하지 않고 post 생성에만 사용한다면 위와 같이 사용하는게 맞는지 궁금합니다!만약 createPost에서 user를 변경하는 상황이 발생한다면, 예외가 발생하는지도 궁금합니다!
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
우선 해야하는 테스트 방식이 궁금합니다.
안녕하세요 :)평소 영한님 강의를 통해 많은 가르침을 받고 있는 주니어 개발자입니다.만약 별도 Test DB 없이 Service 계층 테스트를 한다면,크게 다음과 같은 세가지 테스트 방식이 있는 것으로 이해하였습니다!Service 테스트에 @Transactional 추가하여, 테스트 수행 후 롤백실제 DB에 수행하므로, insert시 유니크한 컬럼에 대해 이미 동일 데이터가 존재한다면 테스트 실패Repository 의존성을 Mock 처리Mock을 통해 행위를 검증하게되므로 보다 깨지기 쉬운 테스트가됨임베디드 DB에 테스트 수행임베디드 DB와 운영환경 DB의 차이점이 있을 수 있음 세가지 방식 모두 각자의 트레이드오프가 있을 것 같은데요.권장되는 방식이나, 주로 사용하시는 테스트 방식이 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 ID는 언제 어떻게 생성이 되나요?
세션 ID는 언제 어떻게 생성이 되나요?GPT의 답변으로는 클라이언트가 서버에 최초 접근할때 세션ID를 생성한다고 하는데. 궁금한점은스프링부트를 기준으로 세션ID가 요청이 처리되는 어느과정에서 생성되는지 궁금합니다.서버에서 세션방식을 사용하지 않아도 세션 ID는 항상 생성되는것인지 궁금합니다.스프링부트 기준으로 세션의 생명주기 디폴트 값이 어떻게 되는지 궁금합니다.
-
해결됨[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]
JS 부분을 줄이고 싶습니다
안녕하세요. 강좌를 듣다가 "이 부분은 좀 더 백엔드 단에다 옮기면 좋을 것 같은데?" 라는 생각이 들어서요. 실제 현업에서도 유효성 검증은 JS 단에서 주로 처리하는지, 백엔드 단에서 주로 처리 하는지 궁금합니다.check() 같은 경우에도 (물론 지금은 강좌 범위와 벗어나지만) @Valid 등 여러 처리할 수 있는 수단이 있을 것 같은데, 아직 초보라 잘 모르겠습니다. 백에도서 충분히 처리 가능한지, 그리고 현업에서도 백단에서 유효성 검증에 대한 책임을 더 두는지 궁금합니다.
-
미해결스프링 시큐리티 OAuth2
OAuth 2.0 Authorization Grant Code 네이버 로그인 구현
안녕하세요 정수원님 강의 내용과 조금 다른 부분이긴한데 질문드리고자 합니다.Vue와 Spring Boot(Spring Security OAuth Client로 활용)로 네이버 로그인을 구현해보고 있습니다.웹, 안드로이드, iOS 등에 대한 소셜로그인을 Authorization Grant Code방식으로 구현하려고 하고 있으며 REST API 방식으로 동작하도록 하고싶습니다.하지만 Spring Security의 org.springframework.boot:spring-boot-starter-oauth2-client 의존성을 추가하여 OAuth2UserService를 구현하게되면 백엔드에 your-server-host/ oauth2/authorization/naver로 요청을 보내면 사용자에게 로그인을 받고 Authorization Grant Code를 받아와 AccessToken을 반환받고 이를 통해 UserInfo를 Resource Server로부터 받아오는 과정을 처리해줍니다.이 과정속에서 프론트에게 로그인 성공시 실행되는 AuthenticationSuccessHandler 구현 과정에서 sendRedirect를 통해 accessToken과 refreshToken을 전달하려고 했으나 이런 방식은 REST API에 적합하지 않은것 같다고 느껴집니다.심지어 front에서 버튼을 클릭하면 GET 요청으로 /oauth2/authorization/naver를 호출하도록 해보려고 했으나 이 경우에 네이버 로그인 호출하는 과정에서 CORS에러가 발견되어 하이퍼링크로 호출하도록 구현하였습니다. 위의 배경으로 궁금한 점은 다음과 같습니다.프론트엔드와 Authorization Grant Code를 REST API 방식으로 구현하기 위해서는 어떻게 해야할까요? 제가 생각한 방식과 굉장히 유사한 블로그 포스팅을 발견했는데 Spring Security는 사용하지 않는 것 같습니다.(https://blog.naver.com/PostView.naver?blogId=varkiry05&logNo=222295764870) Spring Security를 활용하는 방안이 있다면 추천 부탁드립니다.. 혹은 굳이 Spring Security를 사용하지 않고 구현해도 된다고 생각하시는경우에도 의견주시면 감사하겠습니다.위의 경우에는 client-id를 프론트에서 관리하며 강좌에서 이런 경우에는 보안상의 이슈가 발생할 수 있다고 하셨는데 어떻게 대안점이 있을까요? (https://www.rfc-editor.org/rfc/rfc6749#section-2.3.1) rfc6749에서는 client-id는 secret이 아니라고 하는것 같습니다. 제가 처음 구현하려던 방식과 유사한 tech blog를 찾았습니다. 내부적인 커스터마이징을 통해 redirection을 구현한 것 같습니다.(https://tech.kakao.com/2023/01/19/social-login/) 이때 accessToken과 refreshToken을 redirect시킬 때 param으로 넘긴다면 url주소로 토근값들이 보일것인데 보안상으로 괜찮을까요? ps.실제로 https://olive.kakao.com/login (카카오 테크 블로그에 소개된 redirection이 구현된 페이지)의 js 코드를 까보니 <a> 태그 형식의 하이퍼링크로 호출함을 확인했으며, redirect되는 callback url에서 token값을 확인할 수 있음을 크롬 개발자도구 네트워크탭에서 확인했습니다. 감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
안녕하세요 싱글톤 컨테이너에 대해 질문이 있습니다.
스프링 컨테이너가 객체 인스턴스를 싱글톤으로 관리한다. 라고 이해를 했습니다. 그렇다면 사용자가 10명이 존재하고 이 사용자 10명 전부가 memberService 이름을 가지는 빈 객체를 호출 한다고 했을때 첫번째 사용자가 호출해서 memberService 객체를 사용하고 있을때 나머지 사용자 9명은 첫번째 사용자의 memberService 객체 사용이 끝날때까지 대기하고 있어야 하나요?만약 1번 처럼 대기하고 있는게 맞다면 사용자가 100만명과 같이 대규모 사용자일때도 스프링 컨테이너가 객체 인스턴스를 싱글톤으로 잘 관리를 할 수가 있나요? 성능적인 부분에서 부하가 오지는 않을까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Content-Type, Media Type 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의 중 Content-Type 과 Media Type 부분이 헷갈리는데 의미상으로는 같아 보이는데 같다고 봐야할까요?
-
해결됨스프링 핵심 원리 - 기본편
@BeforeEach 에러
MemberServiceTest를 실행하면 memberService에서 NullPointException이 뜹니다. 찍어보니까 beforeEach()메서드보다 Join() 메서드가 먼저 실행되는거 같은데 뭐가 문제일까요?.. 추가적으로 OrderServiceTest는 beforeEach가 먼저 들어와서 오류 없이 실행됩니다..!
-
해결됨스프링 부트 - 핵심 원리와 활용
StockConfigV1 오탈자 제보
안녕하세요 영한님!메트릭 등록5 - 게이지 강의 듣던 도중에 오탈자가 있는것 같아서 제보 드립니다StockConfigV1 작성 시 myStockMetric Bean 등록 부분에서 PDF 자료에서는 orderService가 아닌 orderService.getStock() 으로 되어 있습니다.return new MyStockMetric(orderService.getStock(), registry);영상은 orderService로 작성하셔서 강의를 듣는데 무리는 없지만 공유 주신 PDF 자료와는 달라서 제보 드립니다!매번 좋은 강의 내주셔서 감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
pdf 자료 3. 스프링 핵심 원리 이해2 - 객체 지향 원리 적용 4페이지에 질문이 있습니다.
지금 코드는 기능을 확장해서 변경하면, 클라이언트 코드에 영향을 준다! 따라서 OCP를 위반한다.클라이언트 코드에서 클라이언트가 클라이언트 - 서버 할때 그 클라이언트 인가요? 클라이언트 코드라는게 무슨 의미인건가요? 감사합니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@InitBinder 질문있습니다
강사님께서 Validator 분리2 4:31초에ItemValidator,UserValidator,이렇게 webDataBinder에 여러개를 등록했을때구분할수있어야하는데 그때 사용되는 메서드가supports 그때에 사용되는거라고 하셨는데@Controller @RequiredArgsConstructor @RequestMapping("/test") public class ValidationTestController { private final TextValidator textValidator; private final NameValidator nameValidator; @InitBinder public void init(WebDataBinder webDataBinder) { webDataBinder.addValidators(textValidator); webDataBinder.addValidators(nameValidator); } @GetMapping("/index") public String myView( @Validated @ModelAttribute NameObject nameObject, Model model) { model.addAttribute("nameObject", nameObject); return "MyView"; } }@Component @Slf4j public class NameValidator implements Validator { @Override public boolean supports(Class<?> clazz) { return NameObject.class.isAssignableFrom(clazz); } @Override public void validate(Object target, Errors errors) { NameObject myTarget = (NameObject) target; if(myTarget.getName().equals("error")){ errors.reject("error"); } } } @Component @Slf4j public class TextValidator implements Validator { @Override public boolean supports(Class<?> clazz) { return TextObject.class.isAssignableFrom(clazz); } @Override public void validate(Object target, Errors errors) { TextObject myTarget = (TextObject) target; if(myTarget.getText().equals("error")){ errors.reject("error"); } } } @Data public class NameObject { private String name; }@Data public class TextObject { private String text; }여기서 실행을 할경우에java.lang.IllegalStateException: Invalid target for Validator [hello.itemservice.web.validation.TextValidator@3c0bfa3c]: NameObject(name=null)오류가 발생이 됩니다.이렇게 다른 validator 2개를 등록하면데이터 바인딩시 두 개다 실행이되면서 하나라도 모델 타입이 맞지 않으면 오류가 발생합니다.그러면 강사님이 답변해주신@InitBinder("모델명")을 입력하는 방법으로 구분해서 따로 등록하는 방법supports에 다 통과하게해서validate()에서 instanceof,isAssignableFrom 리턴으로 하는 방법 supports는 클래스로 구분하는데다른 클래스가 들어오면 오류가 발생하고,모두 같은 클래스가 들어와야하는데여러개의 검증기가 있을때 supports로구분할수있는 경우를 잘 모르겠어요.. https://www.inflearn.com/questions/280541/initbinder%EC%99%80-validated-%EC%82%AC%EC%9A%A9-%EC%8B%9C-%EB%AC%B8%EC%A0%9C-illegalstateexception-invalid-target-for-valida여기에서 답변으로일반적으로 컨트롤러를 만들 때 하나의 컨트롤러는 하나의 모델 객체(Command 객체)를 사용하기 때문에 이렇게 사용해도 큰 이슈가 없습니다.라고 해주셨는데@BeanValidation 파트에서는ItemSaveForm,ItemUpdateForm이라고 모델객체 2개가 사용이 되는데3.지금은 하나의 컨트롤러에서 사용하지만실무에서는 컨트롤러를 분리하나요 ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
HttpServletRequest
안녕하세요 강의에서는 Controller에서 HttpServletRequest를 인자로 받았는데 이를 service단에서 받는 것은 추천하지 않으시는지 궁금합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
오타발견해서 적어봅니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.31페이지정리하면대다대매핑을일대다, 다대일매핑으로풀어내서사용하자.대다대매핑->다대다매핑
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 database 관련 질문
1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]회원 가입 후 id 값이 달라서 올라온 질문들을 보고 시퀀스 값을 확인해 보려고 하는데 왼쪽 목록에 시퀀스가 없는데 어떻게 볼 수 있나요?
-
해결됨[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]
오라클 포트 질문 있습니다!
33:00쯤에 오라클 포트와 톰캣 포트가 충돌날 수 있다고 하셨는데, 오라클 포트는 1521 아닌지 여쭙고 싶습니다. 제가 알고 있는 포트는 1521밖에 없어서요ㄷㄷ혹여 다른 포트도 있다면... 새로운 지식 알고 갈 것 같아서 말입니당 ㅎㅎ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
이해 깊이
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]mvc 패턴까지의 과정(서블릿, jsp)에 대해서 공부할 때 코드를 깊게 들어갈 필요없이 어떻게 동작하는지 정도만 이해하고나서 스프링 mvc부터 깊게 들어가도 되는걸까요?