학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. findByName() 테스트 코드 부분에서 java.util.NoSuchElementException: No value present 에러가 납니다. 똑같이 작성했는데 어느 부분이 잘못되었을까요?
안녕하세요~ 강의를 듣다가 제가 뭔가 잘못한건지 actuator에 refresh가 동작하지 않아 질문글을 남깁니다. 강의 2-10번 DB 비밀번호 암호화까지 문제 없이 잘 진행하다 재가동 없이 설정파일 갱신하는 부분을 진행하는데 item-service에서 build.gradle에 의존성 추가하고 bootstrap.yml에 설정 옵션 추가했는데 config-server 설정 파일 변경 후 postman 에서 refresh 요청을 날려도 response body 에는 [] 빈 배열만 찍히고 별다른 문구가 없고 변경된 설정이 적용되지 않더라고요 강의를 봐도 크게 설정하는 부분이 많은건 아니어서 잘 적용된 것 같은데 작동하지 않는 원인이 콘솔에 찍히지 않아서 헤메고 있습니다. build.gradle 의존성과 bootstrap.yml 에 설정 추가하고 config-server 실행시키고 item-service 실행시킨 후 설정 파일에 변경점을 주고 localhost:5000 번으로 /actuator/refresh 요청을 날렸습니다. 그리고 물품등록 요청을 보내서 200코드 성공했는데 별도의 logs 폴더에 api-local2.log는 생기지 않았습니다. 강의와 다르게 한건 인텔리제이로 프로젝트 구성한 것과 스프링부트 마이너 버전만 달라서 크게 문제가 있지는 않을 것 같은데.. 2-10 강의까지 해본 깃 주소도 올려봅니다. https://github.com/doyoun8813/Microservice
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 잘 따라하고 있었는데..TEST findAll에서 (),member1,member2,result에 왜 오류가 난지 잘 모르겠습니다 ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 내용] JPA를 사용하면 JPA에서 SQL 테이블을 연결해 놓은 테이블을 생성해주는데 실무에서도 그냥 JPA로 테이블 생성하고 테이블에 상세한 설정이 필요하다면 엔티티에서 설정을 하나요?
웹앱이 API에 요청을 할때도 올바른 대상이 요청하는게 맞는지 별도의 검증이 필요하지만 우선 그건 무시하고 순수히 웹앱의 유저 인증만 생각했을때의 이야기입니다.. 프론트 역할을 하는 html, css, (바닐라js or jQuery) + spring boot(thymeleaf, spring security) 웹어플리케이션 프로젝트가 있고 회원이 있는지 조회할 수 있는 API 서버(DB와 연결된 spring boot)가 별도로 존재했을때 어떤 프로젝트에 어떤 식으로 시큐리티 및 토큰생성 세팅을 해야할지 감이 잘 오지 않습니다.. 제가 구현하고자 하는건 회원/비회원에 따라 페이지를 동적으로 바꾸거나 (로그인이 로그아웃으로 바뀐다든지) 페이지에 접근을 못하게 하려고 합니다 (마이페이지) 제 생각에는 구현내용 둘 다 API를 굳이 갈 필요가 없기 때문에 웹앱단에서 검증이 이루어져야 할 것 같은데 맞을까요..? API는 회원 유무를 조회한 뒤, 존재하는 경우 단순히 유저정보(or 아예 토큰을 만들어서 넘긴다..?)를 웹앱에 넘겨주는 것까지가 역할이고, 따라서 Spring Security는 여기서 필요하지 않다 웹앱 프로젝트에 스프링 시큐리티 설정을 한 뒤, 스프링부트단에서 API로부터 전달받은 토큰, 혹은 유저정보를 가지고 인증을 처리한다 (하지만 어떻게..?) 이런 흐름이 맞는지 모르겠습니다..
안녕하세요~ 프로젝트 구성에 spring boot 2.7.x 버전이라고 나와있는데 spring boot 2.1.4 버전에서는 spring-security-oauth2-authorization-server 를 사용할 수 없나요?? 있다면 어떤 버전을 사용해야 하나요?? (spring-security-version 버전은 4.0.3 입니다. )
회원가입은 되는데 로그인 시도 시 에러 뜨고 그전에 에러 메시지에는 아래와 같이 나왔습니다. 어느 부분에서 잘못된것일까여.s pringframework.security. authentication.InternalAuthenticationServiceException: 인증실패 at s hop.mtcoding.bank. config.auth.LoginService.lambda$loadUserByUsername$0(L oginService.java:22) at java.base/java.util.Optional.orElseThrow(O ptional.java:408) at s hop.mtcoding.bank. config.auth.LoginService.loadUserByUsername(L oginService.java:21) at o rg.springframework.security. authentication.dao.DaoAuthenticationProvider.retrieveUser(D aoAuthenticationProvider.java:94) at o rg.springframework.security. authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(A bstractUserDetailsAuthenticationProvider.java:133) at o rg.springframework.security. authentication.ProviderManager.authenticate(P roviderManager.java:182) at o rg.springframework.security. authentication.ProviderManager.authenticate(P roviderManager.java:201) at s hop.mtcoding.bank. config.jwt.JwtAuthenticationFilter.attemptAuthentication(J wtAuthenticationFilter.java:50) at o rg.springframework.security. web.authentication.AbstractAuthenticationProcessingFilter.doFilter(A bstractAuthenticationProcessingFilter.java:227) at o rg.springframework.security. web.authentication.AbstractAuthenticationProcessingFilter.doFilter(A bstractAuthenticationProcessingFilter.java:217) at o rg.springframework.security. web.FilterChainProxy$VirtualFilterChain.doFilter(F ilterChainProxy.java:346) at o rg.springframework.security. web.authentication.logout.LogoutFilter.doFilter(L ogoutFilter.java:103) at o rg.springframework.security. web.authentication.logout.LogoutFilter.doFilter(L ogoutFilter.java:89) at o rg.springframework.security. web.FilterChainProxy$VirtualFilterChain.doFilter(F ilterChainProxy.java:346) at org.springframework.web.filter.CorsFilter.doFilterInternal(C orsFilter.java:91) at org.springframework.web.filter.OncePerRequestFilter.doFilter(O ncePerRequestFilter.java:117) at o rg.springframework.security. web.FilterChainProxy$VirtualFilterChain.doFilter(F ilterChainProxy.java:346) at o rg.springframework.security. web.header.HeaderWriterFilter.doHeadersAfter(H eaderWriterFilter.java:90) at o rg.springframework.security. web.header.HeaderWriterFilter.doFilterInternal(H eaderWriterFilter.java:75)
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 이렇게 좋은 강의가 있는걸 지인을 통해 알게되어 이번주부터 듣고 있습니다. 아직 시작한지 얼마 안되어 스프링 입문에서 열심히 따라치면서 이런게 있구나 하고 있는 상황입니다. 헌데 이 강의를 알기 전에 토비의 스프링 3.1이란 책을 샀거든요. 불행중 다행인지 아직 포장을 뜯지 않았습니다. 1/2권 세트라 비닐 포장이 되어있거든요. 이 강의를 듣는다면 토비의 스프링 3.1 세트 책까지 필요없을지 아니면 이 책도 보는게 좋을지 의견을 들어보고싶어 문의드립니다. 이 강의로도 충분할듯하면(스프링하고 JPA 둘다 구매하였습니다) 책은 환불하려고 하거든요. 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. MemberServiceTest 중 하기 에러가 발생합니다. java.lang.NullPointerException: Cannot invoke "jpabook.jpashop.service.MemberService.join(jpabook.jpashop.domain.Member)" because "this.memberService" is null at jpabook.jpashop.service.MemberServiceTest.join(MemberServiceTest.java:27) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at org.junit.vintage.engine.execution.RunnerExecutor.execute(RunnerExecutor.java:42) at org.junit.vintage.engine.VintageTestEngine.executeAllChildren(VintageTestEngine.java:80) at org.junit.vintage.engine.VintageTestEngine.execute(VintageTestEngine.java:72) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114) at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86) at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:119) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:94) at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:89) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) at jdk.proxy1/jdk.proxy1.$Proxy2.stop(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) MemberService package jpabook.jpashop.service; import java.util.List; import jpabook.jpashop.domain.Member; import jpabook.jpashop.repository.MemberRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service @Transactional @RequiredArgsConstructor public class MemberService { private final MemberRepository memberRepository; /** * 회원 가입 */ public Long join(Member member) { validateDuplicateMember(member); // 중복 회원 검증 memberRepository.save(member); return member.getId(); } private void validateDuplicateMember(Member member) { List<Member> findMembers = memberRepository.findByName(member.getName()); if (!findMembers.isEmpty()) { throw new IllegalStateException("이미 존재하는 회원입니다."); } } // 회원 전체 조회 public List<Member> findMembers() { return memberRepository.findAll(); } public Member findOne(Long memberId) { return memberRepository.fineOne(memberId); } } MemberServiceTest package jpabook.jpashop.service; import static org.junit.jupiter.api.Assertions.*; import jpabook.jpashop.domain.Member; import jpabook.jpashop.repository.MemberRepository; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.transaction.annotation.Transactional; @SpringBootTest @Transactional public class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test public void join() { Member memberTestName = new Member(); memberTestName.setName("kimjimin"); Long savedId = memberService.join(memberTestName); assertEquals(memberTestName, memberRepository.fineOne(savedId)); } }
H2랑 연결이 안되는건지.. 오류는 안뜨는데 member 테이블이 생성이 안됩니다.. 설정 이것저것 만져보기도하고 자바도 17로 변경했고, PDF에 변경된 사항 다 확인하고 등등 해봤는데 모르겠습니다. 테스트부터 문제가 발생해서 진도가 안나갑니다.... 아래는 제가 코딩한 파일 링크입니다. ㅠㅠ https://drive.google.com/file/d/1fAVZQQ-mag2_oRpXDGhaWIpw4UFC9c-T/view?usp=sharing
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 사진과 같이 intelliJ 에서 JDK는 17로 맞춰놓았습니다. 그래서 빌드도 성공적으로 잘됩니다. 하지만 빌드 후, 제 로컬환경에서 CMD에서 위와같이 gradlew 입력시 , 아래와같은 오류가 뜹니다 ㅠ 어떻게 해결할 수 있을까요? 검색해서 해보라는 조치는 다해본상태입니다 ㅠ
[질문 내용] 질문 게시판에 있는 비슷한 질문들의 답변에서 나온 웬만한 해결책들을 해봤는데, 여전히 MemberRepositoryTest에서 오류가 나서 질문드립니다. H2도 다시 깔아보고, yml, build.gradle 전부 확인해봤는데 되질 않네요. 이상한건 한번도 오류가 나지 않은 적이 없는데 Member 테이블이 생성은 됐습니다. 그렇지만 데이터가 추가가 되진 않았습니다. 해결 방법이 있을까요? 제 프로젝트를 압축한 파일 링크입니다. 감사합니다!
자바'만' 알아요. 입문강의라고 해서 들어봤는데 자바 처음 공부할때처럼 자바란 뭐고 어디에 쓰이고 등등부터 알려주시는것처럼 알려주시는줄 알았는데 그냥 따라하기부터 바로 들어가시더라구여.... 저는 스프링이 뭔지, 어디에 쓰이는지, 왜 배워야되는지 등등 완전 기초적인것부터 알려주실줄 알았는데... 완전 기초용 강의는 없나요?....