묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 핵심 원리 - 기본편
DI 활용한 시뮬레이션 관해 질문드립니다.
안녕하세요. 좋은 강의 열심히 듣고 있는 수강생입니다. 현직에서 절차지향 베이스 프로그램에 개발을 맡고있으며, 스프링 및 객체지향에도 관심이 있어 수강 중입니다. 강의를 수강하며 나름대로 C → Java Spring Framwork 로의 번역(?) 작업을 하는 걸로 독학하고 있습니다. 강의와 약간 동떨어져 보여질 수 있지만 질문 드립니다. Business 1) 잔액 충전 → 구매 → 잔액 조회 위와 같은 비즈니스가 있을 때, 각각의 서비스에서는 각각 그 DB값을 바라보게 설계되어 있습니다. 충전에서는 잔액을 Update 하고 종료. 구매에서는 잔액을 감액, Update 하고 종료. 최종 남은 잔액 조회. Business 2) (잔액에 100원 더 충전했다 치고) → 구매하면 → 잔액 조회 시뮬레이션 위와 같은 가상의 확인 작업이 필요하다고 할 때, 실제 DB값을 Update 할 수 없기에 휘발성 메모리 값으로 처리가 필요해보입니다. 배운 내용을 종합적으로 대입해봤을 때, Business 2 에서의 시뮬레이션에서는 ① 운영DB의 잔액을 메모리로 카피 한다음 ② 카피한 객체를 ( MemoryRepository 같은 느낌으로 ) DI 해주는 것으로 기존 서비스 로직에 수정없이 진행할 수 있을 것 같은데요. 1. 위와 같은 해결방법이 흔히 사용하는 방법인지? 2. 카피해야 하는 운영DB의 잔액 테이블이 다수일 경우, ( 충전의 경우 100개의 테이블이 변경 되며, 최종 잔액 조회시 모두의 값이 필요하다.) <Business 2>를 위해 100개의 테이블 값을 휘발성 메모리로 띄워 주입하는 방법뿐일지? 질문 드립니다. 장황하고 강의와 동떨어져 보여 죄송합니다. 좋은 강의 진심으로 깊은 감사드립니다.
-
미해결스프링 핵심 원리 - 기본편
추가질문
안녕하세요 영한 팀장님 밑에 주소에 대한 추가 질문입니다. https://www.inflearn.com/questions/166055 String, Long, List 같은 자바에서 이미 구현된 Class 들에 대해서는 스프링 컨테이너가 별도로 Bean으로 만들지 않는것인가요? 수도 코드로 설명드리자면 if (java 언어 내에서 구현된 Class이면): Bean으로 등록안함 else : /*사용자가 만든클래스*/ Bean으로 등록함 이런식으로 컨테이너가 구성되어 있는것인가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
변경 감지와 cascade 질문
안녕하세요, 공부하다 cascade 옵션과 변경 감지에 혼동되는 점이 있어 질문 드립니다. 주문 생성 메서드(order)의 경우, Order -> OrderItem / Order -> Delivery가 Cascade 설정이 되어 있어 orderRepository.save(order)만 하더라도 연관된 OrderItem과 Delivery가 각각 Insert된다고 이해했습니다.(remove, detach 등등 모두 동일) 주문 취소 메서드(cancelOrder)를 보면 orderId를 통해 order를 조회하고(조회된 order는 영속 상태), order.cancel()시 orderItem.cancel()과 그 안의 item.addStock()을 통해 변경감지가 되어 order와 item의 update 쿼리가 실행된다고 하셨습니다. 여기서 제가 헷갈리는 부분은 주문 취소시 item이 변경감지가 되어 update쿼리가 실행되는 부분인데요. item.addStock()을 통해 item의 update 쿼리가 실행됐다는 것은 item이 영속성 컨텍스트에 영속상태가 되었다는 것을 뜻하는데, 단순히 order를 orderRepository로 조회를 하게 되면 order와 연관된 모든 엔티티들이 영속상태가 되는 것인가요? (order 한 개 조회 시-> orderItem... 영속-> item... 영속) 위의 과정이 맞다면 연관된 여러 엔티티의 변경감지는 cascade 설정과는 무관하게 엔티티 조회 시 관련된 엔티티는 모두 영속화 되는 것인지 궁금합니다. (order -> orderItem -> item 의 변경감지를 위해 order->orderItem cascade.ALL 설정 & orderItem->item cascade.ALL 설정이 되어야 orderRepository를 통해 order 조회 시 하위 엔티티들이 모두 영속화 되는 것인가?) 만일 연관관계가 있는 엔티티들이 cascade설정이 되어있어야 모두 영속성 상태로 변하는 것이라면 order->orderItem에는 cascade.ALL 설정이 있으나 orderitem->item에는 cascade.ALL 설정이 없는데 order -> orderItem -> item 순으로 변경감지가 되는지 궁금합니다. 질문이 좀 길어졌는데요 변경감지와 cascade 두 개념에 혼동이 와서... 위 질문에 답변해주시면 감사하겠습니다!
-
미해결실전! 스프링 데이터 JPA
페이징 질문
안녕하세요 선생님! 강의를 듣다가 궁금한게 생겨 몇 가지 질문드립니다. 1. @Query를 이용해서 jpql 페치조인을 한 경우, 페이징을 하려할때 다음과 같은 에러가 뜹니다. @Query("select m from Member m join fetch m.team") Page<Member> findFetchJoinTeam(Pageable pageable); @Testvoid member(){ Team teamA = teamRepository.save(new Team("teamA")); memberRepository.save(new Member("member1", 40, teamA)); memberRepository.save(new Member("member2", 40, teamA)); memberRepository.save(new Member("member3", 40, teamA)); PageRequest pageRequest = PageRequest.of(0, 3, Sort.by(Sort.Direction.DESC, "username")); Page<Member> fetchJoinTeam = memberRepository.findFetchJoinTeam(pageRequest);} Failed to load ApplicationContext java.lang.IllegalStateException: Failed to load ApplicationContext Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'memberRepository' defined in com.example.forq.MemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Count query validation failed for method public abstract org.springframework.data.domain.Page com.example.forq.MemberRepository.findFetchJoinTeam(org.springframework.data.domain.Pageable)! paging에서 count 부분이 문제인것 같은데 entitygraph로 하면 잘 돼서 제가 뭔가를 놓친건지 궁금합니다 public interface MemberRepository extends JpaRepository<Member, Long> { @Override @EntityGraph(attributePaths = {"team"}) Page<Member> findAll(Pageable pageable);} 2. where 등으로 필터링을 하지 않을떄는 countQuery를 분리해서 최적화를 하면된다고 하셨는데 만약 select m from Member m join m.team t where t.name=:name ”같이 조인 대상에 필터링을 하는 경우에는 어떻게 최적화를 할 수 있는지 궁금합니다. 감사합니다!
-
미해결스프링 핵심 원리 - 기본편
실무에서 프로토타입 빈을 사용하는 경우는 어떤 경우인가요?
영한님 안녕하세요 강의 잘 듣고 있습니다 ^^ 프로토타입 빈은 사용시점마다 새롭게 생성해서 사용하는 용도라고 하셨는데요. 이러면 별도의 클래스를 만들어서 사용할 때랑 용도가 유사힐 거 같아서요. 프로토타입 빈을 실무에서 사용할 때는 어떤 용도로 사용되는지 알 수 있을까요? 스프링에서 DI를 할 때 항상 새로운 빈을 생성해서 주입해야 할 때 사용한다는 건 알겠는데 딱히 사용용도가 생각나지를 않아서요 ㅎㅎ
-
미해결윤재성의 만들면서 배우는 Spring MVC 5
[공유] 스프링 form, spring 태그 500 오류
질문게시판을 보니 6달 전에도 저와 같은 문제를 겪으신 분이 있었네요. 제가 겪은 오류는 taglib prefix="form"과 taglib prefix="spring" 사용 시 500 오류가 발생하는 것이었습니다. 인터넷을 일주일을 검색하며 왠만한 여러가지 방법들은 전부 시도해본 것 같습니다. 그래도 해결이 안되었습니다. -------------오류 내용--------------------------- 절대 URI인 [http://www.springframework.org/tags/form]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다. 절대 URI인 [http://www.springframework.org/tags]을(를), web.xml 또는 이 애플리케이션과 함께 배치된 JAR 파일 내에서 찾을 수 없습니다. --------------------------------------------------------------- 보고 또 보았던 오류메세지를 보던 중 문득 'Maven dependencies엔 필요한 jar 파일들이 다 다운로드가 된 것 같은데..., 다 있는데 왜 못 찾는다는 걸까' 하는 생각이 들어 WEB-INF 폴더 하위 lib 폴더 안에 spring webmvc jar 파일을 직접 넣었습니다. 또는 tomcat이 설치된 경로의 lib에 spring webmvc jar 파일을 넣으면 WEB-INF/lib 에 넣지 않아도 잘 실행이 됩니다. 저같은 경우는 이 방법으로 오류가 해결되었습니다. 아직도 이전에 오류가 왜 발생했는지 모르겠고 이렇게 하니까 왜 되는지 모르지만 같은 오류로 고생하시는 분이 있을까 하여 공유드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
오류 관련해서 질문드립니다.
HelloServlet을 만들고 처음 실행 후 다음과 같은 에러가 나옵니다. 어떻게 해야될지 모르겠어서 질문드립니다. ㅠ
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서블릿과 서블릿 컨테이너의 역할에 대한 질문입니다.
강의자료 8p에서 WAS에서 HTTP 요청 메세지를 기반으로 request 와 response 객체를 생성해서 서블릿에게 전달한다는 그림이 있는데 강의자료 12p의 HttpServletRequest의 역할에 보면 서블릿이 HTTP 요청 메세지를 파싱하여 HttpServletRequest에 담에서 제공한다고 되어있습니다. 이부분에서 정확히 HTTP 요청 메세지 파싱과 request 와 response 객체의 생성에 대한 책임이 WAS에 있는지 서블릿에 있는지 애매모호해서 질문드립니다!
-
해결됨스프링 웹 MVC
스프링 부트 사용시 WebMvcConfigurerSupport 클래스
항상 좋은강의 감사드립니다! spring-boot-web-starter 를 사용하면 추이적으로 JacksonJSON2 의존성이 추가되고 WebMvcConfigurerSupport 에 클래스패스에 HTTP 메세지 컨버터 관련 의존성이 있으면, DispathcerServlet 이 사용할 HTTP 메세지 컨버터로 추가해주는 기능이 구현되어 있음으로, 부트를 사용하면 추가적인 설정없이도 JacksonJSON2 HTTP 메세지 컨버터를 사용할 수 있다고 이해했습니다. 그리고, 앞선 강의에서 스프링 부트가 제공하는 자동설정을 사용하기 위한 조건에는 WebMvcConfigurerSupport 타입의 클래스가 빈으로 등록되어있지 않아야하는 조건이 있는것을 확인했습니다. 그렇다면 JacksonJSON2 HTTP 메세지 컨버터를 등록할 때 WebMvcConfigurerSupport를 사용하긴하지만 빈으로 등록하지 않고 사용하는 것이라고 이해하면 될까요? 감사합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Autowired 질문드립니다.
안녕하세요 ^^ 항상 강의 감사하게 듣고 있습니다! @Autowired public MemberController(MemberServcie service) {} 생성자 방식으로 주입할때 생성자 함수위에 autorwired를 생략해도 동작하던데 실무에서는 생략을 많이 하나요? 그리고 생략을 한다면 설명을 위해서 작성을 하신건가요?
-
해결됨실전! 스프링 데이터 JPA
즐겁게 듣겠습니다~~~
어느덧 여기까지 왔어요 ㅎㅎ 이번 강의도 즐겁게 듣겠습니다. 항상 잘 듣고있어요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문내역 검색 form 관련해서 질문입니다...
안녕하세요 강의 정말 재미있게 스프링핵심 원리, JPA 잘 듣고 있습니다. 주문 목록 검색 form 태그에 action 속성이 없는데 submit을 할경우 어떤식으로 작동하는지 이해가 잘 안가여 질문드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
thymeleaf가 URI is not registered가 뜹니다
thymeleaf가 URI is not registered가 뜹니다 스프링부트 생성 때 의존성추가 했고 마켓플레이스에서는 thymeleaf를 검색해도 나오지 않는데 무엇을 잘못했을까요?ㅠㅠ 스프링은 2.4.3 자바 11입니다
-
미해결스프링 핵심 원리 - 기본편
의존관계 자동 주입 - 조회한 빈이 모두 필요할 때, List, Map
안녕하세요 영한님 제목에 있는 강의를 듣던 도중 궁금 한 것이 생겨 질문 남깁니다. 다름이아니라 아래와 같이 코드를 구성하였을 때 DiscountService는 AnnotationConfigApplicationContext에 넣어줌으로써 Bean으로 등록 된다는 것은 이해가 됩니다. 하지만 DiscountService 클래스에 있는 policyMap 과policyList는 제 생각으로는 아무것도 등록이 안되어있는 것이 맞을 텐데 어떻게 FixDiscountpolicy와 RateDiscountPolicy가 들어가는지 이해가 잘 되지 않습니다. 이 필드들은 각각 Map과 List이고 제네릭(?)만 DiscountPolicy 인데 스프링 컨테이너가 "음 Map 과 List 가 DiscountPolicy로 표현이 되었네? 그럼 내가 DiscountPolicy 타입으로 된 Bean이 있나? 아 ! AutoAppConfig에서 ComponentScan으로 해보니까 FixDiscountpolicy, RateDiscountPolicy가 있네? 그럼 그냥 이거 넣어야 겠다." 이런 메커니즘으로 동작하는 것인가요?
-
미해결스프링 기반 REST API 개발
Entity 에 메서드
안녕하세요. 궁금한 내용이 생겨서 질문 올립니다. Entity 란 DB의 테이블과 매핑되는 객체라고 알고 있는데, update()라는 메서드가 엔티티에 들어가도 괜찮은 건가요? Entity 의 필드 값을 변경시키는 것이므로 Dto 나 다른 곳에서 update 가 되어야 하지 않을까 하는 궁금증입니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
공부를 하면서..
spring 핵심 원리에서 배웠던 DI, interface를 이용해서 추상화하는 방식이 사용되고 있지않고. 그냥 private final ItemService itemService 이런식으로 진행하고 계시는데 jpa 강의라서 이렇게 간단하게 설계 하시는건가요?? 실무에서 프로젝트 사이즈가 커지다보면 자연스레 추상화하게 되나요?? 질문 자체가 이상했으면 죄송합니다..
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@repository에 관하여
안녕하세요 @Repository가 MemberRepository를 구현한 MemoryMemberRepository에 붙어있는데요 만약 MemberRepository를 구현한 DBMemberRepository라는 클래스가 하나 더있고 여기에도 @Repository가 붙어있다면 MemberService에서는 어떤 Repository를 주입시켜주나요? 읽어주셔서감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Autowired순서
안녕하세요 강의를 듣던 중 궁금한점이 생겨 질문드리게되었습니다. MemberService에서 @Autowired 를 통해 MemberRepository를 주입시키는 과정에서 MemberRepository가 MemberService 보다 먼저 빈등록이 되어있다면 문제가 없겠지만 MemberRepository가 MemberService 보다 늦게 빈등록이 될경우 문제가 생길것 같은데 어떻게 작동하나요? 즉, 빈등록되는 순서가 궁금합니다. 읽어주셔서 감사합니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
안녕하세요 강사님
안녕하세요 강사님 질문있습니다. 강의 목록 중에 "실전! 스프링 웹 MVC 출시 예정 - 2월" 인 부분이 있는데 언제 나오는지 알 수 있을까요??
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
양방향 연관관계일 때 한쪽을 끝는거에 대해 질문드립니다.
@JsonIgnore 어노테이션을 사용하면 지금 상태로는 꼭 하이버네이트5모듈을 사용해야 하는거죠? 일단 지금은 그렇게 알고있으면 될까요? 감사합니다.