[질문 내용] 안녕하세요!! 현재 강의를 들으면서 MyDataSourceValueConfig 부분에서 Application을 실행하면 *************************** APPLICATION FAILED TO START *************************** Description: The bean 'myDataSource', defined in class path resource [hello/config/MyDataSourceValueConfig.class], could not be registered. A bean with that name has already been defined in class path resource [hello/config/MyDataSourceEnvConfig.class] and overriding is disabled. Action: Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true 아래와 같은 오류가 발생합니다... 애플리케이션은 value의 Bean을 등록하는데, 왜 오버라이딩 오류가 발생하는 걸까요?? @ComponetScan이 없으면 @Configuration은 Import해야만 Bean이 등록되는 것으로 알고 있는데, 오버라이딩 오류가 발생하는 이유를 모르겠습니다!! 현재Env 클래스의 @Configuration을 주석처리하면 정상 작동하긴 합니다!!
본 강의 REST컨트롤러 - 수정/삭제, CORS 설정 시청중에 Putmapping, DeleteMapping 쪽에서 파라미터를 @PathVariable로 받는데, postMan에서 테스트 요청을 보냈을때 파라미터가 전달되지 않습니다. @PathVariable(name="tno") 처럼 name을 명시하니까 제대로 파라미터가 받아지던데요 원래는 name은 생략 가능한게 아닌가요??
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 회원 기능 테스트 강의를 수강하며 회원가입 테스트 예제를 작성하고 실앻해도 계속 에러가 나옵니다. 코드도 모두 동일하게 쳣는데 에러가 뜨니 어떻게해야할지 모르겟습니다. ㅠㅠ 10:53:19.411 [Test worker] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [jpabook.jpashop.service.MemberServiceTest]: MemberServiceTest does not declare any static, non-private, non-final, nested classes annotated with @Configuration. 10:53:19.579 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration jpabook.jpashop.JpashopApplication for test class jpabook.jpashop.service.MemberServiceTest 10:53:19.906 [Test worker] INFO org.springframework.boot.devtools.restart.RestartApplicationListener -- Restart disabled due to context in which it is running 이렇게 에러문구 3개가 뜨는데 뭐가 틀린지 모르겟습니다. 도움주시면 감사하겟습니다.
실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
안녕하세요. 강의 잘 듣고 있습니다. 강의 내용과는 좀 다른 질문이긴 한데요... 현업에서 코딩컨벤션을 어떻게 처리하시는지 궁금해요. 강사님께서 포맷터나 린터같은것을 어떻게 설정해서 활용하시는지 예제를 보고싶어요. 강의에서는 예를들면 다음줄 넘기실때 그냥 엔터 치고 탭치고 하는거 같거든요. nodejs로 개발할때는 prettier에 설정해두며 저장할 때마다 알아서 다 해주는데 intellij는 협업시 사람들마다 코딩스타일을 다르게 해서 일관성이 없어질것 같네요. (포맷터 설정해도 생각과는 좀 다른거 같더라고요.) 확인 부탁드립니다. 감사합니다.
public class Order 클래스중 //==생성 메서드==// public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems) { Order order = new Order(); order.setMember(member); order.setDelivery(delivery); for (OrderItem orderItem : orderItems) { order.addOrderItem(orderItem); } order.setStatus(OrderStatus.ORDER); order.setOrderDate(LocalDateTime.now()); return order; } 위에는 jpa1강 파트이고 아래는 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 상품 등록 처리 파트에서 @ModelAttribute 중 일부입니다. jpa에서는 혹시 @ModelAttribute 이부분을 못쓰나요? 아니면 쓸 쑤는 있는데 주문처럼 생성메서드일때는 안쓰는건가요? // @PostMapping("/add") public String addItemV2(@ModelAttribute("item") Item item, Model model) { itemRepository.save(item); // model.addAttribute("item", item); //자동 추가, 생략 가능 return "basic/item"; }
아래와 같은 에러가 조회됩니다. Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "T(jpabook.jpashop.domain.OrderStatus).values()" (template: "order/orderList" - line 19, col 33)] with root cause 에러상황: 주문 입력시 화이트 페이지 조회 전체코드: 아래에서 하라는대로 다 해봤는데 안됩니다. 참고로 order자바,orderservice자바는 강의와 똑같습니다. https://www.inflearn.com/questions/362231/%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94-%EC%9D%B4%EB%9F%AC%ED%95%9C-%EC%97%90%EB%9F%AC%EA%B0%80-%EB%B0%9C%EC%83%9D%ED%95%98%EC%97%AC-%EC%A7%88%EB%AC%B8-%EB%93%9C%EB%A6%AC%EA%B2%8C-%EB%90%98%EC%97%88%EC%8A%B5%EB%8B%88%EB%8B%A4
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의에서 merge 를 쓰지 않는게 좋다고 이야기 해 주셨는데, spring data jpa의 save() 를 실무에서 쓰지 말라는 뜻일까요?? 아니면 쓰되 isNew 로직을 타도록 잘 세팅해두라는 뜻일까요?? 실무에서는 객체 저장 어떻게 하는지 궁금합니다~!
//JdbcTemplateMemberRepository public class JdbcTemplateMemberRepository implements MemberRepository { private final JdbcTemplate jdbcTemplate; public JdbcTemplateMemberRepository(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); //SpringConfig @Configuration public class SpringConfig { private final DataSource dataSource; public SpringConfig(DataSource dataSource) { this.dataSource = dataSource; } JdbcTemplate을 사용하도록 스프링 설정 변경하는 부분인데 이전에 객체를 생성해서 직접 주입하면 안좋다고 하셨었는데 jdbc템플릿을 적용하시는 부분에서는 직접 dataSource를 JdbcTemplate를 생성해서 넣으셨습니다. public SpringConfig(DataSource dataSource) { this.dataSource = dataSource; }대신에 JdbcTemplate를 빈에 등록해서 이렇게 사용하는게 이전에 배운내용에 따르면 의존성, 결합성 면에서 나은 코드라 생각했습니다. (@autowired를 사용하게끔 수정해본 코드) //JdbcTemplateMemberRepository public class JdbcTemplateMemberRepository implements MemberRepository { private final JdbcTemplate jdbcTemplate; @Autowired public JdbcTemplateMemberRepository(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); //SpringConfig @Configuration public class SpringConfig { private final DataSource dataSource; @Bean public JdbcTemplate jdbcTemplate(DataSource dataSource) { return new JdbcTemplate(dataSource); } } 이렇게 수정해서 사용하라고 설명해주시다가 이 JdbcTemplate강의에서는 직접 주입하시면서 설명해주셨는데, JdbcTemplate빈을 정의해서 주입하는 방식이 아닌 Datasource를 직접 사용한 이유가 있을까요? 뭔가 데이터접근할때는 다른부분이 있어서 이런 방법이 사용된건지 궁금합니다.
안녕하세요 쥬쥬님 서비스에서 메서드를 만들 때 질문 있습니다. A라는 서비스 메소드를 만들 때 로직이 복잡하면 코드가 엄청 길어지면 그 때는 안에 있는 메소드를 B, C 서비스 메소드로 분리해야 할 것 같은데 서비스 메소드를 만들 때 기준이 있나요? 지금 createReview 서비스 메소드를 만들때 restaurantRepository.findById(restaurantId).orElseThrow()를 사용하여 조회 및 검증 작업을 진행하는데 추후에 해당 코드를 그대로 유지하는지, 서비스 메소드로 분리하는지, 스태틱 메서드로 만드는지 기준이 궁금합니다.
cmd 실행 시 위와 같은 오류가 계속 발생하고 있습니다. 위와 같이 옵션을 인텔리제이 idea로 바꿨음에도 오류가 발생합니다. jdk 21이며, 환경변수 모두 세팅되어 있습니다. (java -version, javac -version) 테스트 리포트는 아래와 같습니다.
안녕하세요 선생님, Spring framework로 jsp를 사용하려고 강의(강의명 : Spring framework의 천하통일)를 따라 진행하는데 도무지 해결할 수 없어 질문으로 남깁니다! 모든 코드는 복사붙여넣기하여 선생님과 동일하나 결과는 아래와 같습니다...어떻게 해결할 수 있을까요? (Java 1.8, JDK 8) 상황설명 jsp 설정을 위해 implementation을 추가하고 새로 로드하였는데 아래와 같은 로그가 출력되었습니다. 이 상태에서 애플리케이션을 실행하면 나오는 로그
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요 5. 상품 도메인 개발 수강 중 궁금한 점이 있어 글 올립니다! 상품 도메인 비즈니스 요구사항에는 1. 상품 등록 2. 상품 목록 조회 3. 상품 수정 이 있는데 핵심 비즈니스 로직을 정의하는 클래스인 ItemService(상품 서비스 클래스)에서는 오직 1. 상품 등록 2. 상품 목록 조회 로직만 설계하신 것을 알 수 있었습니다. 상품 리포지토리에서 상품 등록 로직(save(Item item))에 if - else 문을 통해 merge()가 3. 상품 수정 기능을 해서 상품 서비스 클래스에서 설계를 안 하신 걸로 봐도 될까요?
프로젝트 압축파일입니다. https://drive.google.com/file/d/1IRv3FX6UTERveIoq1KaZY7N_DyVLGv0b/view?usp=sharing <회원 리포지토리 테스트 케이스 작성> 강의 9:40 경에 findByName() 메서드 실행시 java.util.NoSuchElementException: No value present at java.base/java.util.Optional.get(Optional.java:143) at hello.hellospring.repository.MemoryMemberRepositoryTest.findByName(MemoryMemberRepositoryTest.java:45) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) 라는 오류가 발생합니다. 이 오류로 인해 findAll() 메서드까지 실행이 되지 않는 것 같습니다. get()과 관련된 오류 같아 구글링해보아도 해결이 어려워 문의남깁니다. 답변 부탁드립니다. 감사합니다.
안녕하세요! 하나의 엔티티에 @ElementCollection 붙은 필드가 두 개 있는 경우를 시험해 보고 있습니다. @EntityGraph(attributePaths = {"a", "b"}) 이런 식으로 해서 테스트를 돌리면 org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags 과 같은 오류가 나는데 ElementCollection 두 개가 있는 경우는 하나의 쿼리로 모두 가져오는 방법은 없나요?
안녕하세요, 궁금한 내용이 생겨 기존에 질문들을 살펴보고 제가 이해한 것이 맞는지 확인차 질문드립니다. redis의 싱글스레드 특성으로 100개 발급에 대한 race condition 해결 --> 그러나 insert 시 DB 처리량에 부하가 발생할 수 있음 kafka 미들웨어를 통해 100개의 쿠폰 저장 이벤트를 보관해두었다가 컨슈머에서 원할때 꺼내어 처리할 수 있는 여지를 주어 처리량 부하를 분산시킬 수 있음 ex) 쿠폰 발급은 당장 안해도 되니, kafka에 이벤트만 잘 발행되어 있다면 DB 작업량이 적은 새벽에 꺼내서 저장해도 됨 이렇게 이해했는데, 맞을까요?
위 그림처럼 동일한 스케쥴러 1개가 콘솔 출력에서는 mySch-2, 3, 4 형태로 계속 숫자가 증가하는데, 이것은 동일한 스케쥴러가 예를들어 2번째 구동, 3번째 구동 한다는 의미일까요? 아니면 5초마다 스케쥴러가 구동되지만 각 구동은 개별적인 가상 스레드에 의해 구동되고 삭제되어 숫자가 증가하는 의미일까요?
강의 교안의 동시 세션제어필터 로직의 흐름도 그림에서 SessionManagementFilter가 세션 만료 설정 플래그를 설정하는 그림에서 혼동이 있어서 질문드립니다. 현재 스프링시큐리티 6 이후 기본동작에서는 SessionManagementFilter가 기본 동작하지 않는 것으로 알고 있습니다. 실제로 세션 관련 설정을 이것저것 바꿔봐도 SessionManagementFilter가 필터체인에 추가되지 않더군요. (실제로 강의에서도 이 부분을 언급하신 것을 확인했고, 공식문서 에서도 확인했습니다.) 대신 UsernamePasswordAuthenticationFilter(정확히는 이것의 상위 클래스인 AbstractAuthenticationProcessingFilter)와 같은 곳에서 명시적으로 sessionAuthenticationStrategy를 호출하여 세션 관련 처리를 위임시키는 식으로 처리하는데요. 현시점 기본 동작 관점에서 보면 강의 교안에 나와있는 흐름도를 보면 SessionManagementFilter로 그림이 나와잇는 부분은 UsernamePasswordAuthenticationFilter와 같은 최초 로그인을 담당하는 필터에서 인증후 strategy를 통해 만료플래그가 설정되는 것으로 나타나게 하는 것이 좀 더 정확하지 않을까 싶어서 질문을 드립니다.