묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 배치
BatchStatus 와 ExitStatus 의 차이점이 뭔지 모르겠습니다.
안녕하세요 선생님, 제가 강의를 계속 듣다가 너무 헷갈려서 질문 올립니다.섹션 6 Transition - 배치상태 유형 (BatchStatus / ExitStatus / FlowExecutionStatus) 를 듣고 계속 머릿속으로 BatchStatus 와 ExitStatus 둘 간의 차이점을 이해하려고 해도 도통 이해가 되지 않아서 질문드립니다.PPT 에서는 BatchStatus, ExitStatus 를 다음과 같이 정의합니다.- BatchStatus : JobExecution 과 StepExecution 속성으로 Job 과 Step 의 종료 후 최종 결과 상태가 무엇인지 정의- ExitStatus : JobExecution 과 StepExecution 의 속성으로 Job 과 Step 의 실행 후 어떤 상태로 종료되었는지 정의... 라고 작성되어 있는데요.BatchStatus 에서 설명하는 "종료 후 최종 결과 상태" 라는 게 결국은 ExitStatus 에서 말하는 "실행 후 어떤 상태로 종료되었는지" 와 똑같은 말로 보입니다. 혹시 이 둘간의 "차이"와 "용도"가 뭔지 조금만 이해하기 쉽게 알려주실 수 없을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemorymemberRepository와 memberRepository에 대아혀
MemorymemberRepository가 memberRepository를 구현하고 있는데 그러면 이 부분에서 MemberRepository memberRepository; 로 선언하는게 아니라 MemoryMemberRepository memberRepository; 로 선언한 후 사용해야 하는것 아닌가요,,? 인터페이스를 구현한게 MemoryMemberRepository인데 memberRepository로 선언을 해서 계속 사용하면 MemoryMemberRepository에서 구현한 내용을 못보는것 아닌가요,,?? MemberRepository memberRepository = new MemoryMemberRepository();MemberService memberService = new MemberService(memberRepository);이런 식으로 따로 생성을 해서 사용해야 하는것이 아닌가 궁금합니다!
-
미해결실전! 스프링 데이터 JPA
메소드 이름으로 쿼리 생성 - 내부 동작
안녕하세요, [메소드 이름으로 쿼리 생성 메소드] 강의 중 메소드 이름을 분석해서 JPQL 쿼리 실행 부분에 질문이 있습니다. 예를 들어 findByUsernameAndEmail()과 같이 이름을 정의하였을 때, 내부적으로 SQL을 어떻게 생성하는지 궁금합니다. '자바 ORM 표준 JPA 기본편' 강의에서 em.persist()를 실행하면 영속성 컨텍스트 내부에서 SQL을 생성하고, SQL 쓰기 지연 저장소에 저장하는 것을 설명해주셨습니다. 즉, 컴파일 시점이 아닌, 런타임 시점 동적으로 쿼리를 생성하는 것으로 이해하였습니다. 위에서 말씀 드린 findByUsernameAndEmail()과 같은 경우 jpql로 변환되어서 쿼리가 실행된다고 말씀해주셨습니다. 어떠한 방법을 통해, 내부적으로 어떠한 로직을 거쳐 런타임에 jpql로 변환이 될 수 있는지 궁금합니다. 감사합니다.
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
프론트엔드 부분 관련 질문
안녕하세요!선생님의 강의를 너무나 재밌게 잘 듣고 있는 수강생입니다.현재 배포 준비하기 전까지 강의를 들었는데요, 강의와 함께 구현된 기능 외에 추가적인 기능을 구현해보고 싶어서 질문드립니다!유저의 대출 기록을 보여준다거나 하는 다양한 기능들을 프론트엔드 부분에서도 추가하여 만들어보고 싶은데 저희 프로젝트의 index.html, main.d4f24480.js 등을 둘러봐도 어떻게 건드려야 할지 전혀 감이 안오더라구요! 목록에서 유저들 정보가 뿌려지는 부분의 코드도 못찾아서요ㅠ괜찮으시다면 저희 프로젝트에서 프론트적인 부분을 어떻게 만드셨는지나, 동작하는 큰 흐름 혹은 간략한 설명이라도 부탁드려도 될까요??ㅜㅜ 좋은 강의 만들어주셔서 감사합니다:)
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
선생님 테스트에 대해서 질문있습니다.
지금 제가 도커를 먼저 알고 싶어서 카프카까지 다 들은후 도커부터 듣는 중인데요. 근데 카프카할때부터인가 test를 다 안하고 넘기는 설정을 하시는거 같은데 왜 이렇게 하시나요?? 이게 실제 운영환경이라면 이렇게 못하잖아요?(테스트 코드가 있을 수도 있으니까요) 어떤걸 참고하면서 하면 이 상황을 타개해 나갈수 있을까요?
-
미해결스프링 부트 - 핵심 원리와 활용
intellij 무료버전 tomcat runner 무반응으로 강의 진행이 불가능합니다.
https://www.inflearn.com/questions/856870/intellij-%EB%AC%B4%EB%A3%8C%EB%B2%84%EC%A0%84-tomcat-runner-%EC%8B%A4%ED%96%89-%EC%98%A4%EB%A5%98이 글과 동일하게 configuration에서 tomcat runner를 클릭해도 무반응입니다.plugin이 설치되어 있고 활성화 된 상태인데 제대로 작동이 안되네요.캐시 삭제를 해도 해결되지 않습니다. 다른 plugin들은 설치 시 잘 작동합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인스턴스가 두개일 때
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강사님이 설명해주신 것 중 memberService쪽과 memberRepository에 있는 MemoryMemberRepository는 다른것이다 라고 말씀하셨습니다 따라서 인스턴스가 두개가 만들어진것이고 static이라 문제가 없을 테지만 static이 아니라면 다른 DB를 사용하는 것이기 때문에 내용이 틀려 질 수 있다고 하셨는데여기에 대해서 더 자세히 알고싶습니다.왜 다른 것인지 궁금합니다좀 더 찾아보고 싶은데 어떤 개념을 검색해보면 될까요 ? 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
EntityManager 도 Component 로 인식하는 것인가요?
안녕하세요! 이전 수업에서 Autowired로 주입 시키려면 스프링 빈에서 관리하는 객체여야한다고 배웠고, 스프링 빈에서 관리하려면 @Component 어노테이션이 있어야 한다고 이해했습니다.근데 EntityManager는 컴포넌트가 아닌데 왜Autowired 대상이 되는지 이해가 안됩니다ㅜㅜ감사합니다..
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
session:spring-session-jdbc 의존성 추가 시 mysql 설정
당연히 구글링 해보셨져? 원하는 결과를 못찾으셨나요? 어떤 검색어를 입력했는지 알려주세문제가 발생한 코드(프로젝트)를 Github에 올리시고 링크를 알려주세요.만약 MySQL로 진행하시는 분들을 위해 session-jdbc 추가 시 SPRING_SESSION 테이블 추가가 안된다면 이 링크 참고해서 해주시면 되고자 공유드립니다.https://stackoverflow.com/questions/53823174/how-to-initialize-schema-in-spring-session-with-jdbc아래처럼 application.yml에 spring 프로퍼티 안에 해당 내용을 추가하시면 될듯합니다.session: jdbc: initialize-schema: always추가로 설정이 필요한 내용이 있으면 댓글 부탁드리겠습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
스프링 부트와 JPA 활용
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 수강생 입니다. 궁금한것이 있어 질문 합니다. JPA 를 하면서 궁금한것이 있어서 몇가지 적어 봅니다. JPA를 활용할때 JPA코드로 만들어진 테이블이 아닌 기존에 DDL로 만들어진 테이블 조회도 가능 할까요 ? - 이건 아직 제가 조회 부분을 안봐서 질문하는것일수도 있네요 ㅠ 실행하면서 JPA로 만들어진 테이블이 구성되는데 그럼 매번 실행할때마다 테이블을 지우고 생성되는건지 아니면 중복테이블을 체크하고 생성되는것일까요 ? ManyTOMany를 실무에선 안쓴다는 말이 다대다 구성을 안한다는 말씀이신거 같은데 그럼 다대다와 같은 경우를 중간테이블로 두어서 1대다 형식으로 구성하는 방안이 좋을까요 ?
-
미해결스프링 배치
flow 위에 jobparameters를 사용하기 위해서는 어떤 scope를 정의해줘야 하나요?
안녕하세요, 강사님!job > flow > step으로 구성되어 있는데 flow위에 jobparameters를 사용하기 위해서는 어떤 scope를 정의해줘야 하나요? step scope is not active라고 자꾸 오류가 나네요.강의를 봐도 잘 이해가 안 가서요. 아직 제가 개념이 덜 잡혔나봅니다. ㅠㅠ답변 감사드립니다! 코드입니다!@Slf4j @Getter @NoArgsConstructor public class CreateDateJobParameter { private String startDate; private String endDate; @Value("#{jobParameters[startDate]}") public void setStartDate(String startDate) { this.startDate = startDate; } @Value("#{jobParameters[endDate]}") public void setEndDate(String endDate) { this.endDate = endDate; } } @Slf4j @RequiredArgsConstructor @Configuration public class OrderProcessingJobConfiguration { private final JobBuilderFactory jobBuilderFactory; private final StepBuilderFactory stepBuilderFactory; private final CreateDateJobParameter jobParameterCreator; @JobScope @Bean public CreateDateJobParameter jobParameterCreator() { return new CreateDateJobParameter(); } @Bean public Job orderProcessingJob() { return jobBuilderFactory.get("orderProcessingJob") .incrementer(new UniqueRunIdIncrementer()) .start(fetchOrderDataFlow()) .next(getOrderListFlow()) .split(taskExecutor()) .add() .end() .build(); } @Bean @StepScope public Flow fetchOrderDataFlow() { log.debug(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>fetchOrderDataFlow"); Flow flow1 = new FlowBuilder<Flow>("flow1") .start(fetchOrderDataStep1()) .build(); Flow flow2 = new FlowBuilder<Flow>("flow2") .start(fetchOrderDataStep2()) .build(); Flow flow3 = new FlowBuilder<Flow>("flow3") .start(fetchOrderDataStep3()) .build(); Flow flow4 = new FlowBuilder<Flow>("flow4") .start(fetchOrderDataStep4()) .build(); Flow flow5 = new FlowBuilder<Flow>("flow5") .start(fetchOrderDataStep5()) .build(); FlowBuilder<SimpleFlow> flowBuilder = new FlowBuilder<>("fetchOrderDataFlow"); flowBuilder.split(taskExecutor()) .add(flow1, flow2, flow3, flow4, flow5); return flowBuilder.build(); } @Bean public Step fetchOrderDataStep1() { return createFetchOrderDataStep("fetchOrderDataStep1", "store1", jobParameterCreator.getStartDate(), jobParameterCreator.getEndDate()); } ... }
-
미해결스프링 시큐리티
Ip 제한의 대한 질문이 있습니다.
강의에서 설명해주신 내용은 잘 이해했습니다.강의의 내용은 permitAll 자원을 제외하고, 나머지 인가 자원의 대한 Ip 권한 체크인데요.개인적인 생각으로는 보통 특정 자원이 아닌, 모든 자원의 대한 IP 제한을 하지 않나 싶습니다.그렇게되면, Voter로는 해당 구현이 어려워 보이는데요.[permitAll은 FilterSecurityInterceptor를 상속한 PermitAllFilter에서 처리하기 때문]모든 자원에 대한 IP 제한을 할 경우, 커스텀 필터[IpAccessFilter]를 만들어서 제한을 해야한다고 생각합니다.그러 경우, FilterSecurityInterceptor 전에 두고, 화이트 리스트 IP가 아니라면 AccessDeniedException을 발생할까 고민중입니다. 해당 필터의 위치는 어느쪽이 적합한지와 제가 질문드린 내용의 대한 강사님의 생각이 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
왜 DTO 만드실때 static 을 붙인 건가요??
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]항상 DTO 만드실때 static 클래스 꼭 붙이시길래 한번 빼고 만들면 오류가 나는 건가? 싶어서 뺴봤는데 상관이 없더라고용. 혹시 static 을 굳이 붙이신 이유가 있나요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
fetch join 과 EAGER
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]제가 이해한게 맞을까요?일단 기본적으로 type을 LAZY 로 하는 이유는 조회할때 한 방에 다른 엔티티까지 쿼리가 나가고 그거에 연관된 엔티티까지 쿼리가 나가면 비효율 적이다. 그래서 LAZY 를 쓰는데 조회할때 다른 Entity 의 값도 가져오려면 LAZY 타입이니 쿼리가 많이 나가서 fetch JOIN 으로 한 쿼리로 연결 시킨다. 그러면 EAGER 바꾸면 될 것같지만, EAGER 는 예측할 수 없는 문제도 있고, 다른곳에서 조회할때는 또 다른 엔티티의 값이 필요가 없을 수도 있기 때문에 기본은 LAZY로 해두고 다른 엔티티의 값이 필요한 특수한 경우에만 fetch JOIN 을 한다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
단축키 안내창..;
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]아래 초록색 단축키 보여주는거... 봐도 모르겠어요윈도우 인텔리제이 사용하거든요..그래서 윈도우 검색하거나, 대충 짐작가는 키를 사용하긴하는데... --;;
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
포스트맨 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 내용의 코드도 모두 동일한데, 포스트맨을 통한 url 요청에서 다음과 같이 오류가 발생합니다.그러다가 'http://' 를 생략하고 다시 요청했는데 이번엔 정상적으로 동작했습니다.이처럼 http:// 를 생략하니까 정상 작동하는 이유에 대해서 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
20:24 부분의 줌인
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]20:24 부분의 줌인 단축키가 있나요?코드 부분 단축키 말고 패키지 부분에 적용하는 방법은 찾지 못하겠습니다 ㅠㅠ
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
isReturn을 val로 선언해서 얻는 이점이 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 선생님의 이전 강의를 들을 때도 신기하면서도 의아하기도 했던 부분인데요그냥 그런가보다 하고 넘어갔는데 보면 볼수록 궁금해서 여쭤보게 되었습니다 fun isReturn(): Boolean { this.status == LoanStatus.RETURNED } 이 코드랑 비교했을 때 val isReturn을 필드처럼 사용하는 게 어떤 부분에서 이점이 있는 것인지 궁금합니다.별다른 이점이 없다면 오히려 팀원들이 익숙한 방향(함수 사용)으로 가는 게 맞는 것 같아서요!!
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
named arguements를 늘 작성하시나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.코틀린에서 제시해주는 컨벤션을 보면 named arguements를 작성하는 걸 권장하고 있고, 선생님께서도 늘 작성하시는 것 같은데 실무에서도 똑같이 적용 중이신지 궁금합니다한 편으로는 가독성이 좋게 느껴지면서도, 한 편으로는 어차피 ide에서 해당 필드가 무엇인지 표기해주는데 공수가 늘어나는 것이 아닌가 고민이 있습니다만약 쓸거라면 아예 컨벤션 룰로 정하고 다 함께 쓰던지 말던지 하는 게 좋을 것 같아서요..
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
와 진짜 대박이네요 디폴트 파라미터 하나로 이렇게 편해질수가 ㅜ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 자바 스프링에서는 테스트용 생성자 메서드가 있어도, 매번 일일히 null을 넣어준다거나 하는 문제점들이 있어서 결국 Builder를 사용했었는데코틀린에서는 롬복 Builder가 지원되지 않는다고 해서 엄청 고민 중이였습니다근데 이번 강의 보니까 그냥 온전한 객체 만들어주는 팩터리 메서드 하나 만들어놓고 테스트용으로 필요한 인자 값들만 설정해주면 되는 거였군요진짜 미쳤다.. 갓틀린..잘 배워갑니다..