inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

채굴에 당하지 않는법

미해결

비전공자도 이해할 수 있는 AWS 입문/실전

안녕하세요. 이번에 배포 관련해서 도움받고자 강의 듣고 있는중인 학생입니다. 다름이 아니라 제가 글을 읽었는데 거기서 이렇게 언급합니다. ``` 유형 항목에서 SSH이면서 포트 항목에서 22인 경우는 AWS EC2에 터미널로 접근할 때를 이야기합니다. pem키가 없으면 접속이 안되니 전체 오픈하는 경우가 종종 있는데, 이렇게되면 이후 파일 공유 디렉토리나 깃허브 등에 실수로 pem키가 노출될 수 있습니다. 노출되는 순간 서버에서 가상화폐가 채굴되는 것을 볼 수 있습니다.. ``` 그리고 거기서는 소스유형을 "내 IP"로 하고 진행했는데 강의처럼 위치무관으로 설정해도 되는지 여쭙고 싶습니다. 얉은 지식이라 질문이 이상할 수 있는점 양해바랍니다.

  • aws
  • aws-elb
  • aws-rds
  • ec2
  • s3
  • 채굴
  • 비용
  • 과금
댓글 1 좋아요 1 조회수 483

서버 실행 실패

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

> Task :LibraryAppApplication.main() FAILED . ____ _ /\\ / ___'_ __ ( _)_ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.6) 2024-04-04 17:09:40.815 INFO 12468 --- [ main] c.g.libraryapp.LibraryAppApplication : Starting LibraryAppApplication using Java 17.0.9 on KONG with PID 12468 (C:\Project\project\library-app\build\classes\java\main started by jinju in C:\Project\project\library-app) 2024-04-04 17:09:40.819 INFO 12468 --- [ main] c.g.libraryapp.LibraryAppApplication : No active profile set, falling back to 1 default profile: "default" 2024-04-04 17:09:41.422 INFO 12468 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2024-04-04 17:09:41.474 WARN 12468 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'userRepository' defined in com.group.libraryapp.domain.user.UserRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Cannot register bean definition [Root bean: class [org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in com.group.libraryapp.domain.user.UserRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration] for bean 'userRepository': There is already [Root bean: class [null]; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=userConfiguration; factoryMethodName=userRepository; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [com/group/libraryapp/config/UserConfiguration.class]] bound. 2024-04-04 17:09:41.505 INFO 12468 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2024-04-04 17:09:41.521 ERROR 12468 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: The bean 'userRepository', defined in com.group.libraryapp.domain.user.UserRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration, could not be registered. A bean with that name has already been defined in class path resource [com/group/libraryapp/config/UserConfiguration.class] and overriding is disabled. Action: Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true Execution failed for task ':LibraryAppApplication.main()'. > Process 'command 'C:/Program Files/Java/jdk-17/bin/java.exe'' finished with non-zero exit value 1 찾아본 결과 이 문제는 Spring 애플리케이션의 빈(bean) 정의 중에 중복이 발생하여 발생한 것으로 보입니다. 에러 메시지에 따르면 userRepository 빈이 이미 UserConfiguration 클래스에서 정의되어 있으며, 또한 Spring Data JPA가 자체적으로 해당 빈을 생성하려고 시도하고 있는 것으로 보인다고 합니다. 혹시 UserConfiguration 부분에 변경이 적용 안된게 있어서 그런걸까요? 저 bean 부분을 지워도 .UserServiceV1 때문에 컴파일 에러가 발생하더라구요,.,..

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
댓글 3 좋아요 0 조회수 629

JPA 를 사용하는 이유

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

안녕하세요 강사님. 항상 정성 가득하고 충분한 설명 덕분에 도움을 많이 받고 있습니다 : ) 강의를 듣다가 문득 호기심이 생겨 질문을 드립니다 ! JPA 를 사용하는 이유가 DB가 변경 시에 유리하기 때문이라고 이해했습니다. 그런데 만약 DB 변경이 일어나지 않는다고 가정한다면, JPA 설정을 통해서 스프링이 DB 에 넣어주는 것 보다, 일일이 쿼리를 작성하는 것이 더 속도나.. 그런 측면에서 유리하지는 않나요? 1개의 기능을 만드는데 그보다 많은 기능이 포함되어있는 어떤것을 쓰면 자원이 낭비되는 것이 아닐까? 하는 생각이 들었습니다. 현업에서 DB를 변경할 일이 많아서 그런 것일까요? 왜 요즘 MyBatis 보다 JPA 를 선호하는 추세인지도 궁금합니다. (취업 공고를 보면 MyBatis 보다는 JPA 가 많이 보이더라구요!) 항상 감사하고 존경드리며 환절기 감기 조심하세요 !

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
wnsqhr1230 댓글 2 좋아요 1 조회수 949

