학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 1. 강의 내용과 관련된 질문인가요? 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네 SpringConfig 클래스에 bean 주입하고 관리하면 추상화의 장점을 살릴 수 있다고 하면 Service단이나 repository 단에 @Service와 @Repository로 컴포넌트 스캔을 하는 것보다 SpringConfig 클래스에서 @Bean으로 클래스들 관리하는게 더 좋은가요?? 실무에서는 @Bean을 통해서 스프링 빈에 직접 주입하고 관리하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 컴포넌트 스캔과 자동 의존관계 설정 영상 학습중 강사님은 메서드에 파란 밑줄이 그어져 클릭하면 구현부로 바로 이동 하는 걸 봤는데 제 인텔리제이 코드에는 밑줄이 그어지지 않아 클릭을 해도 이동이 안됩니다. 저는 command + b 단축키로 이동하는데 혹시 저렇게 뜨게 할려면 어떻게 해야 하는지 알 수 있을까요 저는 ultimate 버전을 사용중인데도 안 뜨네요
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 강의 내용대로 logging.level.org.apache.coyote.http11=debug 설정을 적용하였는데 콘솔에 관련 로그가 출력이 안됩니다. 스프링부트 버전업 이후에 더이상 해당 설정을 지원 안하는걸까요? 스프링부트 버전 : 3.2.3 패키징 : War 자바 버전 : 17 의존성 : 강의에 나온대로 추가했습니다 빌드 및 실행, 테스트 : 인텔리제이 요청 url : http://localhost:8080/hello?username=김 아래는 설정 적용 후 로그 출력 사진입니다
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 있긴한데 좀 다릅니다 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 연관관계 편의메서드와 관련된 질문입니다. public void setMember(Member member) { this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrder(this); } public void setDelivery(Delivery delivery) { this.delivery = delivery; delivery.setOrder(this); } 공부하던 도중 일대다, 다대일, 일대일 연관관계 매서드가 모두 다른 것을 발견했습니다. 제 궁금증은 다대일에서는 왜 meber.getOrders().add(this)로 세팅하고 일대일이나 다대일에서는 orderItem.setOrder(this)로 세팅하는지 궁금한 것 입니다. 커뮤니티에 관련 질문을 찾던 도중 jpa 기본편을 보시라고 하셨는데 위치를 못 찾겠습니다. 알려주시면 감사하겠습니다. 추가로 제가 자바의 List의 메소드에 대한 이해가 부족해서 모르는가 싶기도 한데 그게 맞을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 어떻게 creatememberform.html의 name만 보고 스프링이 controller의 memberform name필드에 넣어줄수 있는것인지 궁금합니다. domain의 member.java 에도 같은 이름의 name 필드가 있는데 이것도 같은 private 변수여서요.. package hello.hellospring.domain; public class Member { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
11:45초에 나오는 코드인데요. 이 html 코드랑 강의 자료 코드랑 다른 것 같아 질문드립니다. 강의자료에는 다음과 같네요. <div class="col"> <form th:action="@{/logout}" method="post"> <button class="w-100 btn btn-dark btn-lg" type="submit"> 로그아웃 </button> </form> </div>
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요?예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의 내용과 그대로 세타조인을 따라 했는데 query나온 것을 보니 cross join이 없어요 그리고 left join도 처음 sql에서는 left join이 나오는데 번역된 sql에서는 left join이 생략되는데 jpa가 최적화를 한 것일까요?
tomcat 설치 후 spring 프로젝트를 터미널에서 "mvn tomcat:run" 명령어로 실행하는데, 프로그램 자체는 실행되지만 웹에 접속되진 않습니다. intellij에서 tomcat server 환경에서 접속할땐 잘 실행이 되었는데, 터미널에서 실행하려니 잘 되지가 않습니다. 다음이 spring 웹서버 링크에 접속했을때의 에러인데, 찾아보니 " javax.servlet-api의 버전이 맞지 않아서 발생한다." 라고 하면서 <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> 를 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> 로 바꾸어주라는 내용을 보고 시도해보았지만 잘 되지 않았습니다. '혹시 tomcat를 켜두고 "mvn tomcat:run" 명령어로 서버를 시작해야하나?' 라는 생각을 하고선 이또한 진행해봤지만 이미 8080서버가 열려있다는 문구가 뜨면서 오히려 실행 도중에 멈추더라구요. intellij 외의 환경에서도 빌드가 가능해야할것같은데 고민입니다. Intellij에서 해당 프로젝트를 실행할때 이용한 Tomcat server의 설정을 함께 첨부합니다.
이 부분이 생성메서드 부분인데요.. 대부분 setter를 사용하여 서비스계층에서 해야 할 로직을 엔터티 내에서 처리하고 있는데 영한 선생님께서 강조하시는 setter를 열어두지 않는다면(필요에 따라서는 열어두라고 하셧는데...) 어떤식으로 처리하는지 도저히 감이 잡히지 않네요..ㅜ 이 부분 설명해주시는 강의 챕터가 따로 있을까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 1.웹 브라우저 테스트 2.Postman 테스트 @ExceptionHandler 강의 내용을 전부 따라하였습니다 위와 같이 웹 브라우저와 Postman 둘 다 요청을 Accept: text/html로 보냈는데 왜 웹 브라우저는 @ExceptionHandler이 반영돼서 API JSON 스타일로 오류 메시지가 보여지는 반면 Postman은 ExceptionResolver을 찾지 못하고 결국 오류가 WAS까지 넘어가 500 INTERNAL ERROR을 발생시키는 것을 확인할 수 있었습니다. [핵심 질문] HTTP 요청 메시지의 Accept: application/json일 경우만 @ExceptionHandler로 지정된 메서드가 API 응답을 정상적으로 처리할 수 있는 것 아닌가요? 왜 웹 브라우저에서는 Accept: text/html인데도 정상 API 응답이 나가고 Postman에서만 Accept:text/html인 경우가 인식 못하고 500 서버 에러가 나는지 궁금합니다 !
안녕하세요. OSIV 강의 후반부 내용에서 규모가 비교적 큰 프로젝트에서는 도메인 계층과 더불어 그 앞단에 애플리케이션 계층을 추가하는걸 고려해보라고 말씀주신 내용이 있었는데요. 이게 제가 찾고 있는 해답이 아닐까 싶어 조금 더 자세히 알고 싶어 질문 드립니다. 질문이 조금은 장황해도 너그러히 이해주시면 감사드리겠습니다. 최근에 개인 프로젝트를 수행해보면서 제가 학습해온 개념들(JPA, DDD, MSA)이 중점적으로 다루는 내용이 다르다보니 프로젝트 구성에서 혼란을 겪어오고 있습니다. 현재 개인 프로젝트 패키지 구조는 제가 느끼기에 가장 와닿았던 controller - application - domain - repository로 나뉘어 개발하고 있습니다. 이때 application 계층의 역할은 하나의 요구사항(가입, 해지 등)을 해결하기 위해 필요한 하위 계층의 애플리케이션 서비스들을 호출하는 facade를 구성합니다. 또, domain에서는 도메인 객체와 더불어 해당 도메인의 애플리케이션 서비스를 통해 비즈니스적 처리를 추상화하여 표현하고, 데이터 핵심 데이터 처리를 repository에 위임하도록 구성했습니다. 다만 이해가 안 갔던건 트랜잭션을 처리 계층에 대한 내용인데요. 제가 본 msa 도서에서는 facade에서 수행되는 애플리케이션 서비스 각각이 서로 다른 도메인 처리이므로 application 계층이 아닌, domain 메소드 단위로 트랜잭션이 구성되어야한다더라구요. 그런데 사실 제가 개발하고 있는 프로젝트는 MSA 구조가 아니고, 여러 에그리거트가 복합된 구조이기에 위 구조와 사상을 가지고 개발하기 어렵다는 생각이 들었습니다. 또한, 서로 다른 도메인의 애플리케이션 서비스간에 호출관계에서도 어려움을 겪었는데요. 예를 들어, 두 user가 하나의 group을 구성하는 서비스를 만들 때도 groupService라는 group에 종속된 애플리케이션 서비스에서 두 사용자 정보를 불러오는 userService 주입하자니, 서로 상이한 서비스간에 불필요한 의존성이 생기고, 같은 레벨의 서비스를 참조하는 것이 어색하다고 느껴졌습니다. 그래서 facade 계층에서 두 서비스를 주입하여 그룹생성 절차를 처리하자니 한 트랜잭션에 처리되어야한다고 생각하는 그룹 생성 처리 절차에서 회원, 그룹 서비스의 트랜잭션이 분리되니 이상하다고 생각했습니다. 드디어 본격적인 질문인데요. 혹시 영한님께서 말씀하신 애플리케이션 계층이 이렇게 도메인에 종속된 두 개 이상의 서비스가 함께 쓰여야 할 때 쓰이는 것이 맞을까요? 맞다면 controller - application - domain - repository 의 계층구조에서 facade가 들어가던 application에 해당 복합(?) 서비스를 구현하고, 해당 서비스에 대한 dto객체정도들만 구현하면 되는걸까요? 3. 굳이 어플리케이션 계층이 필요로 하지않은 하나의 도메인에만 종속된 기능들을 호출구조를 어떻게 가야할까요? 애플리케이션 계층을 도입한 상황에서 controller에서 domain 계층을 바로 호출하는 것은 일관성이 없어보이고, 또 일관성을 맞추기위해 application 계층에서 도메인 계층으로 BYPASS하는 객체를 만드는 것도 비효율적으로 보이긴합니다. 각각의 케이스에 어떻게 가는게 좋을까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요! 강의 잘 보고 있습니다. 세션이 삭제되는 시점에 대해서 의문점이 생겨서 질문드립니다. 영한님께서 HTTP는 비연결성이기 때문에 서버에서 세션데이터를 언제 삭제해야하는지 모른다고 하셨습니다. 사용자의 마지막 요청을 기준으로 30분 이후에 세션이 삭제된다고 했을 때 서버는 30분이 지났는지 어떻게 아는건가요? 제가 생각했을 때는 서버에서 자체적으로 계속 30분이 지났는지 확인을 하거나 사용자 요청이 들어올 때 먼저 30분이 지났는지 확인하고 세션을 삭제해줄 수 있을 것 같습니다. 스프링에서는 어떤 방법으로 확인하는지 궁금합니다!
9:57 보시면 51 라인 Account account = accountRepository.findByEmail(email); 이 순간 account 객체는 Persistent 상태이고, 이 코드 이후로 account 이건 다시 detach 상태가 되는데 63라인 accountService.completeSignUp(account); 이 코드로 인하여 다시 Persistent 로 상태가 만들어진다고 생각하면 될까요 ?? (왜냐하면 accountService.completeSignUp(account);에는 트랜잭션어노테이션이붙어있어서)
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 데이터베이스 h2 초기연결중 계속 생성이 되지않아 글을 찾아보던중 똑같은 오류와 해결법이 나와있는 url을 찾았습니다. [java spring] Database "C:/~/test" not found, either pre-create~~ 에러 해결 (tistory.com) 여기 글처럼 database가 초기 생성되지않자, ^를 누르고 화면에 나온 h2 data base을 누르고 연결을 하니 바로 해결이 됬습니다. 제가 궁금한건 왜 이 문제가 발생하는가와 왜 경로로 들어가면 실행이 정상적으로 되는건지 궁금합니다! ㅠㅠ