학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 강사님 레거시 스프링프레임워크같은 경우 root-context.xml, servlet-context.xml 로 보통 계층적으로 2개의 ioc 컨테이너를 생성해서 스프링을 운용하는걸로 알고 있습니다. 그런데 스프링부트와 같은경우 스프링프레임워크과 달리 위 2개를 통합하여 1개의 ioc 컨테이너로 운용되는걸까요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. Test 까지는 강의와 같이 잘 뜹니다 TestServlet.service TestServlet.service TestServlet.service TestServlet.service 근데 c, ctx 를 하려니 안 나오더라고요 그래서 예제 파일로 돌려봤는데도 동일했습니다 파일도 첨부드립니다 https://drive.google.com/drive/folders/1V5yyb9d7viV1mqRUkkJ4hr-gFdNtzTes?usp=drive_link
안녕하세요, 강사님. 우선 강의 잘 듣고 있습니다! 실무에서는 어떤 식으로 로그 관리가 진행되는지 궁금합니다. 개인적으로 trace나 debug 레벨과 같은 로그도 수집을 필수적으로 하는지 궁금합니다. 보관 기간을 3~7일 정도로 짧게 해서 저장한다고 하면 어차피 금방 제거되는 로그를 수집하는 이유가 있을지 의문이 들어서요! debug 레벨 로그는 분석이 필요할 때만 그 때 그 때 심고 필요가 없어지면 지우는 게 맞을까요? 보통은 trace 레벨 로그를 더 많이 쓰는지도 궁금합니다. 감사합니다 :)
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 강의 잘 들었습니다! 궁금한 점이 있어서 문의 드립니다. 강의에서는 상위 1000건에 대해서 articleId를 기준으로 Redis 캐시를 해두었는데 혹시 키워드(제목, 작성자, 내용등)에 대한 검색 페이징 처리도 캐시가 가능한걸까요? 제가 생각했을 때는 아래와 같은 방법으로 처리가 가능할 것 같은데 보통 대용량 트래픽 환경에서 해당 케이스를 어떻게 처리하는지 궁금합니다! 키워드 검색이 있을 경우 RDB에서 직접 조회 키워드 검색 조건 별로 Redis 캐시 Elasticsearch 도입 후 동기화하여 키워드 검색시 Elasticsearch에서 조회
안녕하세요. 단건 update관련 질문이 있습니다. update +연산 update Member m set m.stock = m.stock + 1 where m.id = :id 이런식으로 해야하는 연산은 어떻게 처리하나요? 벌크작업은 아니지만 개수를 증가시킬 때 할당으로 쓰면 덮어씌워질 수 있느니 + 1 로 처리하는 경우도 있는 것으로 아는데, 이런 경우는 영속성 컨텍스트에 반영이 안되는걸로 알고 있습니다. 객체를 기반으로 업데이트 하는 경우 m.stock = n으로 할당이 되어서 이런 경우는 객체지향관점에서 어떻게 처리하고 설계하시는지 궁금합니다. 업데이트 전 조회 업데이트 전에 findOne 조회를 하시던데, 전 업데이트할 때 요청받은값만 덮어쓰면 되고 그게 더 안전할때도 있다고 생각이 듭니다. 이런 경우에는 어떻게 처리하시는지 궁금합니다. 또한, 객체를 기반으로 업데이트하기에는 요청받은 데이터가 객체랑 필드가 정확히 매핑될것 같지 않아서 결국 update문 하나만 요청하는 방식으로 처리해야 할 것 같은데 어떻게 처리하시는지 궁금합니다. 감사합니다.
강의 21:06에서 작성하신대로 LAZY로 설정한 객체에 접근하면 프록시 객체가 초기화되면서 필요한 때에 DB에 쿼리를 날린다고 하셨는데요. 반복문 횟수만큼 order.getMember().getName()을 사용하니 여기서 N+1 문제가 발생하는건가요? (LAZY 로딩의 객체를 초기화할 때는 테이블 전체를 가져오는 게 아니라 객체 하나만 로딩해오는거죠?) 감사합니다.
에러: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.example.feign.NaverClientIntegrationTest': Unsatisfied dependency expressed through field 'naverClient': Error creating bean with name 'com.example.feign.NaverClient': FactoryBean threw exception on object creation NaverClientIntegrationTest파일 작동시 위와 같은 에러가 납니다. NaverClientInt 파일에서 컨피규레이션을 넣어도 위와 같은 에러가 나옵니다. 제가 강의 자료 와 비교해도 NaverErrorDecoder(강의자료와 다름. 아직 진도 안나감)를 제외하고 나머지 다 똑같거든요. 근데 에러가 나는 이유를 몰라서 질문올립니다. < jaytech108@gmail.com >이쪽으로 파일 보냈습니다.
안녕하세요, /api/authenticate 경로에 대한 응답값으로 계속 401에러가 나서 질문글 올렸습니다. 혹시나 빠진 부분이 있을까 싶어 언급해주신 깃허브 주소에서 git clone으로 프로젝트 전체를 다운받아서 실행해도 /api/hello 경로에 대해서만 응답 값이 정상으로 오네요. 원인이 무엇일까요?
강의 내용에 대해 질문해 주세요 에러가 날 경우 본인 코드가 있는 git 주소를 알려주거나 최대한 상세히 적어주세요 ### Error querying database. Cause: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEM" not found (this database is empty); SQL statement: 라는 에러가 나요
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 지난 주 입사한 신입개발자입니다. 저는 STS에서 spring, maven으로 공부를 했었고, 현재 다니는 회사에서도 egovframework를 사용합니다. 현재 수업은 Spring Boot에서 gradle을 활용하는데, Spring에서 maven을 활용해서 수업을 진행해도 문제가 없는지 궁금합니다.(부트사용 X) 불가능 하다면 intelliJ에서 gradle을 활용해서 공부를 해도 현업에서 eclipse, spring, maven에서도 충분히 활용가능하게끔 강의가 구성되어있는지도 궁금합니다! 감사합니다!
dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' developmentOnly 'org.springframework.boot:spring-boot-devtools' } 의존성에 맨 아랫줄 코드를 추가하고, Build project automatically 이 부분도 체크하고, Advanced Settings의 자동 시작 이 부분도 체크했는데 컨트롤러 파일 수정 후 저장을 해도 브라우저엔 변경 사항이 적용이 안 됩니다. 검색을 해서 application.properties 파일에 spring.thymeleaf.cache=false 이 코드를 추가도 해보고, 또 Settings > Build, Execution, Deployment > Compiler > Resource patterns에 !?*.html를 추가해 봐도 안 되네요.. 참고로 제 프로젝트에선 Run/Debug Configurations 창에서 Modify options에 Spring Boot 항목이 없는데 이건 왜 그런 걸까요, 여기서 On 'Update' action에서 또 뭘 선택하라는 블로그들도 보긴 했는데 이 부분은 제 프로젝트에선 아예 없네요. Spring Boot 항목없이 바로 Operating System부터 나옵니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] H2 database 상에는 테이블이 잘 만들어졌고 오류도 안뜨는데 콘솔창에 create table~ 이 문장들이 출력되지가 않습니다. 상관없는 것인지 아니면 뭐가 문제일까요 ?
@Repository public interface ArticleLikeRepository extends JpaRepository<ArticleLike, Long> { // 메서드 이름 기반 쿼리 생성 // JPQL로 암시적으로 생성 해줌 // SELECT a FROM ArticleLike a WHERE a.articleId = ?1 AND a.userId = ?2 Optional<ArticleLike> findByArticleIdAndUserId(Long articleId, Long userId); } 보통 Repository 부분 보면 JPQL로방식으로 native쿼리를 통해 db데이터 조회,삭제,추가,업데이트 등등 내용이 많앗는데,, 아래부분은 쿼리를 작성 안해도 명시적인 구현체 없이 메서드 이름 기반 쿼리생성을 통해서 데이터를 조회 할수 있다고 하면 될가요?? 암시적으로 메서드 이름 기반 쿼리 생성은 암시적으로 JPQL이 생성된 상태에서 조회되는건가요?? 혹시 나해서 주석으로 spring document랑 기타 자료를 찾아서 주석문을 추가 했는데, 제가 이해한 부분이 맞나 싶어서 글을 올려봣습니다
안녕하세요, 이번 실습 프로젝트 동안에 Order와 OrderItem은 N:1의 연관관계로 설계하셨습니다. OrderService의 order()안에서 OrderItem을 생성하고 Order를 생성하는 것으로 미루어 볼 때, 하나의 OrderItem이 하나의 Order와 대응되는 구조가 아닌가요? (즉 한 건의 주문 데이터는 한 건의 주문상세 데이터만 갖는 구조) 이런거라면 order에서 cancel할 때 OrderItem을 순회하며 cancel하는 것이 의미가 있는건지 궁금합니다! 즉, 일괄 주문이 안되는데 일괄 주문 취소가 의미가 있는건지 궁금합니다! 감사합니다.
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "delivery_id") private Delivery delivery; 보시는 바와 같이 Order의 생성 메서드에 필요한 파라미터에 들어가는 두 데이터입니다. 주문이 만들어지기 위해서는 OrderItem이 먼저 필요하기 때문에 인자로 주입하고 또 영속성 전이를 주는 것이 논리적이라 생각해 동의할 수 있었습니다. 그러나 Delivery 타입을 메서드로 주입받는 것은 배송이 있고 그 다음 주문이 존재한다는 흐름으로 받아들여집니다. 이 부분에 대한 조언을 얻을 수 있을까요? 감사합니다.
안녕하세요, 강의를 보면서 궁금한 점이 생겨서요. 강의 상에서는 beforeChunk 가 트랜잭션 밖에서, ItemReader 의 read 메소드 이전에 실행된다고 작성되어 있습니다만, 스프링 공식 문서의 설명에 따르면 beforeChunk 는 트랜잭션 안에서 실행된다고 설명되어 있습니다. https://docs.spring.io/spring-batch/docs/current/api/org/springframework/batch/core/ChunkListener.html 추가로, ChunkListener 강의 내용 15:05 에 보면 beforeChunk 가 runInTransaction 내부에서 실행되는 것을 볼 수 있습니다. 어떤 내용이 정확한지 부가 설명 부탁드립니다.
안녕하세요, 궁금한점 이있는데 33~34 강의 편에서 보면 공격자가 세션 쿠키를 희생자의 브라우저에 삽입해서 희생자가 로그인하면 공격자도 희생자의 정보를 탈취하는 그런 내용의 강의가 있었는데요, 궁금한 점은 공격자는 왜 로그인 같은 기타 인증을 하지 않고 기본적으로 세션 쿠키가 생성이 되어있는걸까요? SessionCreation policy 가 always 가 아니고 if required 였던거 같은데 왜 이미 생성되어 있던 것인지 궁금합니다.