git에서 커밋을 했는데, 계속 진행해도 되는지의 여부

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

40강. git 기초사용법을 듣고 있습니다. 코드를 github에 올리는 과정에서 처음에는 git add . 작성 시 아래와 같이 에러가 나타났습니다 위와 같은 과정을 거쳤고, 커밋이 반영된듯 싶으면서도 fatal: unknown write failure on standard output이라는 문구가 떠 다음 과정을 진행하기 찝찝합니다. 이전에 git add .시 실행은 된 것 같지만 warning이 난것도 나중에 문제가 될것 같습니다..감사합니다.

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
송우석 댓글 2 좋아요 0 조회수 2073

lightsail instance를 종료해도 서버를 연결된 상태로 유지하려면 어떻게 해야 할까요?

미해결

AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)

안녕하세요. 강의 잘 보고 있습니다. lightsail instance 터미널에 연결후에 서버를 실행해 주고 난 뒤 터미널을 종료하면 어느정도 시간이 지나면 서버가 연결이 끊기네요. 계속 연결을 지속시키려면 어떻게 할 수 있을까요?

  • aws
  • docker
  • ci/cd
  • aws-ecs
purnsup90 댓글 1 좋아요 0 조회수 300

강의 소스코드 제공 요청드립니다.

해결됨

AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)

강의 타이핑 그대로 따라했는데도, npm run build, npm run test에서 redis time out error가 발생하네요. 버전이 안맞는건지.. 강사님과 동일하게 버전 맞추고 진행하고 싶은데 package.json이라도 제공해주시면 감사드리겠습니다.

  • aws
  • docker
  • ci/cd
  • aws-ecs
dhj100 댓글 1 좋아요 0 조회수 415

Oracle12cDialect 오류 해결 방법

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

(사진)

  • java
  • jpa
강프로그래머 댓글 1 좋아요 0 조회수 370

Amazon VPC CNI 아키텍처와 통신 흐름

해결됨

CloudNet@ - Amazon EKS 기본 강의

안녕하세요. 강의 잘 듣고 있습니다. 한 가지 궁금한 사항이 생겨 질문드립니다. Pod A에서 Pod E로 통신을 할 때 IP 헤더를 덧붙인다고 하셨는데요, Pod E가 Node 3에 있는지 어떻게 알고 헤더를 덧 붙이는 건가요?

  • 네트워크
  • aws
  • kubernetes
  • amazon-eks
  • eks
공부하자 댓글 1 좋아요 0 조회수 261

./gradlew build -x test 질문

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

Exception in thread "main" java.io.IOException: No space left on device at java.base/java.io.FileOutputStream.writeBytes(Native Method) at java.base/java.io.FileOutputStream.write(FileOutputStream.java:354) at java.base/java.io.BufferedOutputStream.write(BufferedOutputStream.java:123) at org.gradle.wrapper.Download.downloadInternal(Download.java:119) at org.gradle.wrapper.Download.download(Download.java:80) at org.gradle.wrapper.Install$1.call(Install.java:83) at org.gradle.wrapper.Install$1.call(Install.java:63) at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:69) at org.gradle.wrapper.Install.createDist(Install.java:63) at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:107) at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:63) 이런 에러가 뜹니다.. 그 이전과 다르게 진행했던 것은 [ec2-user@ip-172-31-36-164 library-app]$ sudo dd if=/dev/zero of=/swaplife bs=128M count=16 여기서 swaplife가 오타가 나서 [ec2-user@ip-172-31-36-164 library-app]$ sudo dd if=/dev/zero of=/swapfile bs=128M count=32 swapfile로 바꾸어 다시 진행을 했습니다. dd: error writing '/swapfile': No space left on device 29+0 records in 28+0 records out 이 상태에서 다시 지우고 어떻게 처음부터 시작할 수 있을까요..?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
송우석 댓글 2 좋아요 1 조회수 426

자바 메모리 구조에 대해 질문드립니다.

미해결

김영한의 실전 자바 - 기본편

