묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
mvc1편에서 스프링부트 설치한적이 있는데 또 해야하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.spring mvc1편에서 스프링부트 설치한적이 있는데 또 해야하나요?설치할때 artifact name부분이 다르긴 합니다mvc1편에서는 artifact, name이 servlet이였고 입문에서는 hello-spring이고packagename도 다르네요 새로 설치해야할까요?
-
미해결스프링 핵심 원리 - 고급편
걍의 중 LogTrace 빈등록 관련 질문이 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의에서 빈으로 등록된 LogTrace를 파라미터로 받았는데요, 이처럼 빈으로 등록된 객체를 파라미터로 받으려면 해당 메서드에 @Bean 애노테이션이 붙어있으면 이게 가능한건가요? 혹시 다른 경우에도 빈을 파라미터로 받을 수 있는 경우가 있나요?강의에서 컴포넌트 스캔 범위를 "hello.proxy.app.v3"으로 한정지었기 때문에 LogTrace를 빈으로 등록한 ProxyApplication 클래스는 @SpringBootApplication에 @Configuration이 있지만 해당 클래스 자체가 컴포넌트 스캔 범위 밖입니다. 그럼에도 불구하고 LogTrace가 빈으로 잘 등록될 수 있었던 건 컴포넌트 스캔과는 무관하게 @SpringBootApplication이 붙어있으면 그냥 무조건 빈으로 등록되기 때문에 ProxyApplication 클래스가 빈으로 등록되고 이 안에 있는 빈 등록 메서드를 통해 LogTrace도 따라서 빈으로 등록된는 건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepositoryTest를 junit5용으로 고쳤는데 오류가발생합니다 + junit4를 사용해야만 할까요?
https://drive.google.com/file/d/1PBHzDQJ0Odvh2KWMa_BTOu3PZqHrMJkj/view?usp=drive_linkMemberRepositoryTest를 실행하면 이렇게 됩니다. junit5로 하고 있는데 이런식으로 오류가 발생합니다. JPA와 DB 설정, 동작확인 13분경까지 들었습니다. JpashopApplication를 실행해도 오류가 발생하기 시작했습니다.
-
미해결스프링 핵심 원리 - 기본편
섹션 8 - 옵션처리 (TestBean)
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, "섹션8 - 옵션처리 " 강의 관련하여 질문합니다.먼저 AutowiredTest 코드 공유합니다package hello.core.autowired; import hello.core.member.Member; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.lang.Nullable; import java.util.Optional; public class AutowiredTest { @Test void AutowiredOption() { ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class); } static class TestBean { @Autowired(required = false) public void setNoBean(Member noBean1) { System.out.println("noBean1 = " + noBean1); } @Autowired public void setNoBean2(@Nullable Member noBean2) { System.out.println("noBean2 = " + noBean2); } @Autowired public void setNoBean3(Optional<Member> noBean3) { System.out.println("noBean3 + " + noBean3); } } }ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class); 를 통해 TestBean을 등록하고위와같이 Autowired관련 테스트를 위한 코드를 강의 내용과 같이 작성하였습니다.하지만 @Autowired 어노테이션에 붉은줄이 생기며 "Autowired members must be defined in valid Spring bean"라는 에러가 발생합니다. 동일한 파일에서 아래와 같은 TestCofig 클래스 코드를 추가해주면 에러가 사라집니다. 제가 작성한 코드에 어떠한 문제가 있는지 아직 파악하지 못하여 의문을 풀지 못하였습니다.@Configuration static class TestConfig { @Bean public TestBean testBean() { return new TestBean(); } }
-
해결됨이거 하나로 종결-스프링 기반 풀스택 웹 개발 무료 강의
수강하는데 얼마나 걸릴까요
안녕하세요. 수강해보려고 하는데, 최대한 빠르게 끝내보고 싶습니다.c++ 문법 정도만 알고 있는 수준인데, 공부 기간은 얼마 정도로 예상하시나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
MemberRepositoryTest junit5로 고친후 오류발생 + junit4를 사용해야만 할까요?
junt4로 gradle에서 설정하려고 하면 오류가 발생해서 juit5로 하는 중입니다. MemberRepositoryTest를junit5버전으로 고쳐서 아래의 코드로 실행했는데 오류가 나고 있습니다import jpabook.jpashop.Member; import jpabook.jpashop.MemberRepository; //import jpabook.jpashop.domain.Member; //import jpabook.jpashop.repository.MemberRepository; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.transaction.annotation.Transactional; @ExtendWith(SpringExtension.class) // JUnit 5 방식 @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(false) public void testMember() { Member member = new Member(); member.setUsername("memberA"); Long savedId = memberRepository.save(member); Member findMember = memberRepository.find(savedId); Assertions.assertThat(findMember.getId()).isEqualTo(member.getId()); Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); Assertions.assertThat(findMember).isEqualTo(member); // JPA 엔티티 동일성 보장 } }밑에는 오류입니다.Unable to find a @SpringBootConfiguration by searching packages upwards from the test. You can use @ContextConfiguration, @SpringBootTest(classes=...) or other Spring Test supported mechanisms to explicitly declare the configuration classes to load. Classes annotated with @TestConfiguration are not considered.java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration by searching packages upwards from the test. You can use @ContextConfiguration, @SpringBootTest(classes=...) or other Spring Test supported mechanisms to explicitly declare the configuration classes to load. Classes annotated with @TestConfiguration are not considered.at org.springframework.util.Assert.state(Assert.java:79)1. @SpringBootTest(classes=...)로 명시적으로 설정 클래스 지정2. @SpringBootApplication이 있는 클래스의 위치 확인3. @ContextConfiguration을 사용해서 명시적으로 설정 클래스 지정이세가지를 시도해도 안되고 있습니다. 아니면 juni4룰 사용해야만 할까요?build.gradle에 JUnit4 추가 testImplementation("org.junit.vintage:junit-vintage-engine") { exclude group: "org.hamcrest", module: "hamcrest-core" }를 하면 Build file 'C:\Users\Peter\Desktop\study\jpashop\build.gradle' line: 45A problem occurred evaluating root project 'jpashop'.> Could not find method testImplementation() for arguments [org.junit.vintage:junit-vintage-engine, build_55eer8btj8rd1l6xp0yqapa0y$_run_closure6@6e20627f] on root project 'jpashop' of type org.gradle.api.Project.라고 나옵니다.
-
미해결나도! 스프링으로 인공지능을 할 수 있다(인프1탄)
실제로 LLM으로 전달된 질문을 볼 수 있는 방법을 알 수 있을까요 ?
안녕하세요 강의 잘 듣고 있습니다.제목 그대로 실제로 LLM으로 전달된 질문을 볼 수 있는 방법을 알 수 있을까요 ? ListOutputConverter 클래스 내부를 보면 getFormat() 이라는 메서드가 있는데 왠지 LLM 에 전달될 때 제가 입력한 메시지에 추가적인 메시지가 포함되어서 LLM 으로 전달되는것 같은 느낌입니다. 실제 LLM 으로 전달되는 메시지 정보를 볼 수 있는 방법을 알고 싶습니다.
-
미해결실전! 스프링 데이터 JPA
왜 select에서 left join을 수행하더라도 count에서는 left join을 수행하지 않나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요, 강의 잘 듣고 있습니다. 질문도 드리고, 맞다면 메뉴얼에 추가할 만한 내용이 있는 것 같아서 글 남겼습니다! Page를 조회해올 때, left join을 사용한 경우, countQuery에 대해 명시하지 않더라도 count 쿼리문에서는 join 문이 확인되지 않았는데, 이것 또한 하이버네이트6에서 최적화하여 join 문을 생략한 것일까요? 하이버네이트6에서 left join을 직접 추가하더라도 내부적으로 최적화하는 질문을 보고 메뉴얼("스프링 부트 3 - 하이버네이트 6 left join 최적화 설명 추가")도 확인했습니다.그럼에도 join을 강제로 수행시켜도 count 쿼리 또한 join 돼서 수행되는지 확인하고 싶어 다음과 같이 코드를 작성해봤습니다.@Query(value = "select m,t from Member m left join m.team t") Page<Member> findPageByAge(int age, Pageable pageable);@Test public void paging() { //given memberRepository.save(new Member("member1", 10)); memberRepository.save(new Member("member2", 10)); memberRepository.save(new Member("member3", 10)); memberRepository.save(new Member("member4", 10)); memberRepository.save(new Member("member5", 10)); int age = 10; PageRequest pageRequest = PageRequest.of(0, 3, Sort.by(Direction.DESC, "username")); Page<Member> page = memberRepository.findPageByAge(age, pageRequest); //then List<Member> members = page.getContent(); long totalElements = page.getTotalElements(); assertThat(members.size()).isEqualTo(3); assertThat(totalElements).isEqualTo(5); assertThat(page.getNumber()).isEqualTo(0); assertThat(page.getTotalPages()).isEqualTo(2); assertThat(page.isFirst()).isTrue(); assertThat(page.hasNext()).isTrue(); }테스트 코드는 강의와 똑같이 작성하고, 쿼리문에서 select m, t로 한 뒤 countQuery는 별도로 추가하지 않았습니다.이때, 수행되는 쿼리가 다음과 같은데,select m1_0.member_id, m1_0.age, m1_0.team_id, m1_0.username, t1_0.team_id, t1_0.name from member m1_0 left join team t1_0 on t1_0.team_id=m1_0.team_id order by m1_0.username desc fetch first ? rows onlyselect count(m1_0.member_id) from member m1_0countQuery를 명시하지 않았음에도, 강의와 달리 count 쿼리문에서는 join이 수행되지 않았습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
안녕하세요 ExceptionHandler 관련하여 질문 있습니다.
만약에 ExceptionHandler를 사용하지 않고 글로벌 예외를 처리해야 한다면 필터에서 처리하는게 좋을지 인터셉터에서 처리하는게 좋을지 궁금합니다.
-
해결됨실전! 스프링 데이터 JPA
하이버네이트 프록시객체 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 영한 님 강의를 들으며 공부하던 중 findAll 메서드를 통해 가져온 List<Member> members의 각 Member들이 team 필드에 프록시 객체를 들고 있다고 말씀하셨는데, 해당 프록시 객체의 값을 디버깅해 본 결과 그 안에 이미 값이 존재 했습니다. console을 확인해보니 아직 db에 쿼리를 날리기 전인데(쿼리를 날리기 전인지 p6spy에 들어오기 전인지는 확인하지 못한 점 죄송합니다.) members의 각 Member들의 team필드에 프록시 객체가 존재하지만 그 안에 이미 team의 값이 들어있는데 em.clear()를 통해 영속성콘텍스트마저 비워줬는데 어떻게 이미 알고 있는 건가요?
-
미해결스프링 핵심 원리 - 기본편
"스프링이란"이라는 강의까지 듣고 질문 올려봅니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 스프링부트의 장점으로"단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성"이라는 말이 나오면서 톰캣같은 웹서버를 내장하고 있다고 해주셨는데,톰캣은 그러면 스프링부트에 내장된 “웹서버”이기도 하면서 “WAS”이기도 한 것일까요?아니면 톰캣은 "웹서버"만을 지칭하는 건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
editForm의 형태가 이상하게 나옵니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의를 들으면서 하고있는데 상품 등록은 문제 없이 되는데상품 등록한 이후에 상품 수정을 하려고 들어가면 ui가 좀 깨지는 모습이 있습니다.위의 사진처럼 가격의 크기가 너무 압도적으로 큽니다. 일단 영한님의 코드를 그대로 복사 붙히기를 해도 같은 결과가 나옵니다. 그래도 저의 editForm 코드도 같이 첨부합니다.<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> <link href="../css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"> <style> .container { max-width: 560px; } </style> </head> <body> <div class="container"> <div class="py-5 text-center"> <h2>상품 수정 폼</h2> </div> <form action="item.html" th:action method="post"> <div> <label for="id">상품 ID</label> <input type="text" id="id" name="id" class="form-control" value="1" th:value="${item.id}" readonly> </div> <div> <label for="itemName">상품명</label> <input type="text" id="itemName" name="itemName" class="formcontrol" value="상품A" th:value="${item.itemName}"> </div> <div> <label for="price">가격</label> <input type="text" id="price" name="price" class="form-control" th:value="${item.price}"> </div> <div> <label for="quantity">수량</label> <input type="text" id="quantity" name="quantity" class="formcontrol" th:value="${item.quantity}"> </div> <hr class="my-4"> <div class="row"> <div class="col"> <button class="w-100 btn btn-primary btn-lg" type="submit">저장</button> </div> <div class="col"> <button class="w-100 btn btn-secondary btn-lg" onclick="location.href='item.html'" th:onclick="|location.href='@{/basic/items/{itemId}(itemId=${item.id})}'|" type="button">취소</button> </div> </div> </form> </div> <!-- /container --> </body> </html>
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
NamedLock 테스트 실패
안녕하세요 상용님 좋은 강의 너무 잘 듣고 있습니다.namedlock부분에서 테스트 코드를 돌리는데 connectiontimeout 이후 테스트가 실패하여 질문 드리려 합니다.문제상황maximum-pool-size를 40으로 설정 후 테스트를 돌리면 다음과 같은 에러가 터지면서 테스트가 실패합니다. 사진에서와 같이 40개 스레드가 락획득을 시도한 후, 30초 후 락획득 시도조차 하지못한 60개의 스레드에서 타임아웃이 납니다.이후 락 획득을 기다리던 스레드하나가 타임아웃이 나고 나머지 스레드들이 39번의 재고 감소 로직을 실행합니다.추측제가 추측한 것은 다음과 같습니다.1. 현재 transactional propagation requiresnew로 되어있기에 하나의 재고 감소 로직 당 2개의 connection을 필요로한다.2. 처음 40개의 스레드가 순차적으로 lock획득을 시도하며 40개의 스레드를 점유한다.3. requires new로 새로운 트랜잭션을 시작하기 위해 새 connection이 필요하지만, 여유분이 없어 기다린다.(이때 데드락 상황)4. 30초 대기후 timeout이 나서 커넥션들이 순차적으로 반환된다.5. 이때 락을 획득 시도한 스레드(커넥션 점유중)가 반환되면6. 나머지 39개의 락획득 시도하던 스레드들이 실행된다.그래서 실제로 maximum pool size를 101개로 올리니 잘 실행되었습니다.그런데 선생님은 40개로도 실행이 되어서.. 의문이 남습니다.질문저의 추측이 맞을까요..? 틀리다면 어디가 틀린걸까요.왜 선생님은 40으로만으로도 된것인가요?이런 이유에서 강의 중에 datasource를 분리하라 하신걸까요?혹시 몰라 코드 첨부합니다.!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
localhost/hello 404에러
View 환경설정 부분에서localhost:8080/hello 부분이 접속이 안됩니다.작성코드 결과화면
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findByname파트에서 질문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.회원 리포지토리 테스트 케이스 작성 8:48영상을 보았는데Member result = repository.findByName("spring1").get(); 이렇게 코드를 치는걸로 나오는데 이런방식으로 하면 값이 있는지 여부를 파악 못하고 그냥 불안전하게 값을 가져오는 방식이라는걸로 예전에 다른 강의에서 말씀해주셨던 거 같은데 기억이 애매모호해서 질문드립니다. 테스트코드라서 이런방식을 택하신건지와 정석적으로 값을 체크하려면 아래방식으로 코드를 짜는지에 대해서 궁금합니다.Optional<Member> result = repository.findByName("spring1"); Assertions.assertThat(result) .isPresent() // Optional에 값이 있는지 확인 .get() // 값이 존재할 때만 안전하게 꺼냄 .isEqualTo(member1);혹시 이 코드가 맞다면 Optional<Member> 대신에 Member 클래스를 넣으면 정석인 코드가 되는지 알고 싶습니다.
-
미해결스프링 부트 - 핵심 원리와 활용
Config 클래스에 @AutoConfiguration 의 필요성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 org.springframework.boot.autoconfigure.AutoConfiguration.imports에 설정 클래스를 등록하면 importSelector가 해당 클래스를 읽어온 후 설정 클래스 및 내부 빈들이 등록되는 것으로 이해했습니다. 그런데 설정 클래스에서 @AutoCongiruation 이라는 어노테이션을 붙여주는 이유가 뭔지 잘 모르겠습니다. 해당 어노테이션을 제외하고 public class MemoryAutoConfig { @Bean public MemoryController memoryController() { return new MemoryController(memoryFinder()); } @Bean public MemoryFinder memoryFinder() { return new MemoryFinder(); } } 이런형태로 build한뒤 다른 프로젝트에서 implementation 을했을 때도 MemoryController와 MemoryFinder가 빈으로 등록되고 동작하는 것을 확인했습니다. imports파일에 등록하는 클래스는 자동으로 빈으로 읽혀지는 것 같은데, 해당 클래스에 @AutoConfiguration 을 붙여주는 이유가 궁금합니다
-
해결됨서버개발자 과제전형 완벽가이드 - 1편
SPOCK 의존성 추가 후 Generate Test 옵션 미노출
안녕하세요 강사님spock의 의존성 추가 후(build완료) generate test 창에서 target library에 spock이 뜨지 않습니다. 혹시 강사님이 추가로 설치하신 plugin이나 세팅이 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO 분리
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 좋은 강의 항상 감사드립니다. 강의를 수강 하던 중 간단한 질문이 있어 작성하였습니다! OSIV를 끄기 위해 분리를 하실 때 QueryService를 만드시면서 동시에 기존의 DTO들을 사용하지 않으시고 Query 패키지에 새로 만들어 사용하셨는데 기존 DTO를 사용하지 않는 이유가 궁금합니다!또한 이렇게 분리해서 새로 만드는 것이 권장되는 사항인지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Valid체크 오류 문의드려요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]상품등록시에서도 입력받는 책 데이터들의 valid를 체크하고싶어서 memberForm을 받을때와 마찬가지로코드를 짰는데 계속해서 오류가 납니다... 아무리 찾아봐도 모르겠어서 질문 남깁니다(name만 null체크를 합니다.) BookFormItemController templates/items/createItemForm.html오류
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
web,was 분리 관련
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]로드맵을 다 돌고 이 강의를 다시 듣고있는데 웹 시스템 구성은 web, was, db로 하는것이 좋다는 말이 귀에 들어왔습니다.강의를 따라하면서 프로젝트를 따라할 때 spring boot 안에 내장되어있는 tomcat을 쓰고있는 것으로 아는데 저희는 따로 web과 was를 따로 분리해서 작업하고 있는게 아닌가요? 만약 따로 분리를 한다면 어떻게 하는것이 따로 하는것이라고 생각할 수 있을까요?