묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO와 엔티티의 변환 작업은 어느 계층에서 하는게 좋은지에 대해 질문드립니다.
DTO 객체에서 엔티티로 또는 엔티티에서 DTO로 변환하는 작업은 컨트롤러에서 해야할까요? 아니면 서비스 단에서 해야할까요? 어느 계층에서 하는게 좋나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
[공유] 인텔리제이 유료버전 인데 타임리프 이동 또는 빨간줄 뜨시는분
인텔리제이 얼티메이트 버전인데 컨트롤러에서 타임리프 링크 안되는 현상 또는 타임리프 리소스에서 빨간불 뜨시는분들 ! 별짓 다해보았지만 Spring boot 버전문제로 보입니다. (강의소스 그대로 버전만 2.7.0 해보니 링크안되고 빨간불 동일하네요) 2022.06.11 기준 2.7.0 버전에서는 안되고, 2.6.8 버전에서는 잘동작합니다.
-
미해결스프링 핵심 원리 - 기본편
필드주입은 확실히 간결한거 맞나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 단지 너무 간결해져서 테스트할때 제가 접근할방법이 없어진다 이런 이유가 맞는건가요?
-
미해결스프링 기반 REST API 개발
혹여 기선님 말 안 듣고 gradle로 프로젝트 생성했다가 피똥싸고 계신 분들을 위하여
1. gradle 버전이 7 이상이신 경우 6.xx대로 다운그레이드 하시고 2. https://gaemi606.tistory.com/entry/Spring-Boot-REST-Docs-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0 의 'Gradle 버전에 맞게 수정하기!' 의 코드대로 따라해주세요. 화이팅!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
IntelliJ IDEA> Preferences
왼쪽 상단에 IntelliJ IDEA> Preferences 상기 항목이 안나와요? 어디서 찿을수 있을까요? 버전은 아래와 같습니다.IntelliJ IDEA 2022.1.2 (Community Edition)Build #IC-221.5787.30, built on June 1, 2022Runtime version: 11.0.15+10-b2043.56 amd64VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.Windows 10 10.0GC: G1 Young Generation, G1 Old GenerationMemory: 750MCores: 8Kotlin: 221-1.6.21-release-337-IJ5787.30
-
미해결스프링 핵심 원리 - 기본편
final 을 꼭 사용해야하는 이유가 있나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]private final MemberRepository memberRepository 이런식으로 final 을 항상 붙여주시는데 특별한 이유가 있나요? 데이터가 변경되는걸 막기 위한건가요?
-
해결됨스프링 핵심 원리 - 기본편
어플리케이션의 구조와 스프링 컨테이너
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 전체적인 그림이 머릿속에 잘 그려지지를 않아서 질문 드립니다... 1. 예를 들어, 클라이언트가 웹에서 요청을 하면 해당 요청이 서버 컴퓨터에 있는 프로그램의 main 메서드로 전달이 되고 main 메서드에서 MemberService 빈을 불러와서 처리가 되는 것인가요? 실제로 웹 어플리케이션(?)을 운영할 때에 CoreApplication 클래스의 main 메소드에서 AnnotationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig); 같은 코드를 적고 이 때 생성된 스프링 컨테이너 ac를 이용해서 요청이 들어올 때마다 MemberService 빈을 꺼내오는 건가요? 아니면 이런 코드가 필요없이 스프링에서 알아서 컨테이너를 만들고 컴포넌트 스캔을 해주는 건가요? 만약 그렇다면 이렇게 스프링 자체적으로 만든 컨테이너에는 어떻게 접근을 할 수 있나요? 2. 테스트 함수 내부에서 빈을 꺼내서 사용하는 일련의 코드들이 테스트가 아닌 실제 코드에서는 메인 메서드에서 구현되는 것인지 각 서비스 객체에 구현되는 것인지를 잘 모르겠습니다. 예를 들어, test.hello.core.autowired.AllBeansTest 에서 고객이 할인 정책을 선택하게끔 하는 예시는 실제로는 DiscountService 객체 내부에 메소드를 만들어서 처리하는 상황인 건가요? 3. 스프링 컨테이너에 직접 접근하고 getBean을 통해 빈을 꺼내오는 건 테스트 상황에서만 필요한 작업인가요? 프로토타입 빈을 받아오거나 하는 경우를 제외하면 서비스 객체나 리포지토리 객체 등에서 스프링 컨테이너에 접근할 일은 없는 건가요? 4. 실제 개발을 하면서 https://www.inflearn.com/questions/331154 이 질문에서와 같이 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class); AnnotationConfigApplicationContext ac2 = new AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class); 와 같은 코드를 짜서 컨테이너가 2개 생성될 일은 없는 건가요? 교재에 있는 그림들을 보면 여러 클라이언트들이 하나의 컨테이너로부터 빈을 받는데 이 컨테이너는 스프링이 자체적으로 관리하는 컨테이너가 맞나요? 추가 질문. 지금처럼 전체적인 그림이 잘 안잡힌다면 이 상태로 mvc 강의를 듣는게 나을까요? 아니면 확실하게 모든 걸 이해하고 가는게 좋을까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강사님께서 사용하시는 ERD 그리기 툴이 있을까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 일부 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 스프링 부트와 JPA 활용 강의를 듣고 토이프로젝트를 진행하려고 하는데, entity relation diagram을 간단하게 그릴 툴이 뭐가 있을까 싶어서 질문 남깁니다. Draw.io나 erdcloud 등의 사이트를 봤지만 초심자가 무턱대고 접하기엔 생각보다 벽이 있어서, 강사님께서 직접 사용하시는 툴은 어떤 것인지 궁금해 질문합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
view 환결설정강의 addAttribute오류
계속 오류가 납니다 뎃글에 사진 첨부하겠습니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
No value present 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 회원가입() 실행시 db에 값은 들어가는데 콘솔에 java.util.NoSuchElementException: No value present 오류 뜨는데 왜 이런 건가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
@Mapper로 Repository를 대체?
제가 예전 회사에서 MyBatis를 쓸 때, 어디선가 그런 예제를 봐서 썼던 기억이 있는데, Mapper를 바로 서비스 계층에서 주입받아서 Repository처럼 썼었거든요. 이렇게 했을 경우의 문제점은 뭐였을까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
SpringDataJpaItemRepository 질문 드립니다
의존성 주입 최상단에 있는 SpringDataJpaConfig 파일에서 주입받는 SpringDataJpaItemRepository는 어디서 받는 것인지 모르겠습니다. 스캔 베이스 패키지를 web으로 한정지었기 때문에 SpringDataJpaItemRepository 인터페이스에 @Repository를 달아봤자 어차피 스캔도 안 되고, Config 파일에서도 단순히 주입받아서 사용해서... 어디서 주입되는지 잘 몰라서 아래처럼 생성자에서 로그를 찍어봤습니다. private final SpringDataJpaItemRepository repository;public SpringDataJpaConfig(SpringDataJpaItemRepository repository) { this.repository = repository; System.out.println(repository.getClass());} class jdk.proxy2.$Proxy95 이게 스프링 데이터jpa의 부가기능으로 스프링이 jdk 인터페이스 프록시 객체로 만들어주는 것으로 보이는데요. 질문 1. SpringDataJpaItemRepository가 JpaRepository<T, ID>를 상속받는데, 개인적인 생각으로는 의존성 주입 과정에서 JpaRepository<T, ID> 인터페이스를 상속받는 타입을 감지하는 순간(스프링 기초 수업을 안 들어서 정확히 어느 과정인지는 잘 모르겠습니다ㅠ) 해당 타입으로 빈을 만들어버리는 것 같은데 대략적인 과정이 이게 맞는지 궁금합니다. 질문 2. 위 과정이 맞다면, JpaItemRepositoryV2 같은 중간 계층 클래스를 두지 않고 직접적으로 SpringDataJpaItemRepository를 레포지토리로 사용하려고 할 때는, @Repository 를 붙이지 않아도 서비스 계층에서 직접 주입받아서 사용하는 것도 가능한가요? 직접 돌려보려고 했는데 이거는 하면 코드 구조를 서비스, 레포지토리 전부 갈아치워야 할 것 같아서... 일단 질문 올린 김에 같이 질문드립니다
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
스프링 빈의 이벤트 라이프 사이클 관련 질문
안녕하세요 영한님 아래와 같은 사항이 궁금하여 여쭈어 봅니다. #. 질문내용 * 스프링 입문 과정때 빈 라이프 사이클 관련한 부분이 아래와 같다고 배웠습니다. 1. 스프링 컨테이너 생성 2. 스프링 빈 생성 3. 의존관계주입 4. 초기화 콜백사용 @PostConstruct 5. 빈 사용 6. 소멸전 콜백 @PreDestro 고급편 빈 후처리기를 통한 AOP 프록시 SetUp의 경우라면 빈생성 후 -> 빈 후처리기 동작 -> 자동 AOP 빈 후처리기를 통한 프록시 객체 스프링 컨테이너에 주입 위와 같이 동작한다면 1 ~ 2번 사이에서 동작하게 될 것 같다고 생각했습니다. 헌데, @Transactionsal 테스트를 해보니 @PostConstruct 초기화 콜백이 먼저 호출되고 이후에 AOP 주입이 이뤄지는 듯 보입니다. 이에 질문하고 싶은 사항은 아래와 같습니다. #. 질문사항 1. 빈 후처리기는 1 ~ 6 과정 중에 어디 쯤에서 동작을 하게 되는 걸까요? 2. 추가로 업무 개발을 진행하다보니 (설정파일을 객체에 주입해야 하는 상황) @Value를 사용하게 되는 경우가 있었는데 @PostConstruct 내에서는 주입이 안된 상태로 확인하였습니다. application.yml 내에 property 주입이 가능한 어노테이션으로 알고있는 @Value의 경우에는언제 주입이 일어나게 되는걸까요? 항상 좋은 강의 감사드립니다.
-
해결됨스프링 핵심 원리 - 기본편
Lombok과 Qualifier
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] <의존관계 자동 주입> 섹션의 <애노테이션 직접 만들기> 강의를 듣고 궁금한 부분이 생겨서 질문 드립니다. public OrderServiceImpl(MemberRepository memberRepository /*, @Qualifier("mainDiscountPolicy")*/ , @MainDiscountPolicy DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy;} 생성자 주입을 할 때 RateDiscountPolicy 클래스와 discountPolicy 파라미터 앞에 @MainDiscountPolicy를 붙여주는 방식으로 discountPolicy 파라미터에 주입될 객체를 지정해줄 수 있다는 것은 이해를 했습니다. 그런데 만약 Lombok을 사용한다면 생성자를 명시할 수가 없기 때문에 discountPolicy 파라미터 앞에 @MainDiscountPolicy를 붙여줄 수가 없게됩니다. 그러면 Lombok과 Qualifier를 같이 사용할 방법은 따로 없는 건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
intellij 의 thymeleaf 인식오류 인가요?
일단 상품등록하는데 문제는 없습니다. 위와 연결된 Controller에 매핑과 BookForm 설정 똑같이 했는데 강의에 영한님이 한것처럼 html에서 th:object="${form}" 나 th:field="*{name}" 을 command+click 으로 연결된곳으로 갈수도 없고 Cannot resolve 'form' 오류 뜨면서 빨간줄 그어지는데 해결할수 있는 방법있을까요? 저도 그 편한 기능 쓰고 싶습니다 진짜루 ..ㅠㅠ 인텔리제이는 IntelliJ IDEA 2022.1.2 (Ultimate Edition) 쓰고 있습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
"/error-page/**" 자세한 설명...
excludePathPatterns("/error-page/**") 자세한 뜻을 잘 모르겠습니다.. 결국 /error-page/** 해주면 '제외하기 쉽게 되어 있기 때문에, 이러한 설정을 사용해서 오류 페이지 경로를 excludePathPatterns 를 사용해서 빼주면 된다.' 라고 알고 있습니다. 그리고 /error-page/** 작성하여 실행 시키면 REQUEST가 두번 출력되지 않는 다는 것과 postHandle() 메서드가 출력되지 않는 다는 것만 알고 있습니다. 반대로 /error-page/** 빼고 실행 한다면 REQUEST가 두번 출력되고, postHandle() 가 호출 된다는 것을 알고는 있는데,, 왜 그렇게 동작하는지 자세히 모르겠습니다. 뭔가,, 답만 알고 풀이는 모르고 있단 생각이 듭니다.. 둘다 똑같은거 같은데, 차이가 뭔지... 하는 마음입니다. 제가 이해하기론 /error-page/** 는 error-page 밑에 있는 모든 파일을 해당한다고 이해하고 있는데, 그렇다면 templates 밑에 있는 /error-page/404.html 와 /error-page/500.html 이 제외 되어 출력 되면 안되는 것이 아닌가 싶습니다. 그리고 둘다 컨트롤러를 통해 잘 동작하는거 같습니다.. 그리고, WAS까지 갔다 두번째 필터에서 제외 된다는 것이 /error-page/** 이렇게 설정하여, 어떻게 필터를 제외한다는 것인지도 모르겠습니다. /error-page/** 설정 함으로써 제외 된다.. 무슨 말인지 잘 모르겠습니다 ...
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
인텔리제이 타임리프 글자 색 설정 방법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] 인텔리제이 얼티메이트 버전 사용중입니다. 선생님 강의대로 진행중인데 타임리프 문법 작성시 글자 색이 바뀌지 않습니다. 전부 초록색으로 나오다보니 괄호 구분이 너무 힘드네요 혹시 설정할 수 있는 방법이 있을까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
assertThrows 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 59줄에 assertThrows에 오류가 나는거 일까요?ㅜㅜ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
WebConfig에서 Autowired로 myHandlerExceptinoResolver를 주입받을 경우
안녕하세요! resolver 등록관련해서 질문이 있습니다. WebConfig에서 ExceptionResolver를 등록할 때 new로 MyHandlerExceptionResolver를 직접 생성하지 않고, MyHandlerExceptionResolver에 @Component 어노테이션을 사용하고 WebConfig에서 @Autowired로 주입받아서 resolver 등록한 후 /api/member/ex 로 요청을 해봤는데요, 이 경우 resolver가 2회 호출되는 것으로 확인했습니다. 아무리 생각해봐도 이유를 잘 모르겠는데 혹시 어떤 이유로 2회 호출되는 것일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
단축키문의
안녕하세요 강사님! 동영상 43초에 memberService.findMembers()만 쳤을때, members라는 List<Member>타입의 객체 자동생성 단축키가 mac과 윈도우기준 각각 어떻게 되는지 알 수 있을가요? 이전 강의에 나온거 같은데 잘 안찾아져서 문의드려봅니다. 구글링해도 키워드가 안맞아서 그런지 잘안나오네요 ㅠㅠ