안녕하세요 영한님. 항상 양질의 강의로 지식을 공유해주시는점에 우선 감사하다는 인사부터 올리겠습니다. 자바 메모리 구조에 대해 강의를 들으면서 문득 궁금한 점, 스스로 지식 정리가 되지 않는 부분이 있어 질문드립니다. 우선 제가 알고 있는 사실입니다. JDK 스펙에서 메소드 영역의 구현 방식에는 제한하지 않기에 벤더마다 상이하다 Java8 이전 오라클 핫스팟에선 이를 Permgen(Permanent Genration) 이라 명하였고 힙 메모리 안에 위치시켰다. 우리가 일반적으로 아는 static 변수 및 메소드, 클래스 정보, 런타임 상수 풀, String Pool 등이 이 메소드 영역 (Permgen)에 저장되었다. 하지만, Java8 이후 Permgen 의 고정된 메모리 이슈로(잦은 OOME) metaspace 라는 새로운 대체 공간을 만들고 이를 os영역인 Native memory 쪽에 두었다. java8 이후 현재, 기존의 Permgen 에 저장되던 클래스 메타 정보들 (constant pool)은 대체된 metaspace안에 저장되고 static 변수 및 메소드, String Pool(리터럴 String 및 interned String 저장 pool) 들은 Heap 영역으로 저장되게 변경되었다. 우선 제가 옳게 이해하고 있는지, 지식에 오류가 없는지 궁금하며 몇 가지 문의사항이 있습니다. 위 내용중 2)에서 Permgen을 힙 메모리 안에 두었다고 하지만 heap / non-heap 으로 구분하여 Permgen 은 non-heap 에 속한다 라고 설명하는 레퍼런스가 많습니다. Permgen이 non-heap 이라고 하는 이유가 비록 Permgen 이 논리적으로는 힙 메모리 안에 위치하지만, 일반적으로 gc 대상에선 제외되기 때문에 그런건지 아니면 실제로 물리적으로 분리된 공간이어서 non-heap 이라는건지 궁금합니다. (+ 지속적으로 찾아보니 Permgen 은 Heap 영역안에 특별한 공간 정도로 이해하면 될 듯 합니다. GC(major/full GC) 또한 동작한다고 하네요..! 이것과 별개로 metaspace의 경우도 더이상 사용하지 않는 클래스에 대해 메모리 회수가 일어난다고 합니다. 근데 이 metaspace 는 navtive 영역에 있는데 이걸 "gc가 동작하여 최적화한다" 라고 말할 수 있는 건지 아니면 그냥 Metaspace 자체에서 메모리관리를 한다고 봐야할지 궁금합니다..!) 궁극적으로 궁금한 부분인데요 메소드 영역 이라는 것에 대해 어떻게 이해하면 좋을지 의문입니다. 두 가지 정도로 생각하고 있는데, 1. 메소드 영역 이라는 것은 JDK spec 에서 정의하고있는 하나의 추상화된 공간(인터페이스)이다. 이것이 과거엔 힙에 위치한 permgen으로 구체화 되었고 현재는 native 메모리에 위치한 metaspace로 구체화 되어 대체되었다. (메소드 영역이 상위 개념이다) 2. 옛날 permgen, 현재의 metaspace 안에 특정한 데이터(클래스 메타데이터 같은)를 저장하는 별도의 공간이 있고 이를’ 메소드영역’ 이라고 한다. (메소드 영역이 하위 개념이다) 메소드 영역과 permgen, metaspace 이들간의 카테고리 상 포함관계가 어떻게 되는지 개념이 궁금합니다.(1 번과 2번중에 어떤게 맞는지) 또한 현재 메소드 영역을 담당하는 metaspace 기준으로, static 변수, string pool 등은 Heap 영역에 저장되고(static 변수의 경우 heap 영역안의 static pool 안에) 클래스 정보, 런타임 상수 풀(constant pool) 등은 Metaspace 에 저장이 되는데 “메소드 영역에는 클래스정보, static 변수, 런타임 상수 풀이 저장된다” 라는 개념이 아직도 유효하고 옳은 개념인지 문의드립니다. 이게 말이 되려면 메소드영역이란 heap 영역의 일부 + metaspace 가 되어야 하기 때문입니다. 감사합니다.

  • java
  • 객체지향
이상진 댓글 1 좋아요 5 조회수 776

Route 53 , Nginx 관련 질문

해결됨

AWS 전 직원이 알려주는 AWS 아키텍처

