@RequiredArgsConstructor 사용시 , not initialized in the default constructor 에러가 나온다면 gradle 버전으로 인한 lombok dependency 추가 방법이 다르기 때문에 발생하는 문제일 거에요, build.gradle 파일에서 아래와 같이 lombok 방법을 추가해 주세요. compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok'
강의를 듣기전에 알아야 할 지식이 어떤게 있을까 해서 질문드립니다. 백엔드 개발자가 되고싶은데 자바는 어느정도 아는 상태이고 다음으로는 스프링에 대해서 공부하라고 하더라고여 그래서 찾아보던중 영한님 강의를 찾게 되었습니다. 정말 자바만 알아도 강의를 듣는데 문제가 없을까요? 또 백엔드 관련해서 database같은 것도 배워야 한다고 하는데 영한님 강의를 다 듣고 따로 database를 배워야 하는건가요?
JPA 강의에서 EntityManagerfactory를 하나 만들어서 EntityManager가 필요할때마다 만들고 close()하는 방식으로 해야한다고 들었는데 스프링 부트에서는 private final EntityManager em; 이렇게 등록된 Bean에 대해서 의존성을 주입해서 만들게되면 문제가 없나요?? 이렇게 private final EntityManager em;로 하는 방식도 해당 객체가 생길때마다 새로 em이 만들어지는건가요??
안녕하세요. 강의를 듣다가 idea 커맨드를 실행하였으나 먹히지 않아 찾아본 결과 Jetbrains Toolbox를 사용하여 설치한 경우에 실행 쉘 스크립트를 지원하는 것 같습니다. https://www.jetbrains.com/help/idea/working-with-the-ide-features-from-command-line.html#e3487884 툴박스 설치 $ brew install --cask jetbrains-toolbox 툴박스 UI에서 IntelliJ 설치 IntelliJ 설정에서 셸 스크립트 이름 확인 가능 만약 툴박스를 사용하지 않고 수동 설치한 경우 아래와 같이 수동으로 쉘 스크립트를 작성해야 사용 가능합니다. $ sudo vim /usr/local/bin/idea #!/bin/sh open -na "IntelliJ IDEA.app" --args "$@" $ sudo chmod +x /usr/local/bin/idea 저와 같은 고민을 하고 계신분에게 도움이 되었으면 합니다. 감사합니다.
안녕하십니까. 김영한 강사님의 '실전! 스프링부트 JPA 활용1' 강의를 듣고 있는 수강생 입니다. 섹션1 - 프로젝트 환경설정 -> JPA와 DB 설정, 동작확인 강의를 듣고 있는데 JUnit 4를 사용하여 MemberRepositoryTest를 테스트했을 때 오류가 났었는데, 그것을 해결한 방법을 정리하였습니다. 제목에서처럼 스프링부트 2.7.X 버전인 경우에 유효한 방법일 것 같고요. 사진처럼, gradle.build를 통해 라이브러리가 자동으로 설치되었을텐데, 본인의 스프링부트에 따라서 h2 버전이 맞춰서 설치됩니다. (사진에서는 2.1.214) 그럼 h2를 2.1.214를 설치하시면 됩니다. (강의는 1.4.199를 설치했지만, 스프링부트의 버전이 강사님과 저와 달랐기에... 오류가 터진 거였죠..) 이 오류를 해결한 경위는 다음과 같습니다. 처음의 오류입니다. Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set 오류가 나길래, database를 지정하라는 소리가 있어서 application.yml을 다음과 같이 수정했죠.. jpa의 database: h2를 추가해줬습니다. 그랬더니 다른 오류를 뱉습니다. 스크린샷은 못 찍었는데, 오류 밑부분에 Version mismatch, driver version is "0" but server version is "16" 이런 오류가 터졌습니다. 그래서 dialect가 문제인가? 해서 dialect를 지정해봐도 이 오류가 절대로 고쳐지지 않기에 검색해봤는데... 다른 글들은 스프링부트 버전을 낮춰라, h2 버전을 낮춰라 하시는데 스프링 부트에서 사용하는 H2 데이터베이스 클라이언트 버전이 현재 2.1.212로 확인되어 제보드립니다. 라는 제목의 인프런 글을 보면서 스프링부트에 설치된 라이브러리 버전대로 올려버리자!!! 라고 해서 버전 올려버렸습니다. (1) 기존에 설치된 h2 삭제 기존 h2를 삭제하고 + ' h2 다른버전으로 재설치시 파일 삭제' 글 참고하셔서 삭제하라는 것 삭제하고(C:\users\사용자명에 있습니다. .h2로 시작하는 파일과 .db 확장자로 끝나는 걸 삭제하시면 됩니다.) (2) 본인 스프링부트에 맞는 h2를 설치 하고, 강의대로 JDBC URL에 jdbc:h2:~/jpashop 을 입력하고 '연결 시험' 말고 '연결'을 누르시면 됩니다. 그리고 세션 끊고 다시 나와서 이번에는 jdbc:h2:tcp:// localhost/~/jpashop을 '연결 시험' 말고 '연결'을 누르시면 됩니다. 연결 시험 누르면 잘 안 되서 연결 누르시면 되는데, 그래도 안 되면 오타 확인해주시고 localhost 대신 ip 넣으시면 됩니다. (3) 오류나면 yml에서 MVCC=true 부분은 삭제 application.yml에서 강의로 보셨으면 url: jdbc:h2:tcp:// localhost/~/jpashop ;MVCC=true 이 부분에서 MVCC=true 이 있을텐데, MVCC=true 이 부분을 삭제해주시면 저의 경우엔 정상적으로 돌아갔습니다!!! (현재 강의 자료 소스로 첨부된 application.yml 그대로 하시면 잘 돌아갑니다.)
호돌맨님의 강의를 정말 열심히 듣고 있는 학생입니다. 다름이 아니라 호돌맨님 강의와는 다른 방향으로 한번 KEY를 세팅해 볼 수는 없을까?? 라는 생각이 들었고 혹시나 저와 같은 문제를 마주친 분들 및 피드백을 받고 싶어서 글을 남깁니다. @Value 어노테이션을 사용하여 application.yml(프로퍼티) 파일에서 값을 가져오는 방법을 적용해 보았습니다. //application.yml spring: # secret properties profiles: include: secret //application-secret.yml jwt: secret: "ZxV0wmgRyU8ZGYBRITUGcaOi03osZK1bsy7qEUUjgBs=" KEY 값을 application.yml 과 분리시키기 위해 별도로 .yml 파일을 생성하여 저장하였습니다. //AuthController @Slf4j @RestController @RequiredArgsConstructor @RequestMapping("/api/auth") public class AuthController { private final AuthService authService; @Value("${jwt.secret}") private String KEY; ~~~~ } //AuthResolver @Slf4j @Component @RequiredArgsConstructor public class AuthResolver implements HandlerMethodArgumentResolver { private final SessionJpaRepository sessionJpaRepository; /** * TODO:jwt.secret 이 null 인 문제... * why??? */ @Value("${jwt.secret}") private String KEY; ~~~ } AuthController 와 AuthResolver 에 @Value 어노테이션을 사용하여 KEY 변수에 .yml 파일에 정의한 secret 값을 주입받게끔 코드를 작성하였습니다. 그러나 AuthController 에서는 정상적으로 .yml 파일에 정의해준 KEY 값이 주입이 되었지만 이상하게 AuthResolver 에서는 KEY 값이 null 이 나오더라구요... @Component 어노테이션도 적용해서 Bean 객체로 만들어줬는데도 말이죠 ㅠㅠ https://wildeveloperetrain.tistory.com/143 이 블로그에서 힌트를 얻을 수 있었습니다. 바로 WebMvcConfig 에서 AuthResolver 를 등록할때 new 연산자를 사용하여 새로운 인스턴스를 등록해주었기 때문이었습니다. new AuthResolver(sessionJpaRepository) //WebMvcConfig private final AuthResolver authResolver; @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { // resolvers.add(new AuthResolver(sessionJpaRepository)); resolvers.add(authResolver); } 그래서 new 연산자를 사용하는 것이 아닌 빈으로 등록된 인스턴스를 사용하여서 해결할 수 있었습니다. 다른분들에게 도움이 되셨으면 하는 마음에 글을 남깁니다. 혹시나 개선해야 될 점이 있거나 잘못된 부분이 있으면 댓글로 알려주시면 감사하겠습니다!!
test path에서 Lombok을 사용 할 경우, jar Build 과정에서 Lombok으로 인한 Build Failed가 발생합니다. (CMD) Task :compileTestJava FAILED error: package lombok does not exist error: cannot find symbol @Getter, @Setter, ... ... 해당 경우, 아래와 같이 build.gradle에 의존성을 추가하면 해결 가능합니다. 참고하시면 좋을 것 같습니다. (build.gradle) dependencies { testCompileOnly 'org.projectlombok:lombok:1.18.22' //테스트 환경에서 주입 testAnnotationProcessor 'org.projectlombok:lombok:1.18.24' //테스트환경의 어노테이션 주입 }
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
진짜... 자바부터 스프링 공부 많이했는데도 이해 1도 안가는 약간 돌대가리(?)가 아닐까 의심했는데.... 최태현님 강의 듣고 혼자서 백지 상태에서 코드 다 짤 수있게 됐어요 !! 그것도 이해를 하면서 !!! 미쳤습니다 ! 진짜 나만 알고싶은 숨은 강좌 !!! 강추강추 ~~ 레알 찐임
쉽게 처음하는 파이썬 고급 크롤링 [Scrapy, Selenium, Headless Chrome]
안녕하세요 저는 비전공자이고 풀스택 전과정 + 고급 크롤링 강의를 듣고있는 수강생입니다. 우선 너무 좋은 강의 정말 잘 듣고 있습니다. 저는 코딩을 아예처음 접하고있어서 어느쪽으로 가고싶은지 전혀 갈피가 없었는데요. 하다보니 데이터과학이 제가 하고싶었던 분야라는것을 알게되었습니다. 항상 외주로 개발자를 구해서 돈을 주고 프로그램을 제작하는것을 자주해왔는데요. 개발비로도 2000만원이상을 쓴것 같습니다. 그런데 제가직접 해보고자 이곳을 찾아왔고, 데이터 과학이 제가 생각한 분야라는것을 고급크롤링 강의들으면서 알게되었습니다. 그런데 궁금한점은 개발자에게 외주를 맡기면서 항상 GUI 방식의 프로그램을 받아서 그것으로 크롤링 및 자동화 프로그램들을 주로 외주를 맡겨왔었는데요. 강의 내용을 계속보고있는데 GUI 에 관한건 없더라구요. 제가 못찾는건지 별도 다른강의가 있는건지 알고싶습니다. 저는 GUI에 자동화 소스를 버튼처럼만드는 그런 프로그램을 만들고 싶거든요 ! 강의내용의 질문은 아니지만, 그 강의가있다면 추가로 구매해서 수강하고싶습니다. 답변 부탁드립니다
안녕하세요 영한님. 항상 좋은 내용을 알려주셔서 재밌게 공부하고 있습니다. 영한님께서 함께 배포해주신 강의 자료에서 아래와 같은 부분이 수정이 필요한 것 같아 문의 드립니다. 한 번 확인 부탁드립니다. 섹션 7. 외부설정과 프로필2 외부설정 사용 - @ConfigurationProperties 생성자 중 참고 @ConstructorBinding 스프링 3.0 -> 스프링 부트 3.0 섹션 9. 마이크로미터, 프로메테우스, 그라파나 프로메테우스 - 게이지와 카운터 중 rate() increase(data[1m]) -> rate(data[1m]) increase(data[2m]) -> rate(data[2m]) 그라파나 - 메트릭을 통한 문제 확인 설명 중 실무에서 주로 많이 발생하는 다음 5가지 대표적인 예시를 확인해보자. -> 실무에서 주로 많이 발생하는 다음 4가지 대표적인 예시를 확인해보자.
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
살면서 이렇게 즐겁게 강의 들어본 적이 없는 것 같네요... 들으면서 남겼던 질문 3개도 너무 감동적으로 답변해주시고,, 62 강의 12시간 1분 동안의 시간동안 태현님과 진행한 공부가 정말 행복했습니다 이렇게나 훌륭한 강의 만들어주셔서 감사드리고 항상 행복만 가득하시길 바라겠습니다. 공부하는 개발자 최태현님 감사합니다!