묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원 가입 시 화이트 라벨
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]선생님과 동일하게 소스 입력하고, 셋팅도 제대로 했는데 'http://localhost:8080/members/new' 에서 등록버튼 누르면 화이트라벨이 뜹니다ㅠ 다른 사람들거 보고 동일한 위치에 확인해봤는데 오타도 없는거 같아요! 한번 확인 부탁드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
key store 패스워드의 암호화 필요성
DB 패스워드를 암호화하기 위해 key-store를 생성하게 되는데여기에서도 key-store의 패스워드가 yml 설정파일에 존재하게 되는 것으로 이해했습니다.key-store의 패스워드는 암호화 하지 않아도 되는건지 헷갈려서 질문드립니다.만약 암호화가 필요하다면 DB 패스워드를 암호화 하기 위한 key-store의 패스워드를 암호화 하기위한 key-store..... 이런식으로 무한루프가 돌 것 같은데 실무 환경에서는 어떻게 사용하고 있는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
hello-String api 실행화면 소스 코드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]localhost:8080/hello-String?name=spring!! hello-String api 부분 실행 페이지에서 소스코드를 열어보면 html 코드가 나오는데 body 부분에 hellspring이 들어가긴 하는데 제가 window를 써서 이렇게 화면이 뜨는게 맞는건지 모르겠네요
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
로그인 테스트 관련해서 간단한 질문
당연히 구글링 해보셨져? 원하는 결과를 못찾으셨나요? 어떤 검색어를 입력했는지 알려주세문제가 발생한 코드(프로젝트)를 Github에 올리시고 링크를 알려주세요.안녕하세요 호돌맨님.다름이 아니라 호돌맨님 영상 9:30쯤에서 Login DTO에 대한 @NoArgsConstructor가 없는데도 테스트가 정상 작동되는 모습이 보입니다.저는 반대로 NoArgsConstructor가 없이 실행하니 생성자를 만들고 테스트를 실행하라고 빌드내용이 떴습니다.이에 대해서 제가 놓치고 있는 부분이 있는가 싶습니다.자바 버전 이슈인가, 롬복 버전 이슈인가 고민이 드네요https://github.com/uiurihappy/blog.ybchar.dev/commit/e5ee816f3b3a3c05dabb586caee0ddfb9fc471a6 해당 커밋입니다.
-
미해결스프링 시큐리티
SessionManagementFilter의 대한 문의드립니다.
https://www.inflearn.com/course/lecture?courseSlug=%EC%BD%94%EC%96%B4-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8B%9C%ED%81%90%EB%A6%AC%ED%8B%B0&unitId=29835&tab=curriculum해당 강의를 듣고 질문이 있습니다.FilterChainProxy의 시큐리티 필터 목록을 보면 SessionManagementFilter가 별도로 있는데요.강사님이 설명해주신 내용과 ppt를 보면, UsernamePasswordAuthenticationFilter에서 호출되는 CompositeSessionAuthenticationStrategy의 strategy들을 SessionManagementFilter라 말씀하시는 것 같습니다.그럼 시큐리티 필터 목록에 있는 SessionManagementFilter는 언제 호출되는걸까요?혹시라도 제가 잘못 이해한 부분이 있다면, 피드백 부탁드립니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
No tests found for given includes: [ooo.ooo.oooTests](--tests filter)
테스트 도중No tests found for given includes: [ooo.ooo.oooTests](--tests filter)intellij ide 사용중인데 해당 에러가 뜹니다.해결방안으로 settin -> Run test using -> Gradle에서 intelliJ IDEA로 변경하면테스트 케이스가 잘 작동하는데요.이유가 무엇인가요??인텔리제이는 왜 실행이 되고그레들로는 실행이 안되는지도 궁금합니다. 스프링 부트 2.7.10gradle 2.6.1java 11버전입니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
11분 쯤에 프록시 관련하여 질문입니다.
지연 로딩을 사용하면 그 객체를 사용할 때 프록시 객체에서 영속성 컨텍스트에 연결을 요청해서 진짜 객체를 가져오는 거로 알고 있는데요이번에는 단순히 Order만 Return 했기 때문에 Order객체 안에 있는 프록시 객체(Member, Delivery, OrderItems)는 사용할 일이 없는 것 아닌가요 ?왜 프록시 객체를 사용하려다 문제가 발생했는지 알 수 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
clearStore cannot find symbol
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.코드를 정상적으로 작성했음에도 불구하고 오류가 납니다. file-invalidate caches 후 다시 실행하여도 같은 오류가 발생됩니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
오류발생
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.똑같이 했는데 저부분이 오류가 발생합니Cannot resolve method 'hasText' in 'StringUtils'이렇게 나옵니다
-
해결됨토비의 스프링 부트 - 이해와 원리
처음에 sdkman 설치하는데서 설치가안됩니다(윈도우)
안녕하세요 강사님 제가 다른게아니고 윈도우에서 sdkman 설치를하려고하는데요계속 이런오류가나오면서 source자체가 먹히지가않습니다powershell에서 입력했구요 어떻게해야할까요 ㅠ
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
distinct 사용 전 데이터 뻥튀기 현상이 일어나지 않습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강사님과 코드를 똑같이 작성했는데 distinct를 사용하기 전에도 데이터 뻥튀기 없이 올바르게 데이터가 나옵니다. 제가 어떤 부분을 잘못한 건지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
format_sql 안됨
server: port: 80 spring: jpa: hibernate: ddl-auto: none properties: hibernate: # show_sql: true format_sql: true logging.level: org.hibernate.SQL: debug # org.hibernate.type: trace logging: level: org: hibernate: persister: entity: debug 디비연동은 잘해놨습니다. 그런데 로그가 정리가 안되네요..format_sql: true 이게 안먹는것같습니다.ㅠㅠ 버전은 2.6.0 인데 버전문제일까요?
-
미해결실전! 스프링 데이터 JPA
createQuery
public List<Member> findByPage(int age, int offset, int limit){ return em.createQuery("select m from Member m where m.age = :age order by m.username desc") .setParameter("age", age) .setFirstResult(offset) .setMaxResults(limit) .getResultList(); }em.createQuery("select m from Member m where m.age = :age order by m.username desc", Member.class)아래처럼 끝에 반환하는 클래스 타입을 적어줘야 된다고 기억을 하는데 위에 코드 처럼 적어주지 않아도 정상적으로 작동을 하더라구요? 반면에public long totalCount(int age){ return em.createQuery("select count(m) from Member m where m.age = :age") .setParameter("age", age) .getSingleResult(); }totalCount 의 경우 클래스 타입을 안적어주면 바로 빤갈줄이 그어지는데 반환하는 클래스 타입이 생략이 가능한 경우도 있는건가요??
-
미해결스프링 부트 - 핵심 원리와 활용
[intellij 무료버전]tomcat runner 실행 오류
안녕하세요 인프런 스프링 부트 수업을 듣는 학생입니다.다름이 아니라 intellij 무료버전을 사용하면서 수업을 듣고 있는데 tomcat runner를 실행하려고 하면 오류가 발생합니다. tomcat runner을 눌러도 저런 상태가 지속됩니다.tomcat runner을 재설치해도 같은 상황입니다.에러 내용을 찾아보니 위치 문제인것 같은데 해결 방안을 모르겠습니다.ㅠㅠplugin에 tomcat runner가 disable 상태라고 뜨는데 해결 방법이 있을까요??
-
미해결스프링 부트 - 핵심 원리와 활용
SEVERE: A child container failed during start LifecycleException: Failed to start component 해결방법
java -jar embed-0.0.1-SNAPSHOT.jar 시아래와 같이 에러가 발생하는 경우org.apache.catalina.core.ContainerBase startInternal SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@247bddad] at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:923) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:886) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:252) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:430) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:926) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.startup.Tomcat.start(Tomcat.java:485) at hello.embed.EmbedTomcatSpringMain.main(EmbedTomcatSpringMain.java:36) Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@247bddad] at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198) at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4829) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4962) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1393) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1383) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916) ... 16 more Caused by: java.lang.IllegalArgumentException: The main resource set specified [C:\embed\build\libs\tomcat.8080\webapps\] is not valid at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:777) at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:734) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ... 25 moremain 클래스에 코드를 수정하면 정상적으로 에러가 발생하지 않습니다.public class EmbedTomcatSpringMain { public static void main(String[] args) throws LifecycleException, IOException { System.out.println("EmbedTomcatSpringMain.main"); // 톰캣 설정 // 톰캣 설정 Tomcat tomcat = new Tomcat(); ... // 스프링 MVC 디스패처 서블릿 생성, 스프링 컨테이너 연결 ... String docBase = Files.createTempDirectory("tomcat-basedir").toString(); // 디스패처 서블릿 등록 Context context = tomcat.addContext("", docBase); ... tomcat.start(); } } 참고)맥북 사용자가 아닌 윈도우 사용자이기 때문에윈도우에서 나타나는 에러를 공유드렸습니다.맥북은 따로 확인하지 못하기 때문에 공유한 부분에 대해 양해해주세요.
-
미해결스프링 부트 - 핵심 원리와 활용
NoClassDefFoundError가 아닌 UnsupportedClassVersionError가 뜨는 경우 해결방법
NoClassDefFoundError가 아닌 UnsupportedClassVersionError가 발생하는 경우 java 버전이 하위 버전인 경우일 때 나타나는 것을 확인했습니다.자바 17 버전으로 하셔야 강의처럼 NoClassDefFoundError가 나타납니다.아래는 8, 11 버전에 대한 에러를 확인해서 공유드립니다ㅎㅎError: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: hello/embed/EmbedTomcatSpringMain has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:756) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) at java.net.URLClassLoader.access$100(URLClassLoader.java:74) at java.net.URLClassLoader$1.run(URLClassLoader.java:369) at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)위의 에러는 java8 버전일 때 나타나는 에러입니다.Error: LinkageError occurred while loading main class hello.embed.EmbedTomcatSpringMain java.lang.UnsupportedClassVersionError: hello/embed/EmbedTomcatSpringMain has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0위의 에러는 java11 버전일 때 나타나는 에러입니다. 프로젝트랑 환경변수가 java17로 되어 있어도 cmd나 터미널을 이용해서 자바버전을 확인하세요
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
8:41 질문
@PutMapping("/api/v2/members/{id}") public UpdateMemberResponse updateMemberV2( @PathVariable("id") Long id, @RequestBody @Valid UpdateMemberRequest request) { memberService.update(id, request.getName()); return new UpdateMemberResponse(id, request.getName()); } 파라미터로 들어온 값으로 UpdateMemberResponse를 만들어주지 않고 memberService.findOne을 통해 하는 이유가 있을까요?
-
해결됨실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
무결성 제약조건이 위배되는 경우에 대한 예외처리에 대해 질문드립니다
안녕하세요 강사님. Kotlin + JPA에 대해 마땅히 질문남길 곳이 없어서 질문드리게 되었습니다😅 Book 엔티티에서 name을 유니크 키로 지정해서 중복된 값을 설정하려고 하면 아래처럼IllegalArgumentException을 던져주게 하는 코드를 작성하고자 했습니다.@Transactional fun saveBook(request: BookRequest) { val book = Book(request.name, request.type) try { bookRepository.save(book) } catch (e: DataIntegrityViolationException) { throw IllegalArgumentException("이미 등록된 도서입니다.") } }그런데 JPA의 영속성 컨텍스트로 인해 @Transactional이 붙은 메소드에서 DataIntegrityViolationException를 처리해주기 위해선 flush()를 직접 호출해서 쿼리를 실행시켜야 한다는 것을 알게되어 아래와 같이 코드를 수정했고, 테스트 코드에서 정상적으로 IllegalArgumentException이 처리되는 것을 확인할 수 있었습니다.@Transactional fun saveBook(request: BookRequest) { val book = Book(request.name, request.type) try { bookRepository.save(book) bookRepository.flush() } catch (e: DataIntegrityViolationException) { throw IllegalArgumentException("이미 등록된 도서입니다.") } }이렇게 코드를 작성해놓고 보니 하나의 메소드에서만 이렇게 무결성 제약조건 위배에 대한 처리를 한다면 상관이 없겠지만 여러 메소드에서 무결성 제약조건을 위배하는 경우에 대해 각기 다른 메시지를 담은 예외를 던지게 된다면 중복 코드가 너무 많이 발생할 것 같다는 생각이 들더라구요. 이런 경우에 아래처럼 확장함수와 람다를 사용해서 예외 처리를 해도 괜찮을까요?inline fun <reified T, ID, R> JpaRepository<T, ID>.flushOrThrow(exception: Throwable, block: JpaRepository<T, ID>.() -> R): R { try { val result = block() flush() return result } catch (e: DataIntegrityViolationException) { throw exception } }@Transactional fun saveBook(request: BookRequest) { val book = Book(request.name, request.type) bookRepository.flushOrThrow(IllegalArgumentException("이미 등록된 도서입니다.")) { save(book) } }이런 방법을 썼을 때 코드가 너무 복잡해지진 않을지, 협업을 하는 경우에 문제가 되진 않을지, 이런 경우가 발생하면 다른 분들은 어떤 방법을 사용하시는지 고민되어 질문 남깁니다!🙏
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
게시물과 첨부파일의 연관관계 매핑 방법
안녕하세요해당 강의를 너무너무 잘 보고있고, 학습내용을 토대로 사이드 프로젝트를 진행 중입니다.그런데 대표적인 예로 게시물과 첨부파일의 연관관계 매핑을 어떤 식으로 진행해야 하는지 헷갈려서 질문 드립니다. 제가 생각한 방법은 두 가지가 있습니다.첫 번째는 게시물과 첨부파일의 관계에서 게시물 쪽에 단방향 매핑 하는 방법과,두 번째는 게시물과 첨부파일의 관계에서 어떤 매핑도 없이 첨부파일 아이디만 게시물 DB에 저장하는 방식입니다.두 방법 모두 첨부파일을 먼저 영속성 컨텍스트에 저장한 후 게시물을 등록할 수 있는 방법으로 아는데, 실무에서는 어떤 식으로 관계를 설정하고 있는지 궁금합니다!