안녕하세요! 강의 정말 잘 보고 있습니다. 저도 웹 검색을 통해 주먹 구구식으로 AWS 를 사용하다가, 강사님의 강의를 들으니 왜 이런 설정을 해야하는지 이해가 잘갑니다. 정말 감사합니다. 근데 하나 궁금한게 생겨 질문드립니다. https 인증을 위해 강의에서 ACM을 사용하셨는데, 그 방식을 유지한다면 추후에 백엔드 서버에 nginx를 설치하여 웹서버를 구축할 필요하가 있는걸까요? 현재 제가 구축한 웹서버는 nginx와 certbot을 이용하여 https인증을 진행한 상황입니다. 강사님의 강의를 듣고 업데이트를 해볼 생각인데, 궁금해서 질문드립니다. (Docker를 이용하여 백서버와 nginx, certbot 이미지를 사용해서 서버를 구축해볼 예정이었는데, nginx,certbot이 꼭 필요한지 의문이 들었습니다.)

  • aws
dhj100 댓글 1 좋아요 1 조회수 388

섹션 5 - 3(타입 안전 열거형 패턴) if 문대신 개선된 switch 문으로 변경

해결됨

김영한의 실전 자바 - 중급 1편

package enumeration.ex2; public class DiscountService { public int discount(ClassGrade grade, int price) { if (grade == ClassGrade.BASIC) { return price / 100 * 10; } if (grade == ClassGrade.GOLD) { return price / 100 * 20; } if (grade == ClassGrade.DIAMOND) { return price / 100 * 30; } return 0; } } package enumeration.ex2; public class DiscountServiceTest { public int discount(ClassGrade grade, int price) { switch (grade) { case ClassGrade.BASIC -> { return price / 100 * 10; } case ClassGrade.GOLD -> { return price / 100 * 20; } case ClassGrade.DIAMOND -> { return price / 100 * 30; } default -> { return 0; } } } } 안녕하세요. 위의 코드 같이 if 문으로 사용하면 정상적으로 실행이 가능한데 아래 처럼 if 문을 개선된 switch 문으로 바꾸면 왜 컴파일 오류가 뜨는지 정확히 알고 싶습니다. case 에는 리터럴 상수만 사용 가능하고 참조값은 case에 적을 수 없는 것 같은데 맞나요?

  • java
  • 객체지향
따뜻한 당나귀 댓글 2 좋아요 0 조회수 445

수강 기간 연장 부탁드립니다.

미해결

AWS Certified Solutions Architect - Associate 자격증 준비하기

안녕하세요. 좋은 강의 감사드립니다. 아직 시험에 합격하지 못하였는데 기간이 얼마 남지 않아서.. 혹시 수강 기간 연장 부탁드려도 될까요?

  • 네트워크
  • aws
batem 댓글 1 좋아요 0 조회수 199

40강 개인 DB 비밀번호만 가리기

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

안녕하세요 강의 잘 듣고 있습니다. git Push까지 잘 됐는데 github에서 application.yml까지 올라간 것을 확인 했습니다. 여기서 제 비밀번호만 가리고 나머지 설정은 공유하고 싶은데 따로 비밀번호만 분리하는 방법은 없을까요 ?

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
송우석 댓글 1 좋아요 1 조회수 332

31강 대출기능 개발에서 계속 유저 정보 가져오는곳에서 null이 나오는 이유가 뭘까요..

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

