묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
스스로 찾고싶었지만 이 이상 찾을 수가 없습니다..
안녕하세요 이번강의에서 후반부까지는 잘 되었다가 마지막 과정에서 막혀서 질문 드립니다.우선 오류가 났다고 생각하는곳은 Id와 BookName으로 대출기록을 불러오고 doReturn을 불러오는 과정에서예외가 발생되었고 예외가 발생되었기때문에 아이디와 책 이름이 일하는기록이 없어서 예외가 나왔다고 생각했습니다.하지만 터미널로 sql문을 이용해 찾아봐도user_loan_history의 user_id와user의 id가 같았습니다.이 이상 Id대신 이름을 getName을 해봐도 오류가 나서 진행을 못하는 상황입니다.. 오류의 원인이 뭔지 알 수 있을까요2024-03-22 17:03:37.674 ERROR 84411 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException] with root cause java.lang.IllegalArgumentException: null at java.base/java.util.Optional.orElseThrow(Optional.java:403) ~[na:na] at com.group.libraryapp.Service.book.BookService.returnBook(BookService.java:71) ~[classes/:na] at com.group.libraryapp.Service.book.BookService$$FastClassBySpringCGLIB$$1faa236c.invoke(<generated>) ~[classes/:na] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.24.jar:5.3.24] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) ~[spring-aop-5.3.24.jar:5.3.24] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.24.jar:5.3.24] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.24.jar:5.3.24] at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.24.jar:5.3.24] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.24.jar:5.3.24] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.24.jar:5.3.24] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.24.jar:5.3.24] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.24.jar:5.3.24] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) ~[spring-aop-5.3.24.jar:5.3.24] at com.group.libraryapp.Service.book.BookService$$EnhancerBySpringCGLIB$$892e8bee.returnBook(<generated>) ~[classes/:na] at com.group.libraryapp.controller.book.BookController.returnBook(BookController.java:32) ~[classes/:na] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:577) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.24.jar:5.3.24] at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:920) ~[spring-webmvc-5.3.24.jar:5.3.24] at javax.servlet.http.HttpServlet.service(HttpServlet.java:699) ~[tomcat-embed-core-9.0.69.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.24.jar:5.3.24] at javax.servlet.http.HttpServlet.service(HttpServlet.java:779) ~[tomcat-embed-core-9.0.69.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.24.jar:5.3.24] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.24.jar:5.3.24] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.24.jar:5.3.24]
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
DataSourceUtils import가 안돼요.
[질문 내용]저는 이클립스 4.2 , JDK17버전을 사용하고 있습니다.근데 datasource 연결하는데import가 되지 않습니다..private Connection getConnection() { return DataSourceUtils.getConnection(dataSource); }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 가입 시 member
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. public Long join(Member member){ validateDuplicateMember(member); System.out.println(member.getId()); memberRepository.save(member); System.out.println(member.getId()); return member.getId(); }위 코드는 멤버 가입 시 MemberService의 join 메소드 입니다.member의 아이디가 부여되는 시점은 memberRepository.save(member);가 호출되어 저장이 되는 시점입니다.위 코드에서 return member.getId();의 member는 컨트롤러에서 넘어온 member왜 같은 인스턴스라고 생각됩니다. 1. memberRepository.save(member);가 아닌member = memberRepository.save(member); 2번의 코드의 경우 id가 생긴 member를 다시 member에 저장하게 되어 member.getId()를 호출하면 아이디가 나오는 것이 맞다고 생각되는데 1번처럼 코드를 작성해도 member에 id가 왜 저장되어 있는지 궁금합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
config-servie 도커로 실행 시 에러 문의
안녕하세요."섹션 16. 애플리케이션 배포 - Docker Container"을 학습하면서 config-service를 Docker로 만들어 실행하면 컨테이너 실행 됐다가 Exit가 되고, "docker logs config-service"로 로그를 보면 아래와 에러가 발생합니다. JDK11 , springboot 2.4.5 버전에 spring-cloud-starter-bootstrap 의존성은 추가 되어 있는 상태입니다. 답변 부탁드립니다. 감사합니다.===================================================================2024-03-22 06:50:22.104 WARN 1 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'healthContributorRegistry' defined in class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.health.HealthContributorRegistry]: Factory method 'healthContributorRegistry' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'configServerHealthIndicator' defined in class path resource [org/springframework/cloud/config/server/config/EnvironmentRepositoryConfiguration.class]: Unsatisfied dependency expressed through method 'configServerHealthIndicator' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.cloud.config.server.config.CompositeConfiguration': Unsatisfied dependency expressed through method 'setEnvironmentRepos' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'defaultEnvironmentRepository' defined in class path resource [org/springframework/cloud/config/server/config/DefaultRepositoryConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: You need to configure a uri for the git repository.2024-03-22 06:50:22.113 INFO 1 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'2024-03-22 06:50:22.117 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]2024-03-22 06:50:22.134 INFO 1 --- [ main] ConditionEvaluationReportLoggingListener :Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2024-03-22 06:50:22.149 ERROR 1 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :***************************APPLICATION FAILED TO START***************************Description:Invalid config server configuration.Action:If you are using the git profile, you need to set a Git URI in your configuration. If you are using a native profile and have spring.cloud.config.server.bootstrap=true, you need to use a composite configuration.===================================================================
-
미해결스프링 배치
스프링 배치 멀티서버 환경에 적용관련 질문
스프링 배치를 멀티서버에 적용할때 DB는 하나이고. 서버는 여러개 인데... 스프링 배치가 모든 서버에서 구동되는데 이 DB 에 많은 데이터 건수가 많을때. 각 서버에서 경쟁적으로 데이터를 처리해서 성능을 향상시키고 싶은데 혹시 방법이 있을까요?
-
미해결스프링 시큐리티 OAuth2
id_token과 access_token의 개념에 대하여
안녕하세요. scope에 openid를 포함하면 id_token을 발급 받을 수 있는데요. 이 id_token과 access_token의 정확한 사용 용도가 헷갈립니다.제가 이해하는 바가 맞는지 확인 부탁드립니다. 인증 : 사용자가 유효한 사용자인지 판단하는 것인가 : 사용자가 해당 기능을 사용할 권한이 있는지 판단하는 것 사용자 인증 관점에서 인증이 통과(scope에 openid가 있는 경우)하면 access_token과 id_token을 받습니다. 인증만이 필요한 경우라면 id_token에 있는 사용자 정보로 확인하면 되나요?만약 제가 개발한 서비스가 있고 사용자별 권한의 차등이 없는 경우 세션 없이 인증을 유지하기 위해서는 로그인 후 발급받은 이 id_token을 들고 다니면서 id_token값으로 토큰의 값 유무와 만료시간 등 으로 유효 사용자를 확인하면 되나요?토큰의 값으로만 확인해도 되는지 아니면 jwt에서 제공되는 어떤 validation 함수같은걸로 우선 위변조를 확인한후 위변조가 없다는것이 확인된 후에 값을 비교해서 사용하면 되는지 궁금합니다. 그리고 만약 위의 인증을 access_token 으로 한다면 access_token은 원래 태생이 인가(권한)이기 때문에 userinfo 엔드포인트를 호출하여 사용자 정보를 가져온 후에 이 사용자 정보로 사용자가 누구인지 인증을 확인하는것이죠? 저는 access_token없이 id_token만으로도 userinfo 엔드포인트를 호출 할 수 있는지 확인하기 위해postman에서 id_token을 bearer 토큰으로 호출했는데 401로 id_token 만 가지고는 userinfo 정보를 확인이 안되더라고요. 이게 맞는건가요? 아시는 고수님들의 답변 기다리겠습니다.
-
미해결토비의 스프링 부트 - 이해와 원리
web.xml -> dispatcherServlet 질문
안녕하세요.강의에서 조금 벗어난 주제일 수도 있는데, 기존 레거시 프로젝트를 스프링부트로 전환하는 작업을 하고 있는데, web.xml의 .do를 spring boot에서 어떻게 사용할 수 있는지 너무너무 궁금합니다.현재 아래와 같이 변경해 봤는데 전혀 작동을 안 합니다 ㅠㅠ @Configuration @RequiredArgsConstructor public class ServletConfig { private final DispatcherServlet dispatcherServlet; @PostConstruct public void init() { dispatcherServlet.setThreadContextInheritable(true); } @Bean public ServletRegistrationBean<DispatcherServlet> dispatcherServletRegistration() { ServletRegistrationBean<DispatcherServlet> registration = new ServletRegistrationBean<>(dispatcherServlet, "/", "*.do"); registration.setLoadOnStartup(-1); registration.setName(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME); return registration; } @Bean public DispatcherServletPath dispatcherServletPath() { return () -> "/"; } } spring 4 버전의 web.xml 에서 url-mapping을 / , *.do 로 설정 해 놨는데, 프로젝트에서 @RequestMapping을 사용할땐 .do를 따로 적지 않아도 .do 요청을 알아서 매핑해 주던데, 이 부분도 정확히 어떤 원리로 동작하는지 모르겠습니다 ㅠㅠex) login.do --> @RequestMapping("/login").do 설정을 2주째 보고 있는데 진척이 없네요 .....
-
미해결스프링 시큐리티 OAuth2
oidc userinfo 확인 시 오류가 납니다.
안녕하세요. 강의 잘 보고 많은 부분 배워가고 있습니다. 강의 진행중 섹션 7의 OAuth2 로그인 구현 - Oauth 2.0 User 모델 소개(2)에서뒷부분 oidc로 사용자 정보 조회하는 부분인데요. @GetMapping("/oidc") public OAuth2User oidc(String accessToken, String idToken) { ClientRegistration clientRegistration = clientRegistrationRepository.findByRegistrationId("keycloak"); OAuth2AccessToken oAuth2AccessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER, accessToken, Instant.now(), Instant.MAX); Map<String, Object> idTokenClaims = new HashMap<>(); idTokenClaims.put(IdTokenClaimNames.ISS, "http://localhost:9091/realms/oauth2"); idTokenClaims.put(IdTokenClaimNames.SUB, "OIDC0"); idTokenClaims.put("preferred_username", "userpww"); OidcIdToken oidcIdToken = new OidcIdToken(idToken, Instant.now(), Instant.MAX, idTokenClaims); OidcUserRequest oAuth2UserRequest = new OidcUserRequest(clientRegistration, oAuth2AccessToken, oidcIdToken); OidcUserService oidcUserService = new OidcUserService(); OAuth2User oAuth2User = oidcUserService.loadUser(oAuth2UserRequest); return oAuth2User; }oidcUserService.loadUser(oAuth2UserRequest); 이 부분이 실행될 때loadUser 메서드 내부의 if (!userInfo.getSubject().equals(userRequest.getIdToken().getSubject())) { OAuth2Error oauth2Error = new OAuth2Error(INVALID_USER_INFO_RESPONSE_ERROR_CODE); throw new OAuth2AuthenticationException(oauth2Error, oauth2Error.toString()); }이 부분을 타면서 예외가 발생합니다. 어떤 부분을 확인해 봐야 할까요?userInfo의 sub와 userRequest의 sub가 달라서 그런걸까요?읽어주셔서 감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
하... 요류를 못찾겠습니다.
처음에는 BookService.class 작성시 userRepository의 orElseThrow가 불러와지지를 않아서 커뮤니티에 있는 다른분의 질문글에서 해답을 찾으려했는데 이걸 고치니 오류가 나타나는데 이 오류를 못찾겠습니다...강사님 살려주세요 Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2024-03-21 23:42:16.319 ERROR 4515 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'bookService' defined in file [/Users/jojun-yeong/Desktop/강의 자료/1월25/Java_Spring_Library_Application/library-app/out/production/classes/com/group/libraryapp/Service/book/BookService.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userLoanHistoryRepository' defined in com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract boolean com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository.existByBookNameAndIsReturn(java.lang.String,boolean); Reason: Failed to create query for method public abstract boolean com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository.existByBookNameAndIsReturn(java.lang.String,boolean)! No property 'existByBookName' found for type 'UserLoanHistory'; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract boolean com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository.existByBookNameAndIsReturn(java.lang.String,boolean)! No property 'existByBookName' found for type 'UserLoanHistory' at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:955) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.6.jar:2.7.6] at com.group.libraryapp.LibraryAppApplication.main(LibraryAppApplication.java:11) ~[classes/:na] Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userLoanHistoryRepository' defined in com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract boolean com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository.existByBookNameAndIsReturn(java.lang.String,boolean); Reason: Failed to create query for method public abstract boolean com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository.existByBookNameAndIsReturn(java.lang.String,boolean)! No property 'existByBookName' found for type 'UserLoanHistory'; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract boolean com.group.libraryapp.domain.user.loanhistory.UserLoanHistoryRepository.existByBookNameAndIsReturn(java.lang.String,boolean)! No property 'existByBookName' found for type 'UserLoanHistory' at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBean
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
안녕하세요 기선님 질문이있습니다..
음.. 다시 쿼리를 보는데@GetMapping("/events/{id}") public String getEvent(@CurrentUser Account account, @PathVariable String path, @PathVariable Long id, Model model) { model.addAttribute(account); model.addAttribute(eventRepository.findById(id).orElseThrow()); model.addAttribute(studyService.getStudy(path)); return "event/view"; }이쪽을 탈때 쿼리가 총 3개 나가는건 이해 했는데 마지막에 enrollment 엔티티 가져올때 쿼리리는 왜account 랑만 조인 하나요 ?연관관계를 보면 Event도있는데Event도 조인해야 하는거 아닌가요 ??@ManToOne 관계라 Eager 모드 아닌가요 ??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드 관련 질문 있습니다.
윈도우로 하고 있는데gradlew.bat 을 빌드 하면 해당 오류가 뜨고 있습니다.세팅은스프링 부터 3.2.3자바 21 입니다. Gradle 세팅은해당 입니다.환경변수 확인 해봤는데 사용자 변수에는 JAVA_HOME 자체가 탐색도 안되는거 같습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
48초에 dependencies 문서보는 부분이 없네요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]예전버전 인거같은데 웹사이트가 달라서 찾을수가 없네요
-
미해결실습으로 배우는 선착순 이벤트 시스템
컨슈머 테스트 중 쓰레드 슬립을 사용하지 않았는데 성공하는 이유가 뭘까요??
안녕하세요. 강의 잘 보고 있습니다. 저는 현재 kotlin, postgreSQL을 사용하고 있으며M3 맥북 환경입니다 강의에서 쓰레드슬립 사용 전 테스트케이스가 실패하는걸 확인할 수 있는데, 왜 저는 테스트가 성공되는걸까요..?? 원래 실패 해야 정상인 상황일까요? 어떤 이유에서 성공하는지 감이 잘 안옵니다..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
th:object에 대해 질문드립니다.
MVC2편에서 배웠던 것 같지만 헷갈리는 부분이 있어 질문드립니다. // ItemController /** * 상품 수정 */ @PostMapping("/items/{itemId}/edit") public String updateItem(@ModelAttribute("form") BookForm form) { // updateItemForm.html <form th:object="${form}" method="post"> th:object="${form}" 에서 괄호 안에 form을 참조하여 컨트롤러의 @ModelAttritube("form")을 했을 때 요청 파라미터를 바인딩해서 BookForm 객체에 넘겨준다고 이해했는데, @ModelAttritube("form1") 이런식으로 바꿔도 정상적으로 작동했습니다. 혹시 제가 놓친 부분이 있을까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요! 강의 내용을 바탕으로 응용해서 H2 데이터베이스에서 MySQL로 바꾸는 작업을 하고 있습니다!
https://drive.google.com/file/d/1ZTyx0uvGjnTkhf1YH7t2espgi1Koaf0N/view?usp=sharing build.gradle이랑 application.properties diver 설정도 했는데 왜 부트가 꺼지는지 모르겠네요...ㅠ
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
30장 코드수정하니 run오류가 납니다..
오류를 해석하려햇는데 book쪽에서 뭔가 오류인것같은데 수정하고 강사님 코드를 붙여넣어봐도 같은 오류가 나오네요.. 혹시 어떤오류인지 알 수 있을까요?Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2024-03-19 16:21:44.681 ERROR 42249 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: com.group.libraryapp.domain.book.Book at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.24.jar:5.3.24] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:731) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.7.6.jar:2.7.6] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.7.6.jar:2.7.6] at com.group.libraryapp.LibraryAppApplication.main(LibraryAppApplication.java:11) ~[classes/:na] Caused by: org.hibernate.AnnotationException: No identifier specified for entity: com.group.libraryapp.domain.book.Book at org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:266) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final] at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:211) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final] at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:772) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final] at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:225) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:239) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:282) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1460) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1494) ~[hibernate-core-5.6.14.Final.jar:5.6.14.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) ~[spring-orm-5.3.24.jar:5.3.24] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) ~[spring-orm-5.3.24.jar:5.3.24] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-5.3.24.jar:5.3.24] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-5.3.24.jar:5.3.24] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) ~[spring-orm-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.24.jar:5.3.24] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.24.jar:5.3.24] ... 16 common frames omitted 종료 코드 1(으)로 완료된 프로세스
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
챕터 8 카카오 토큰 받기 이후
카카오 토큰 받기 이후로 많은 오류가 한번에 떠서 질문 드립니다!부트 서버에서도 member.service, impl에 콘솔 찍은것도 에러로 인해 안뜹니다상황마다 500오류 400오류 grant value 오류 등이 계속 뜹니다 ㅜㅜ 부트https://github.com/hyeonbin03/IntelliJHub일단 부트 코드는 선생님 주셨던 파일 참고해서 Member Modify 기능까지 작성 완료 된 상태입니다 리엑트https://github.com/hyeonbin03/WebStromHub깃 주소 남겨드겠습니다 ㅠㅠ
-
미해결스프링 부트 - 핵심 원리와 활용
@WebServlet 관련 질문 사항
서블릿 컨테이너 초기화2에서 설명하시기를 서블릿을 등록하는 방법@WebServlet을 사용하는 방법프로그래밍 방법이렇게 두 가지가 있다고 말씀해주셨는데 2번 같은 경우에는 서블릿을 만들고 서블릿 컨테이너에 해당 서블릿을 올린다 라는 느낌으로 이해를 했습니다. 그런데 첫번째 방법 같은 경우에는 서블릿을 등록한다 라고만 해서 약간 이해가 되지 않습니다 제가 생각할때는 서블릿 컨테이너가 있어야 하고 서블릿이 등록이 되어야 하는데 2번째는 서블릿 컨테이너를 만들고 거기에 등록을 했으니까 되는건데 첫번째는 어떤 서블릿 컨테이너에 등록이 되는건가요?? 또한 @WebServlet이 여러개가 있다면 각각은 다른 서블릿 컨테이너에 등록되는건지 같은 서블릿 컨테이너에 등록 되는건지 궁금합니다
-
미해결스프링 시큐리티
error , exception 이 잘 안됩니다.
강사님 소스와 똑같이 했는데도 안되는데요 ....로그인 실패해도 에러 문구가 안뜹니다. 디버깅하면 Controller 값이 null 로 들어오는데 왜그런걸까요 ?? security 설정에 /login?* 설정도 해줬습니다. @Controllerpublic class LoginController { // 에러가 있을때만 선택적으로 받는다.@RequestMapping(value={"/login"})public String login(@RequestParam(value = "error", required = false) String error,@RequestParam(value = "exception", required = false) String exception, Model model){model.addAttribute("error",error);model.addAttribute("exception",exception);return "login";} @GetMapping("/logout")public String logout(HttpServletRequest request, HttpServletResponse response) { Authentication authentiation = SecurityContextHolder.getContext().getAuthentication(); if (authentiation != null) {new SecurityContextLogoutHandler().logout(request, response, authentiation);} return "redirect:/login"; }} package com.eazybytes.springsecsection3.security.handler; import java.io.IOException; import org.springframework.security.authentication.BadCredentialsException;import org.springframework.security.authentication.InsufficientAuthenticationException;import org.springframework.security.core.AuthenticationException;import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;import org.springframework.stereotype.Component; import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse; // 인증 검증시 실패할때 인증 예외 발생@Componentpublic class CustomAuthenticationFailureHandle extends SimpleUrlAuthenticationFailureHandler { @Overridepublic void onAuthenticationFailure(final HttpServletRequest request, final HttpServletResponse response, final AuthenticationException exception) throws IOException, ServletException { String errorMessage = "Invalid Username or Password"; if(exception instanceof BadCredentialsException) {errorMessage = "Invalid Username or Password"; }else if(exception instanceof InsufficientAuthenticationException) {errorMessage = "Invalid Secret";} setDefaultFailureUrl("/login?error=true&exception=" + errorMessage); super.onAuthenticationFailure(request, response, exception); }}package com.eazybytes.springsecsection3.security.config;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.autoconfigure.security.servlet.PathRequest;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.security.authentication.AuthenticationDetailsSource;import org.springframework.security.authentication.AuthenticationProvider;import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer;import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;import org.springframework.security.crypto.password.PasswordEncoder;import org.springframework.security.web.SecurityFilterChain;import org.springframework.security.web.authentication.AuthenticationFailureHandler;import org.springframework.security.web.authentication.AuthenticationSuccessHandler;import com.eazybytes.springsecsection3.security.provider.CustomAuthenticationProvider;import com.eazybytes.springsecsection3.security.service.CustomUserDetailsService;import jakarta.servlet.DispatcherType;@Configurationpublic class SecurityConfig { @Autowiredprivate AuthenticationSuccessHandler customerauthenticationSuccessHandler; // 인증 성공후 핸들링 처리 @Autowiredprivate AuthenticationFailureHandler authenticationFailureHandlerl; // 인증 실패후 핸들링 처리 @Autowiredprivate AuthenticationDetailsSource authenticationDetailsSource; // FormWebAuthenticationDetails 을 security 가 사용할 수 있도록 등록 @Autowiredprivate CustomUserDetailsService userDetailsService; // 개발자가 만든 userDetailsService 를 사용 protected void configure (AuthenticationManagerBuilder auth) throws Exception{ // CustomAuthenticationProvider 를 seruciry 가 사용할 수 있도록 등록auth.authenticationProvider(authenticationProvider());} @Beanpublic AuthenticationProvider authenticationProvider() {return new CustomAuthenticationProvider();} @BeanSecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {http.csrf(AbstractHttpConfigurer::disable); http.authorizeHttpRequests((auth) ->auth.dispatcherTypeMatchers(DispatcherType.FORWARD).permitAll().requestMatchers("/","/users","/users/login/**, /login*").permitAll() /* /login* /login?error=true&exception 접근 허용 */.requestMatchers("/mypage").hasRole("USER").requestMatchers("/message").hasRole("MANAGER").requestMatchers("/config").hasRole("ADMIN").anyRequest().authenticated()); http.formLogin((form) ->form.loginPage("/login").loginProcessingUrl("/login_proc").defaultSuccessUrl("/").authenticationDetailsSource(authenticationDetailsSource).successHandler(customerauthenticationSuccessHandler ) // 인증이 성공한 후 핸들링 처리.failureHandler(authenticationFailureHandlerl) // 인증이 실패후 후 핸들링 처리.permitAll());return http.build();} @Beanpublic PasswordEncoder passwordEncoder() {return new BCryptPasswordEncoder();} @Beanpublic WebSecurityCustomizer webSecurityCustomizer() {// 정적 리소스 spring security 대상에서 제외return (web) ->web.ignoring().requestMatchers(PathRequest.toStaticResources().atCommonLocations());}} --------------------- <!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head th:replace="layout/header::userHead"></head><body><div th:replace="layout/top::header"></div><div class="container text-center"><div class="login-form d-flex justify-content-center"><div class="col-sm-5" style="margin-top: 30px;"><div class="panel"><p>아이디와 비밀번호를 입력해주세요</p></div><div th:if="${param.error}" class="form-group"><span th:text="${exception}" class="alert alert-danger">잘못된 아이디나 암호입니다</span></div><form th:action="@{/login_proc}" class="form-signin" method="post"><input type="hidden" th:value="secret" name="secret_key" /><div class="form-group"><input type="text" class="form-control" name="username" placeholder="아이디" required="required" autofocus="autofocus"></div><div class="form-group"><input type="password" class="form-control" name="password" placeholder="비밀번호" required="required"></div><button type="submit" class="btn btn-lg btn-primary btn-block">로그인</button></form></div></div></div></body></html>
-
미해결스프링 시큐리티
thymeleaf tag 질문합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 로그인 하지 않을 때 isAnonymous() 는 동작하는데 로그인 하고 isAuthenticated() 는 동작 하지 않아서 top 메뉴에 로그아웃이 보이지 않네요 로그인 처리가 잘 안돼서 그런건가요 ??