묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberRepository 인터페이스에 관하여
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 제가 자바에 대해 제대로 이해하고 있는지 궁금해서 질문드립니다. clearStore가 컴파일 오류나는이유가 repository의 타입이 MemoryMemberRepository의 부모클래스인 MemberRepository에는 clearStore메소드가 없어서 오버라이딩 되어있지 않기때문인걸로 알고 있는데 맞나요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
섹션2 강의에 RootConfig와 ModelMapper과 관련된 내용은 없나요?
안녕하세요. 섹션2 RootConfig라는 클래스가 없다가 마지막 강의에서 보이던데 아무 언급이 없어서 질문 드립니다. 섹션2 pdf에는 RootConfig와 ModelMapper에 대해 언급되어 있던데 거기 있는 내용만 보고 넘어가면 되나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
개인으로 따로 연습하려고 프로젝트 생성해봤는데
자꾸 오류가 뜨는데 무슨이유 일까요 ㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
16:29초 order와 order_item 사이 연관관계 주인
16:29초에 order_item에서 order가 연관관계 주인이 된다고 하셨는데 order_item 엔티티 클래스 안에 보면 ```java@JoinColumn(name = "order_id") private Order order;```@JoinColumn을 한 order 외래키를 가진 order_item이 연관관계 주인 아닌가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Optional.of vs Optional.ofNullable
1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의 회원 도메인과 리포지토리 만들기 5:48Optional 관련 질문입니다. 인터넷에 검색해보니 of는 null 값이 들어올 경우 오류를 발생시키고 ofNullable는 null이 들어오면 처리를 해준다고 합니다. (실제로 작성해보니 오류가 잘 발생했습니다) Optional은 값이 있는지 확실하지 않을 때 사용한다고 하는데 of 메서드는 값이 확실해야만 사용할 수 있으니 어색하게 느껴졌습니다.Optional.of와 Optional.ofNullable 두가지 중 of 메서드는 어떤 경우를 위해 존재하는 건가요?
-
미해결스프링 부트 - 핵심 원리와 활용
톰캣 startup.sh 실행시 에러 bad interpreter: /bin/sh^M: no such file or directory
tomcat 서버가 시작하지 않습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드가안됩니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]왜그러죠 ㅠㅍ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트시 오류 발생 해결법에 대한 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.=====================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]앞서 질문한 학생들의 질문들과 구글링을 진행해봤지만 해결되지 않아 질문 남깁니다.먼저 강의를 따라 쭉 타이핑을 했는데 Junit4 를 사용하여 테스트를 만들고 진행해 봤고, 테스트가 안되어서 build.gradle와 MemberRepositoryTest 등을 번갈아가면서 수정해봤지만 어떤것이 문제인지 모르겠습니다.파일 링크 남겨드립니다.https://drive.google.com/file/d/1EsGR5F0YDa1G97u5616ZM8JeYwWZYjQr/view?usp=sharing
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
2장 router ch02_start폴더를 따로 만들고 시작해야 하는건가요?
2장 보는데 ch02_start 폴더를 하나 생성하고 시작하신건가요..???
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
EntityManager 생성자 만들 때 final을 붙이지 않는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]다른 파일들에서 DI 하려고 할 때 모두 생성자 생성하기 전 객체를 final로 정의했는데, SpringConfig 파일에서는 왜 final을 사용하지 않고 정의하나요??(MemberService.java) private final MemberRepository memberRepository; (JdbcTemplateMemberRepository.java) private final JdbcTemplate jdbcTemplate; (JpaMemberRepository.java) private final EntityManager em; --------------------------------------- (SpringConfig.java) private EntityManager em;
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
H2 데이터베이스는 잘 연결되는데, 14:03 MEMBER 테이블이 생성되지 않아요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]테스트를 실행하면 로그는 이렇게 찍힙니다.WARNING: A Java agent has been loaded dynamically (/Users/esyoleo/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.14.12/be4984cb6fd1ef1d11f218a648889dfda44b8a15/byte-buddy-agent-1.14.12.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 release 어떻게 하면 좋을까요? JUnit은 4를 사용중이고, 필요한 설정은 build.gradle, yml 등에 모두 작성한 상황입니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
글삭제시 질문입니다!
현재 코드를 치면서 강의를 따라가다보니 강의가 안들어와서강의에 집중하려고 코드를 미리 받고 진행을 하고있는데요.보시다시피 삭제하면 위의 내용처럼 user_loan_history 테이블이 존재하지않다 라고 되어있습니다.몬가 먼저 제가 코드를 받아서 db 쪽에 user_loan_history 테이블을 참조하는것같은데...궁금한점이 소스내에 어디에서도 user_loan_history 을 찾아도 해당내용이없는데 어떻게 해당 테이블을 참조하는건가요
-
해결됨스프링 부트 - 핵심 원리와 활용
질문이 있습니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]AppInit을 구현한 AppInitV1,V2는 urlpattern에따라 MyContainerInit을 통해 실행되는것이 맞나요 ?그리고 MyContainerInitV1,V2 둘 다 META-INF/services/jakarta.servlet.ServletContainerInitializer에 등록되어있는데 어떻게 구별해서 사용하는건가요 ? 왜 V2가 선택되어서 동작하는지 궁금합니다
-
해결됨코드로 배우는 React 19 with 스프링부트 API서버
섹션7에 이름 없는 강의가 2개 있는데 오류인가요?
눌러봐도 강의 재생이 되진 않네요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
H2 url을 찾을 수 없다고합니다.
Caused by: java.lang.RuntimeException: Driver com.mysql.cj.jdbc.Driver claims to not accept jdbcUrl, jdbc:h2:tcp://localhost/~/jpashop라고 에러메세지가 뜹니다.apllication.yml대신 properties에 spring.datasource.url=jdbc:h2:tcp://localhost/~/jpashop spring.datasource.username=sa spring.datasource.password= spring.datasource.driverClassName=org.h2.Driverjpa.hibernate.ddl-auto=create jpa.properties.hibernate.format_sql=true logging.level.org.hibernate.SQL=debug logging.level.org.hibernate.type=trace 이렇게 작성했는데 왜 안되는걸까요??
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
github 링크
화면 html 소스 같은 것들 때문에 github 주소는 없나요?
-
미해결스프링 시큐리티 완전 정복 [6.x 개정판]
Redis만 사용하면 인증 상태 영속이 되지 않습니다..!
안녕하세요 구버전에 이어 신버전 강의도 출시해주셔서 감사합니다! 구버전 커뮤니티에 질문올렸었는데요~이번 강의를 봐도 해결이 되지않아서 질문 올려봅니답..!직접 spring security 메인테이너나 컨트리뷰터들한테도 물어봤는데, 제가 제대로 질문을 못해서인지 해결을 못했는데요. 시큐리티 + formlogin + Redis를 활용해서 인증방식을 구현했습니다. 아래 코드로 인증 객체를 꺼낼때 문제가 발생합니다. @ResponseStatus(HttpStatus.OK) @GetMapping("/test") public void test() { SecurityContextHolderStrategy contextHolderStrategy = SecurityContextHolder.getContextHolderStrategy(); System.out.println(">> contextHolderStrategy : " + contextHolderStrategy); // org.springframework.security.core.context.ThreadLocalSecurityContextHolderStrategy@7e1fbf12 SecurityContext context = contextHolderStrategy.getContext(); System.out.println(">> context : " + context); // SecurityContextImpl [Authentication=AnonymousAuthenticationToken Authentication authentication = context.getAuthentication(); System.out.println(">> authentication : " + authentication); // AnonymousAuthenticationToken MemberContext memberContext = (MemberContext) authentication.getPrincipal(); System.out.println(">> memberContext : " + memberContext); // ClassCastException String username = memberContext.getUsername(); System.out.println(">> username : " + username); } Redis를 사용하지 않고 tomcat에 저장할 경우 session을 통해서 인증 객체를 잘 받아오는데,>> contextHolderStrategy : org.springframework.security.core.context.ThreadLocalSecurityContextHolderStrategy@54f61d2b >> context : SecurityContextImpl [Authentication=UsernamePasswordAuthenticationToken [Principal=com.spring.security.config.security.service.MemberContext [Username=sejinpark@email.com, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, CredentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[ROLE_ADMIN]], Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=A220DB3D8904393F7D9831276564566A], Granted Authorities=[ROLE_ADMIN]]] >> authentication : UsernamePasswordAuthenticationToken [Principal=com.spring.security.config.security.service.MemberContext [Username=sejinpark@email.com, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, CredentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[ROLE_ADMIN]], Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=A220DB3D8904393F7D9831276564566A], Granted Authorities=[ROLE_ADMIN]] >> memberContext : com.spring.security.config.security.service.MemberContext [Username=sejinpark@email.com, Password=[PROTECTED], Enabled=true, AccountNonExpired=true, CredentialsNonExpired=true, AccountNonLocked=true, Granted Authorities=[ROLE_ADMIN]] >> username : sejinpark@email.com Redis만 사용하면 인증 완료 후 인증 후 요청에서 Anonymous로 변경됩니다.>> contextHolderStrategy : org.springframework.security.core.context.ThreadLocalSecurityContextHolderStrategy@577154a7 >> context : SecurityContextImpl [Authentication=AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=16bec162-3ad3-459d-8b97-bf3d6f1de226], Granted Authorities=[ROLE_ANONYMOUS]]] >> authentication : AnonymousAuthenticationToken [Principal=anonymousUser, Credentials=[PROTECTED], Authenticated=true, Details=WebAuthenticationDetails [RemoteIpAddress=0:0:0:0:0:0:0:1, SessionId=16bec162-3ad3-459d-8b97-bf3d6f1de226], Granted Authorities=[ROLE_ANONYMOUS]] 2024-04-17T07:49:13.061+09:00 ERROR 84540 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.ClassCastException: class java.lang.String cannot be cast to class com.spring.security.config.security.service.MemberContext (java.lang.String is in module java.base of loader 'bootstrap'; com.spring.security.config.security.service.MemberContext is in unnamed module of loader 'app')] with root cause java.lang.ClassCastException: class java.lang.String cannot be cast to class com.spring.security.config.security.service.MemberContext (java.lang.String is in module java.base of loader 'bootstrap'; com.spring.security.config.security.service.MemberContext is in unnamed module of loader 'app') at com.spring.security.controller.MemberController.test(MemberController.java:43) ~[main/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]Redis 내부에 인증객체가 저장되어 있는것 까지 확인했는데요. 혹시 SecurityFilterChain에 Redis관련 저장소를 별도로 설정을 해줘야 하는지, 어떤 부분을 확인해야하는지 여쭙고 싶습니다. Redis를 사용하는데 계속 HttpSessionSecurityContextRepository에서 시큐리티 컨텍스트를 찾을 수 없다고 나옵니답.2024-04-17T17:05:01.251+09:00 WARN 30066 --- [nio-8080-exec-1] w.c.HttpSessionSecurityContextRepository : SPRING_SECURITY_CONTEXT did not contain a SecurityContext but contained: '{authentication={authorities=[{authority=ROLE_ADMIN}], details={remoteAddress=0:0:0:0:0:0:0:1, sessionId=null}, authenticated=true, principal={password=null, username=sejinpark@email.com, authorities=[{authority=ROLE_ADMIN}], accountNonExpired=true, accountNonLocked=true, credentialsNonExpired=true, enabled=true}, credentials=null, name=sejinpark@email.com}}'; are you improperly modifying the HttpSession directly (you should always use SecurityContextHolder) or using the HttpSession attribute reserved for this class? 우선 테스트용으로 SecurityFilterChain에서 아래처럼 기존 버전 처럼 사용해서 인증 상태를 무조건 저장할 수 있도록 해놨습니다.커스텀 인증필터를 사용 안하고, SecurityContextPersistanceFilter를 사용하도록했습니다.securityContext.requireExplicitSave(false);테스트용으로 만든 레포지토리 링크 첨부합니다!https://github.com/codesejin/security-test
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
갑자기 코드가 실행이 안됩니다. Edit Configuration
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]View 환결설정 강의를 시청하는중 아무런 문제없이 코드들은 잘 작성하고있엇습니다. dev tools 추가해서 recompile로 간편하게 해보는걸 하는중 윈도우 단축기는 crtl shift f9이라고 나왔고 그래서 몇번 계속 해보던중 갑자기 코드가 실행이 안되기 시작했습니다. 우선 HelloController, JpaShopApplication 마크가 클래스에서 자바 커피 모양으로 바뀌면서 .java가 붙엇고 실행하려고하면 Edit Configuration 이 나오면서 사진과 같은 창이 나오고 Cannot snapshot C:\Users\juny2\OneDrive\Desktop\study\jpashop\jpashop\build\resources\main\static\index.html: not a regular file 이라는 경고문이 나옵니다. build.gradle 다시 세팅햇더니 다시 클래스 마크로 돌아오긴했는데 여전히 같은 경고문 , Edit configuration이 뜨면서 실행이 안됩니다. (수정) 저기 Edit Config 설정하고 다른 글에서 snapshot 에러뜨면 Onedrive 밖으로 프로젝트 옮겨보라고 하셔서 프로젝트 옮겻고 정상적으로 돌아는가네요. 근데 문제는 index.html파일이 없는 상태에서 이렇게 초기화면에 뭐가 주르륵 뜨는데 어떻게 해결하는지 모르겟습니다. ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
크롬 주소입력창 자동으로 대문자 변경
안녕하세요, View 환경설정을 수강하고 있습니다.Controller에서 hello 부분 작성하고 있는데요. 주소창에 localhost:8080/hello라고 검색해도 자동으로 localhost:8080/Hello 로 검색이 됩니다. 이 부분 때문에 계속 에러 페이지 떠서, GetMapping부분을 "Hello"로 바꿔서 실행하니까 데이터는 출력이 잘 됩니다. 다만, 강사님이 작성하신대로 localhost:8080/hello을 검색했을때, 화면이 잘 나오게 하고 싶습니다. 자동으로 변환하는걸 막을 수는 없을까요 ㅠㅠ?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findAny() 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]섹션3 회원 도메인과 리포지토리 만들기 강의 중 MemoryMemberRepository.java의 findByName 코드에 대해 질문 있습니다.@Override public Optional<Member> findByName(String name) { return store.values().stream() .filter(member -> member.getName().equals(name)) .findAny(); }해당 코드에서 findAny()는 하나라도 찾으면 반환한다고 설명해주셨는데 그럼 같은 이름의 서로 다른 회원이 여러 명 있어도 루프를 돌리면서 가장 먼저 찾은 한 명의 회원만 반환하는 건가요?