분명 MySql에 보면 user 테이블에 잘 저장되어 있고 북도 잘 저장되어있는데 왜 계속 null 뜰까요 ㅠㅠ java.lang.IllegalArgumentException: null at java.base/java.util.Optional.orElseThrow( Optional.java:408 ) ~[na:na] at com.group.libraryapp.service.book .BookService.loanBook( BookService.java:43 ) ~[main/:na] at com.group.libraryapp.service.book .BookService$$FastClassBySpringCGLIB$$9fdbff4c.invoke(<generated>) ~[main/: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$$41338896.loanBook(<generated>) ~[main/:na] at com.group.libraryapp.controller.book .BookController.loanBook( BookController.java:27 ) ~[main/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke( NativeMethodAccessorImpl.java:62 ) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke( DelegatingMethodAccessorImpl.java:43 ) ~[na:na] at java.base/java.lang.reflect.Method.invoke( Method.java:566 ) ~[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.doPost( FrameworkServlet.java:909 ) ~[spring-webmvc-5.3.24.jar:5.3.24] at javax.servlet.http.HttpServlet.service( HttpServlet.java:696 ) ~[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] 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.CharacterEncodingFilter.doFilterInternal( CharacterEncodingFilter.java:201 ) ~[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.apache.catalina.core.StandardWrapperValve.invoke( StandardWrapperValve.java:177 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:97 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.authenticator.AuthenticatorBase.invoke( AuthenticatorBase.java:541 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:135 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.valves.ErrorReportValve.invoke( ErrorReportValve.java:92 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.core.StandardEngineValve.invoke( StandardEngineValve.java:78 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.catalina.connector.CoyoteAdapter.service( CoyoteAdapter.java:360 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.coyote.http11.Http11Processor.service( Http11Processor.java:399 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.coyote.AbstractProcessorLight.process( AbstractProcessorLight.java:65 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process( AbstractProtocol.java:891 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun( NioEndpoint.java:1784 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.net.SocketProcessorBase.run ( SocketProcessorBase.java:49 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1191 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.threads.ThreadPoolExecutor$ Worker.run ( ThreadPoolExecutor.java:659 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at org.apache.tomcat.util.threads.TaskThread$ WrappingRunnable.run ( TaskThread.java:61 ) ~[tomcat-embed-core-9.0.69.jar:9.0.69] at java.base/ java.lang.Thread.run ( Thread.java:834 ) ~[na:na]

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
furitstore1 댓글 3 좋아요 0 조회수 405

User와 loanhistory 관계

미해결

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

User가 UserLoanHistory를 가지게 됨으로써 대출하는 로직이 간단해지지만 UserLoanHistory관련 CRUD를 전부 User에서 비즈니스 로직을 처리해야하는 건가요? User가 처리하는 로직이 너무 많아지는 것 같아 이게 객체지향적인 게 맞나 고민이 되네요 현재 경우는 C U 밖에 없지만 만약 예를 들어서 작가와 책 엔티티가 있을 때 연관관계의 주인은 책에 있지만 작가가 보유한 책을 조회하는 로직을 더 간편하게 처리하기 위해 작가는 책을 리스트로 가지면서 생명주기를 관리하면, 책을 수정하거나 삭제할 때도 무조건 작가의 도메인에서 로직을 처리하게 되는 건가요? 단일책임원칙을 위배하는 것이 아닌가 고민이 되어 질문드립니다!

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
gang01 댓글 1 좋아요 1 조회수 303

영상이 한참전에 만든 영상같네요.

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

개인적으론 아쉽네요. JDK, JPA, H2 버전을 보니 최소 3년 이상 된듯.. javax가 jakarta로 넘어간게 2021년도 였나 그런데.. 1.8버전이면 한참된듯.. 일단 수업자료 받은걸로 참고하면서 진행하겠습니다.

  • java
  • jpa
Minkoo Lee 댓글 2 좋아요 1 조회수 1833

김영한강사님 스프링 강의 로드맵 질문드려요.

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

안녕하세요. 저는 얼마전에 미국에서 컴퓨터 과학을 전공한 사람입니다. 자바에 대한 기본적인 이용은 할줄 아는 상태이구요. 앞으로 한 2달뒤에 취업을 해야하는데요. 자바 백엔드 신입으로 취직하기 위해 들어야 하는 최소 정도를 알고 싶어서요. 김영한 강사님이 보시기에 자바 백엔드 신입으로 일하는데 최소한 역량을 갖추려면 어떤 강의들을 들어야 하죠? 최소한이요. 항상 존경합니다. 김영한 강사님.

  • java
  • spring
  • mvc
  • spring-boot
  • 김영한
개발자 댓글 2 좋아요 1 조회수 588

jsonignore와 지연로딩?

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

[섹션3 - 간단한 주문조회 V1 엔티티를 직접 노출] 강의에서 [6:09] 처음에 api를 호출했을때는 양방향 연관관계 때문에 무한루프가 발생하였는데요, 이때는 지연로딩에 의한 이슈가 없었는데 [11:07] JsonIgnore를 추가하여 순환 참조가 되는 상황을 제거했을때는 왜 지연로딩에 의한 이슈가 생기는 건가요?? 잘 동작하던 프록시객체가 JsonIgnore가 생겼다고 에러가 나는 상황이 잘 이해가 안되어 질문을 올립니다

  • java
  • spring
  • spring-boot
  • jpa
하춘화마타타 댓글 2 좋아요 3 조회수 559

수강기간 연장 부탁드립니다.

미해결

AWS Certified Solutions Architect - Associate 자격증 준비하기

거의 다 듣긴 했는데 한번 더 복습하고 싶습니다. 연장 부탁드립니다!

  • 네트워크
  • aws
skynet 댓글 2 좋아요 0 조회수 246

인기 태그

인프런 TOP Writers

주간 인기글