묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
ORM 책 말인데요..
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]ORM 서적 혹시 개정판 안 나오나요...버전이 꽤나 바뀐 탓에 사고 싶은데 약간 망설여지네요.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
Throws Exception 사용 지양?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]체크 예외 활용에 20분 정도에 throws Exception에 관한 내용이 이해가 잘 안 되는데 결과적으로 체크 예외의 최상위 타입인 Exception을 던지기 때문에 맞다고 판단해서 컴파일 오류가 발생하지 않는다예제를 가지고 설명 부탁드려도 될까요?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
[정보] 최신 스프링부트 사용 시 build.gradle.kts 쓰시는 분들 위한..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 크게 살려주신 분 : java.lang.NoClassDefFoundError: javax/persistence/Entity — 기록하는 곳 (tistory.com)//https://central.sonatype.com///search for mavencentral plugins here//메이븐센트럴 관련 플러그인 검색plugins {javaid("org.springframework.boot") version "3.1.0"id("io.spring.dependency-management") version "1.1.0"}group = "com.example"version = "0.0.1-SNAPSHOT"java.sourceCompatibility = JavaVersion.VERSION_17val queryDslVersion = "5.0.0"configurations {compileOnly {extendsFrom(configurations.annotationProcessor.get())}}repositories {mavenCentral()}dependencies {implementation("org.springframework.boot:spring-boot-starter-thymeleaf")implementation("org.springframework.boot:spring-boot-starter-web")compileOnly("org.projectlombok:lombok")annotationProcessor("org.projectlombok:lombok")testImplementation("org.springframework.boot:spring-boot-starter-test")// jpaimplementation("org.springframework.boot:spring-boot-starter-data-jpa:3.1.2")// this is the plain mybatis -> no spring boot integration (그냥 생짜 마바)// implementation("org.mybatis:mybatis:3.5.13")// myBatis Spring configured (스프링한테 맞게 바꾼 마바)implementation("org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.2")//jdbctemplate (jdbc템플 -> 나중에 jpa 안에 들어가서 커멘트)// implementation("org.springframework.boot:spring-boot-starter-jdbc")//h2 database integration (h2 DB)runtimeOnly("com.h2database:h2")//테스트에서 lombok 사용testCompileOnly("org.projectlombok:lombok")testAnnotationProcessor("org.projectlombok:lombok")//Querydsl -> 한시간 넘게 걸림. 자주 하는 질문 스프링부트 3.x 이상에서 groovy 확인implementation("com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta") -> 둘 다 자카르타!annotationProcessor("com.querydsl:querydsl-apt:${queryDslVersion}:jakarta") -> 둘 다 자카르타!annotationProcessor("jakarta.annotation:jakarta.annotation-api")annotationProcessor("jakarta.persistence:jakarta.persistence-api")}tasks.withType<Test> {useJUnitPlatform()}//Querydsl 추가, 자동 생성된 Q클래스 gradle clean으로 제거tasks.named<Delete>("clean") {delete(file("src/main/generated"))} 열공!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderItem - Item 관계에 대해 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]OrderItem과 Item는 N:1 관계라고 나오는데요, 하나의 주문에는 여러 상품이 들어가는 건 이해하겠는데 "하나의 상품(하나의 id를 가진)"이 여러 주문에 들어 가는 게 이해가 잘 안 됩니다. 가령 내가 쿠팡에서 내 장바구니에 비누, 치약, 샴푸 3가지 상품을 샀는데 이 각각의 상품들은 id를 가지고 있을 것이고 여기서 결제하고 주문을 완료하면 이 3가지 상품들은 해당 주문 목록에만 표시 될텐데요? 이 중 어느 하나의 상품이라도 다른 OrderItem에 포함 된다는 의미가 뭔지 이해가 안 가네요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
타임리프에서 삼항연산자
<td th:text="${order.orderItem} ==null ? '': ${order.orderItem.get(0).item.itemName}"></td> 혹시 이런식으로 order라는 객체 안에 ordrItem 이 널이 아니면 그중 첫번째 아이의 item.itemName을 표시하려고 하는데요. 계속 에러가 나네요 ㅡ2023-07-26T04:07:54.378+09:00 ERROR 31024 --- [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "order.orderItem.get(0).item.itemName" (template: "/order/list" - line 25, col 25)] with root causeorder.orderItem[0].item.itemName이렇게 해도 비슷한 에러가 나는데 혹시 해결방법있을까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@BeforeEach 동작
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 강사님의 강의를 듣고 Spring Boot로 웹 페이지 개발을 연습중입니다.TDD방식으로 구현을 하며 웹 페이지를 만들고 있습니다.환경IDE: IntelliJpc: MacBook Air 2022Spring Boot Version: 3.1.2소스파일: https://drive.google.com/file/d/17oeGgTCTbRMAtcaxrE4sWDtw7NRTJlPk/view?usp=sharing구현테스트환경을 독립적으로 구성하고 싶어서 @BeforeEach를 사용하여 테스트 코드 실행 전에 H2 db 인메모리에 sql스크립트를 실행하여 데이터를 세팅하는 작업을 하고 테스트들을 진행 중에 있습니다.import org.springframework.jdbc.core.JdbcTemplate; import org.junit.jupiter.api.BeforeEach; import org.springframework.core.io.ClassPathResource; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.jdbc.datasource.init.ScriptUtils; @BeforeEach void dbConfig() { JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); ClassPathResource schema = new ClassPathResource("schema.sql"); try { ScriptUtils.executeSqlScript(jdbcTemplate.getDataSource().getConnection(), schema); } catch (SQLException e) { throw new RuntimeException(e); } ClassPathResource data = new ClassPathResource("data.sql"); try { ScriptUtils.executeSqlScript(jdbcTemplate.getDataSource().getConnection(), data); } catch (SQLException e) { throw new RuntimeException(e); } }증상데이터를 Insert후에 반환된 기본 키 값으로 Select하여 검증을 하는 로직에서 단독 테스트시에는 정상적으로 잘 동작하나 test 패키지를 전체 테스트를 돌리면 Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "board" not found; SQL statement: 이와 같이 테이블을 찾을 수 없다고 간헐적으로 오류가 발생하고 있습니다.[시도해본 방법]SQL스크립트가 제대로 로드 되지 않았다고 생각되어 테이블 생성 스크립트 후에 Thread.sleep();을 줘서 지연을 줘봤지만 실패기존에는 ScriptUtils.executeSqlScript(jdbcTemplate.getDataSource().getConnection(), schema); 실행을 schema와 data를 연달아 수행하던 것을 schem먼저 수행 후, data수행하도록 변경했지만 실패Chat-GPT에 질문을 해보니 @BeforeEach를 사용하여 데이터베이스 스키마를 초기화하고 데이터를 삽입하는 경우, 테스트 메소드 간에 순서가 보장되지 않을 수 있기 때문에, 특정 테스트 메소드가 실행되기 전에 데이터베이스 초기화가 이루어지지 않을 수 있습니다. 라고 답변을 받았는데요. 그래서 @Order 어노테이션으로 @Test 메소드들의 순서를 지정해봤는데도 동일한 오류가 발생합니다.이와 같이 잘 안되고 있어 문의 드립니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@ModelAttribute 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@PostMapping 에서는 @ModelAttribute가 전송내용을 담는 역할을 하는것으로 이해가 되는데@GetMapping("/orders") public String orderList(@ModelAttribute("orderSearch") OrderSearch orderSearch, Model model) { List<Order> orders = orderService.findOrders(orderSearch); model.addAttribute("orders", orders); return "order/orderList"; }위 코드처럼 @GetMapping에서는 @ModelAttribute("orderSearch") OrderSearch orderSearch가 어디서 값을 받아오는지가 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@RequestParam 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@PostMapping("/order") public String order(@RequestParam("memberId") Long memberId, @RequestParam("itemId") Long itemId, @RequestParam("count") int count) { orderService.order(memberId, itemId, count); return "redirect:/orders"; }여기서 상품주문버튼을 누르면 주문회원, 상품명, 주문 수량이 등록되는데 @requestParam의 memberId, itemId, count는 값을 어디서 어떻게 받아오는지를 모르겠습니다. 주문회원, 상품명같은 경우는 String인데 어떻게 Long타입의 memberId, itemId를 받아오나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
1편에서 설명해주셨던 "@{ | ${data} | }" 문법에 대해서 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)네2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)네[질문 내용]<li><a th:href="@{|/hello/${param1}/${param2}|}">path variable</a></li>이런식으로도 쓸수 있다고 하신거같은데 따로 말씀을 안해주셔서 질문 드립니다. 해당 문법 보다는 설명해주셨던 문법을 많이 쓰는지 아니면 그냥 취향에 따라서 맞춰 쓰면 되는지 질문 드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
/images/{filename}
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.mvc2 강의 Multipart 파트를 보다가 아래부분에서의 GetMapping의 "/images/{filename}" 이 경로가 어떻게 호출되는 건지 궁금합니다. 뷰의 이미지 소스 경로에서 th:src="|/images/${imageFile.getStoreFileName()}| 이 부분때메 애가 호출하는 것인지 궁금합니다. 답변 주시면 감사하겠습니다. @ResponseBody @GetMapping("/images/{filename}") public Resource downloadImage(@PathVariable String filename) throws MalformedURLException { return new UrlResource("file:" + fileStore.getFullPath(filename)); }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
member_seq 테이블이 생성되는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]h2 대신에 로컬에 설치되어 있는 mysql 로 예제를 따라하고 있습니다. testMember() 를 실행하고 생성된 테이블을 확인하니, member, member_seq 두 테이블이 생성이 되었습니다. 출력된 sql 문에도 두 테이블을 생성하고 업데이트하는 sql문이 포함이 되어있습니다. member_seq 테이블은 왜 생성되는 것인가요 ??
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
fake Repository로 테스트를 진행하려고 합니다,
실제 유저 엔티티 가지고 userRepository를 해야하나요? 이것을 가지고 테스트를 해봤는데 id를 자동 매핑으로 해놔서 실제 fake로 테스트할때 id 값을 넣어줄 수가 없어서 구현에 어려움을 겪고 있습니다. 새로 Fake에 적용될 유저 도메인을 작성해야하나요?
-
미해결스프링 핵심 원리 - 기본편
의존관계 자동 주입 강의 관련 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]의존관계 자동 주입 강의에서 수정자 주입 부분 설명하실때 setMemberRepository 와 setDiscountPolicy 메서드에 print문 작성하고 테스트 돌리면 set메서드를 호출하지 않았는데 어떻게 print문도 출력이 되는건가요??OrderServiceImpl 을 빈으로 등록할때 거깄는 메서드까지 다 호출하는건가요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2 DB와 연동이 안됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]MemberMemberRepositoryMemberRepositoryapplication.ymlbuild.gradleh2 창home에 있는 폴더와 같이 설정을 했는데요 JpaShopApplication을 동작시켜보면와같이 커리가 나오긴합니다. 하지만이렇게 멤버가 뜨지를 않는데 어디가 오류인걸까요?ㅜㅜ
-
미해결스프링 핵심 원리 - 기본편
@Qualifier 코드 에러
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]fixDiscountPolicy에 @MainDiscountPolicy를 붙이고 OrderServiceImpl 생성자에서 동일하게public OrderServiceImpl(MemberRepository memberRepository, @MainDiscountPolicy DiscountPolicy discountPolicy)라고 주입을 했습니다.하지만 에러가 나는데 아래와 같이 납니다.No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: mainDiscountPolicy,rateDiscountPolicy보면 fix가 아닌 mainDiscountPolicy와 rateDiscountPolicy를 찾았는데요.어디에 코드를 놓쳤을까요? 영상 두번 돌려봐도 도저히 다른점을 모르겠어요.
-
미해결스프링 핵심 원리 - 기본편
JVM에 대한 질문
제가 JVM이 어떠한 구조인지 잘 모르겠는데JVM에 새로운 객체들을 계속 생성하는 메모리 문제는 Java(JVM) 만의 문제인가요? 아니면다른 언어들도 예를 들면 자바스크립트의 prototype, 파이썬에서도 Class로 객체를 만들 수 있고go언어는 struct 로 객체를 만들 수 있는데 이러한 것들도 스프링처럼 싱글톤으로 관리해주는 프레임워크가 없으면 메모리가 가득 차게 되나요?그러면 웹 어플을 만든다고 할 때 가능하면 객체들은 싱글톤 패턴으로 개발해야 좋은 건가요?
-
미해결스프링 핵심 원리 - 기본편
중복 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요MemberServiceImpl.javaMemoryMemberRepository.javaAppConfig.javaParameter 0 of constructor in hello.core.member.MemberServiceImpl required a single bean, but 2 were found:- memoryMemberRepository: defined in file [C:\Users\cksgu\Spring\스프링 핵심 원리 - 기본편\core\core\out\production\classes\hello\core\member\MemoryMemberRepository.class]- MemberRepository: defined by method 'MemberRepository' in class path resource [hello/core/AppConfig.class]. CoreApplicationTests를 실행하면 위와 같은 오류가 나는데뭐가 문제일까요? 제가 생각하기에는 스프링 컨테이너 내에 있는 MemberRepository 타입의 빈이 여러 개가 있어서 그런 것 같은데 맞나요? 제가 생각하는 스프링 빈이 등록하는 과정과 충돌 되는 이유는 다음과 같습니다. @Bean으로 인해이름이 MemberRepository인 MemoryMemberRepository를 빈으로 등록(처음에는 앞 글자가 소문자인 memberRepository 이름으로 등록 되는 줄 알았는데 출력을 해보니 MemberRepository 이름 그대로 저장되는 것 같아요.) @Component으로 인해이름이 memoryMemberRepository인 MemoryMemberRepository를 빈으로 등록 3. MemberServiceImpl에서 @Autowired으로생성자 주입을 하기 시작함.생성자 매개변수가 MemberRepository 타입이므로 MemberRepository 타입과 일치하는 빈을 스프링 컨테이너에서 찾아서 주입한다. 그러나 일치하는 빈이 여러 개 있으므로 충돌이 남... 혹시나 해서AppConfig.java 내에 있는 MemberRepository() 함수를앞 글자가 소문자인 memberRepository() 함수로 바꿔서 실행하면 잘 동작하는데 왜 그런지 알 수 있을까요?MemberRepository() 함수 이름이 MemberRepository 타입의 이름과 일치하면 안되나요? 빈 이름만 바꿨을 뿐 타입이 일치하는 빈이 스프링 컨테이너에서 여전히 여러 개일 텐데 왜 오류가 날지 않는지 궁금합니다. ============== 자답 =============== @Autowired 매칭 정리1. 타입 매칭2. 타입 매칭의 결과가 2개 이상일 때 필드 명, 파라미터 명으로 빈 이름 매칭한다고 합니다. @Bean으로 인해이름이 MemberRepository인 MemoryMemberRepository를 빈으로 등록 @Component으로 인해이름이 memoryMemberRepository인 MemoryMemberRepository를 빈으로 등록 MemberRepository 타입과 일치하는 두 개의 타입을 찾았고,그중에서 MemberServiceImpl 생성자 파라미터 명 memberRepository과 일치하는 빈이 없으므로 오류가 나는 것 같습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
간단한 질문입니다만..
회원 웹 기능-등록 강의에 나오는 부분중에package spring.lecture0.controller; import lombok.Getter; import lombok.Setter; //웹 등록 화면에서 데이터를 전달 받을 폼 객체 @Getter @Setter public class MemberForm { private String name; }이 코드가 MemberController에서 @PostMapping의 create메소드에 파라미터로 사용되던데 그러면 저 MemberForm은 혹시 DTO(Data Transfer Object)인가요?혹시 DTO가 맞다면 DTO객체들만 따로 디렉토리를 생성해도 괜찮나요?..감사합니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
errors.properties
errors.properties에서#Bean Validation 추가 NotBlank={0} 공백X Range={0}, {2} ~ {1} 허용 Max={0}, 최대 {1}이렇게 추가하는 경우 Range의 매개변수가 {2} ~ {1}로 되는데각각의 매개변수는 어디서 받아 오는 건지 모르겠습니다.@NotNull @Range(min = 1000, max = 1000000) private Integer price;이 부분인 줄 알고 순서를 바꾸었더니 1000000~1000으로 출력 되었습니다.
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
안녕하세요! 생성자와 필드의 타입에 관련하여 질문있습니다
위의 코드에서 jpa 때문에 protected로 기본 생성자를 만들어주어야 한다고 하셨는데, 이게 무슨 의미인가요??왜 id는 Long 타입인데, userId는 long타입인가요?왜 id = null;로 해준건가요? sql ddl문은 작성해주지않고 자바 class만 작성해준 후 jpa 어노테이션을 붙여주면 db에 자동으로 테이블 생성이 안되나요? 입문자인데 눈높이에 맞춰 잘 설명해주시는 덕분에 재밌게 배우고 있습니다😄