이야기를 나눠요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
실전! 스프링 데이터 JPA
테이블 설계 질문드립니다!
안녕하세요 김영한 선생님!선생님 강의 덕분에 스프링 공부 재밌게 하고 있습니다! 다름이아니라 코드 예제에서 테이블을 설계할 때 @GeneratedValue 어노테이션을 사용해서 모든 테이블의 PK를 idx로 잡고 비식별 관계로 연결하는 구조를 짜시던데 이 부분에 질문이 있습니다! 예를 들어 유저 테이블의 아이디 컬럼이 Not Null이고, Unique한 값이라고 할 때 이 컬럼이 유저 테이블의 PK역할을 할 수 있다고 생각하는데, idx 컬럼을 단순히 auto increment 타입으로 설정하게 되면 불필요한 컬럼이 늘어나는게 아닌지 궁금합니다! 테이블에서 Not Null이고, Unique한 컬럼이 있음에도 불구하고 auto increment를 활용한 id를 pk로 잡는것의 장점이 있을까요??
-
스프링 배치
TaskExecutorRepeatTemplate에 있는 throttleLimit 값을 변경하고 싶은데 방법이 없을까요?
TaskExecutorRepeatTemplate에 있는 throttleLimit 값을 변경하고 싶은데 방법이 없을까요? 현재 throttleLimit 을 set을 하려고 보니깐 @Deprecated(since = "5.0", forRemoval = true) public void setThrottleLimit(int throttleLimit) { this.throttleLimit = throttleLimit; }5.0버전 이후로는 삭제 되었다고 되어 있네요ㅠㅠ다른 방법으로 해당 throttleLimit 을 값 설정할 방법이 없을까요?
-
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
4강에서 처음 프로젝트 열 때, Gradle 2.7.1로 다운그레이드 하였습니다.
안녕하세요. 4강에서 처음 프로젝트 열 때, Gradle 2.7.1로 다운그레이드 하였습니다.원래는 Gradle 3 이상의 버전으로 설정되어 있어서 에러가 났었는데,자바 17이상일 때, Gradle 3 이 사용가능한 모양이더군요.해서 Gradle 2.7.1로 다운그레이드해서 급한 문제는 해결했는데..이대로 진행해도 문제가 되지 않을까요??
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요
삭제된 글입니다
-
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
제가 아직 빌드와 실행, 그리고접속 파트를 보고있는데
만약 소스를 업데이트하고 커밋하면 리눅스 EC2서버에서는 빌드를 다시해야하는건지 아니면 다시 깃클론을 해야하는건지 궁금합니다!
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
그의 설계는 대체...
8분 56초 모든것은 설계였다는 말에 감격해서 다시 한번 2회독해보려고 합니다...
-
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
데이터 베이스 설계
데이터 베이스 설계를 처음 접해봐서 설계 부분이 너무 어렵네요 ㅠㅠ db 설계 같은건 어떻게 공부할 수 있을까요??
-
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
p6spy 버전에 따른 p6spy 로그 문제
현 시점 (2023.04.23) 기준 spring boot 2.x 의 최신버전인 spring boot 2.7.10 에서 강의 자료의 https://github.com/gavlyukovskiy/spring-boot-data-source-decorator의 p6spy 최신 버전인 1.9.0 사용 했을떄 p6spy로그가 찍히지 않네요 추가 설정을 통해서 해결할 방법이 있을것으로 추측되지만.. 귀찮으신 분들은 그냥 강의에서 사용했던 p6spy 1.5.6 버전을 그냥 사용하시면 문제없이 출력이 되니 참고하실분들은 참고하세요 ㅎㅎ
-
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
프로젝트를 시작할 때
안녕하십니까 강사님 강의 너무 잘 듣고 있습니다. 서버 개발에 필요한 일련의 과정을 정리하는데 많은 도움이 되고 있습니다.강의 내용에 대한 질문은 아닙니다. 이제 취업을 하기위한 포트폴리오를 만들 단계라고 생각하는데 개인 프로젝트를 할 때 가이드 라인을 여쭙고자 질문드립니다.실무에선 상황마다 물론 다르겠지만 강사님께선 보통 프로젝트 주제를 선정하고,요구사항을 정리한 다음테이블 설계를 하시고 그다음API 스펙을 정한 다음 개발에 착수하시나요?그리고 API 스펙을 정할 때 controller에 진입하기 위한 경로들을 모두 정하신 다음 본격적인 코드 작성을 하시는지도 궁금합니다.항상 개인 프로젝트를 하다 보면 프로젝트 시작 단계에서 고려하지 못한 부분들을 놓쳐 결국 프로세스가 뒤죽박죽 되고 헷갈리게 되는것 같더라구요..그래서 강사님의 개인적인 개발 프로세스를 슬쩍? 알려주시면 감사하겠습니다.좋은 강의 만들어주셔서 감사합니다:)그리고 프로젝트를 할 때 완성된 결과물을 보여주기 위해선 어느 정도의 ui도 필요할 것 같은데 이런 경우 rest api를 만들기 보단 ssr 애플리케이션을 만드는 것이 나을까요..?두서 없는 질문이라서 죄송합니다ㅎㅎ..
-
스프링 배치
에러 공유[@RequiredArgsConstructor not initialized in the default constructor]
@RequiredArgsConstructor 사용시 , not initialized in the default constructor 에러가 나온다면gradle 버전으로 인한 lombok dependency 추가 방법이 다르기 때문에 발생하는 문제일 거에요,build.gradle 파일에서 아래와 같이 lombok 방법을 추가해 주세요. compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok'
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의를 듣기전에 알아야 할 지식이 어떤게 있을까 해서 질문드립니다.
강의를 듣기전에 알아야 할 지식이 어떤게 있을까 해서 질문드립니다.백엔드 개발자가 되고싶은데 자바는 어느정도 아는 상태이고 다음으로는 스프링에 대해서 공부하라고 하더라고여 그래서 찾아보던중 영한님 강의를 찾게 되었습니다. 정말 자바만 알아도 강의를 듣는데 문제가 없을까요? 또 백엔드 관련해서 database같은 것도 배워야 한다고 하는데 영한님 강의를 다 듣고 따로 database를 배워야 하는건가요?
-
Spring Boot JWT Tutorial
invalid source release: 17 에러 발생하는 경우 해결
JDK 버전이 안맞는거니까 JDK 17 깔아주시면 되어요https://velog.io/@persestitan/Spring-Cause-error-invalid-source-release-17-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95-IntelliJ저도 당황했던거라 공유해봅니다~
-
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
안녕하세요 스프링부트 JPA 관련 질문드립니다!
JPA 강의에서 EntityManagerfactory를 하나 만들어서 EntityManager가 필요할때마다 만들고 close()하는 방식으로 해야한다고 들었는데 스프링 부트에서는 private final EntityManager em; 이렇게 등록된 Bean에 대해서 의존성을 주입해서 만들게되면 문제가 없나요?? 이렇게 private final EntityManager em;로 하는 방식도 해당 객체가 생길때마다 새로 em이 만들어지는건가요??
-
토비의 스프링 부트 - 이해와 원리
idea 명령어가 안먹는 경우해결 방법
안녕하세요. 강의를 듣다가 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 - 웹 애플리케이션 개발
h2 오류 해결 정리 - 스프링부트 2.7.9 버전인 경우
안녕하십니까. 김영한 강사님의 '실전! 스프링부트 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 그대로 하시면 잘 돌아갑니다.)
-
호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
@Value 어노테이션을 사용해서 KEY를 주입받고 싶을때!!!
호돌맨님의 강의를 정말 열심히 듣고 있는 학생입니다.다름이 아니라 호돌맨님 강의와는 다른 방향으로 한번 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 연산자를 사용하는 것이 아닌 빈으로 등록된 인스턴스를 사용하여서 해결할 수 있었습니다.다른분들에게 도움이 되셨으면 하는 마음에 글을 남깁니다. 혹시나 개선해야 될 점이 있거나 잘못된 부분이 있으면 댓글로 알려주시면 감사하겠습니다!!
-
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Lombok으로 인한 jar build failed 발생하시는 분
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' //테스트환경의 어노테이션 주입 }
-
스프링 부트 - 핵심 원리와 활용
HttpExchangeRepository가 없을 경우
HttpExchangeRepository가 안 나오시는 분들은 Spring Boot 버전이 2.x인지 확인해 주세요.해당 인터페이스는 Spring Boot 3부터 적용되었습니다. 이전 버전의 이름은 HttpTraceRepository입니다.
-
스프링 부트 - 핵심 원리와 활용
build 정보가 안 나오는 경우
build 정보가 안 나오는 경우, IntelliJ 설정 - Build, Execution, Deployment - Build Tools - Gradle 로 가셔서 Build and run using, Run tests using 값을 Gradle로 변경해 주세요.
-
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
미쳤다!!!
진짜... 자바부터 스프링 공부 많이했는데도 이해 1도 안가는 약간 돌대가리(?)가 아닐까 의심했는데....최태현님 강의 듣고 혼자서 백지 상태에서 코드 다 짤 수있게 됐어요 !!그것도 이해를 하면서 !!!미쳤습니다 ! 진짜 나만 알고싶은 숨은 강좌 !!!강추강추 ~~ 레알 찐임