묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
의존성주입 대해 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 해당 수업과는 관계가 없는 내용이긴 한데..의존성 주입 관련해서 조금 헷갈리는 부분이 있어 질문드립니다. 먼저, ItemServiceApplication 클래스에서 보면 스캔 범위가 hello.itemservice.web 이하의 경로로 지정되어 있습니다.아래는 SpringDataJpaConfig 클래스입니다.SpringDataJpaItemRepository 를 주입받는 과정에서, 빨간 에러 표시가 뜨고 'Could not autowire. No beans of 'SpringDataJpaItemRepository' type found.' 라는 빈을 찾을 수 없다는 메시지가 표시됩니다. 어찌보면 당연한 것 같습니다. 해당 레포지토리가 속해있는 경로는 스캔 대상이 아니거든요. 게다가 SpringDataJpaItemRepository 에는 해당 인터페이스를 빈으로 등록할만한 요소를 가지고 있지는 않습니다. 따로 component 로 등록될만한 애노테이션이 붙은것도 아니고요. 그런데 생각해보면 JpaRepository 인터페이스를 상속받고 있어서, 해당 인터페이스에 스프링 빈으로 등록될만한 요인이 있다면 가능한 것일까 싶은 생각은 드는데..이 부분에 대한 확신이 들지 않아 질문드립니다. 실제로 ItemServiceApplication 에서 스캔 범위를 "hello.itemservice.web" -> "hello.itemservice" 으로 변경해보면 위에서 본 빨간 에러는 사라집니다.그런데 만약 빨간 에러가 나오는게 맞는 상황이라면, 저희가 지금까지 작성한 로직들이 동작하지 않아야 할 것 같아서요.특히 SpringDataJpaItemRepository 를 주입받는 ItemServiceV1 클래스에서 주입이 안되는게 맞지 않나 싶습니다. 물론 서비스는 추상화된 레포지토리의 의존하고 있긴 하지만, 의존성이 주입되는 시점에는 구체 클래스인 SpringDataJpaItemRepository 클래스가 주입될텐데 이게 정상적으로 동작하는게 이해가 조금 안됩니다. 글이 너무 길었는데..정리해서 말씀드리면SpringDataConfig.java 에서 SpringDataJpaItemRepository 를 주입받을 때 'Could not autowire. No beans of 'SpringDataJpaItemRepository' type found.' 라는 메시지가 IDE에 표시된다.실제로 SpringDataJpaItemRepository 클래스는 컴포넌트 스캔 대상 범위에 속하지 않는다.그런데도 애플리케이션 로직 및 테스트 로직이 정상적으로 수행된다.해당 상황이 이해가 되지 않는다.입니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@PathVariable name 생략 질문 드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@GetMapping("/{itemId}")public String item(@PathVariable("itemId") Long itemId, Model model) { Item item = itemRepository.findById(itemId);model.addAttribute("item", item);return "basic/item";}제가 알기론 Mapping 의 경로와 변수명이 같다면 name을 생략 가능한걸로 알아 원래 예제에선 PathVariable 뒤에 ("itemId") 를 생략하여도 잘 작동하지만, 따라해보니 name을 생략하면 아래와 같은 오류가 발생합니다.java.lang.IllegalArgumentException: Name for argument of type [java.lang.Long] not specified, and parameter name information not found in class file either왜 이런걸까요>?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
spring 3.2.0 사용하시는 분들 중 converterEdit에서 컨버팅 안되시는 분
강의 10분 33초 쯤에 @PostMapping 'converterEdit' 호출 시 에러가 발생되서 혼자 해결해봤습니다.최근 스프링에서 2.x.x 버전을 지원 중단하여 3.2.0 사용 중인데요,여기서 제출 누르면 파라미터 바인딩에 실패해서 white label 페이지가 나오시는 분들은 컨트롤러 내 static class인 Form의 @Data를 아래처럼 바꿔보세요.@Getter @Setter @RequiredArgsConstructor static class Form { private IpPort ipPort; public Form(IpPort ipPort) { this.ipPort = ipPort; } }이렇게 하면 정상적으로 진행됩니다.
-
미해결스프링 부트 - 핵심 원리와 활용
라이브러리 스프링 빈 등록시 타 라이브러 사용 문의
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 표제와 같이 라이브러리 등록에 관해 궁금한점이 있어서 문의 드립니다.예제에서 메모리 기능 관련하여 기능을 구현후에 라이브러리로 만든 파일을 사용자가 import하는 예시를 들어주셨는데요. 혹시 협업 과정에서 누군가가 메모리 기능을 구현해야 하는데 해당 메모리 기능 중에서 import 될 프로젝트에서 특정 기능을 불러와서 사용해야 한다면 어떠한 방법으로 접근가능한가요??Main 프로젝트의 기능(특정 데이터 또는 서비스 호출)을 메모리 라이브러리에서 사용하고(Main프로젝트 없이) 별도로 개발 후(메모리 라이브러리)에 Main 프로젝트에서 해당 라이브리를 사용하고 싶은 케이스인데 가능한가요? 감사합니다^^
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 파일을 실행시켰을때 결과화면
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.h2데이터베이스에 잘 실행이 되는것을 확인했는데 강사님 화면처럼 insertinto ~~이런식으로 안떠서 뭐가 문제인건가요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
localeReslover 구현해보는데 잘 안되시는 분들 ...
localeResolver를 빈 등록할 때 빈이름을 localeResolver 이걸로 주면 됩니다... 3시간동안 뻘짓하다가 .
-
미해결토비의 스프링 부트 - 이해와 원리
Environment Abstraction 의 우선순위
섹션8의 Environment 추상화와 프로퍼티 제목의 강의의 막바지 부분에서 Environment Abstraction 의 우선순위에 대한 내용이 나옵니다. 강의 내용을 요약해보자면 ServletConfig Parameter < ServletContext Parameters < JNDI < System Properties < System Environment Variables < @PropertySource < application.properties, xml, yml 대로 오른쪽으로 갈 수록 우선순위가 높다라고 이해를 했습니다. 우선 저는 System Properties가 jvm 옵션을 말하는건가? 라는 생각을 가지고 들었고 그렇게 생각하고 위의 내용을 보니 jvm option의 우선순위가 os의 환경 변수보다 높아야 되는거 아닌가? 라는 궁금증이 생겼습니다. 제목 그대로 우선순위에 대한 내용에 오류는 없는것인지 궁금합니다.++ 질문 수정"자동 구성에 Environment 프로퍼티 적용" 강의를 들어보니 우선순위를 제가 반대로 이해한것 같습니다. 여기서 추가적으로 궁금증이 생겼습니다.저는 application level의 설정이 더 우선해야 되는 것 아닌가? 라는 생각에application property > jvm property > os level property 라고 생각을 했습니다. 하지만 스프링에서는jvm property > os level property > application property의 우선순위를 가지게 한 것 같은데 그 이유가 무엇일까요?이것에 대한 생각이 어떠신지 궁금합니다.그리고 우선순위의 변경을 원한다면 바꿀 수 있도록 스프링이 제공하는지도 궁금합니다! 감사합니다.=======================제가 강의 내용을 끝까지 안듣고 궁금한것을 적었는데..질문을 남기고 나머지 강의를 들어보니 궁금했던 내용이 해소가 됐네요. 자문 자답하자면, application의 설정을 default로 하되, 어떤 환경에서 어떤 사용자가 사용하냐에 따라 설정이 달라질 수 있어야 하기 때문에 jvm, os level의 property보다 우선순위가 낮아야 할 것입니다. 이왕 글을 남긴거 삭제하기 뭐해서 남겨두겠습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 데이터베이스 연결할 때 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금한 점이 생겨 질문 드립니다.jdbc url도 다 연결이 되고 test.mv.db도 있었습니다. 그런데 7분 이후의 과정을 따라가려 하니 그 다음단계를 진행하려고 할 때마다 연결이 끊어져 매번 del을 해주고 있는데 매번 이래야 하나요?? 아니면 연결이 끊어지는 특정 조건이 있는 건가요? 감사합니다!
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
AutoConfigure 시 등록되는 Bean 에 대해 질문있습니다.
안녕하세요 강사님. 덕분에 1년사이에 실력이 늘은것이 체감이 많이 듭니다. 다름이 아니라, 해당 강의에서 강사님께서 자동구성때 등록되는 DataSource 는 HikariDataSource 라고 하셨고TransactionManager 는 사용하는 라이브러리에 따라 달라진다고 하셨습니다. 그래서 스프링 부트가 AutoConfigure 할 때 등록되는 Bean 들을 찾아보았습니다. DataSource 는 HikariDataSource 가 잘 잡히는 것 같구요 TransactionManger 는 JDBC 를 사용하기때문에 DataSourceTransactionManager 가 잡히는 것을 확인할 수 있습니다. 제가 찾은것이 맞을까요? 근데 왜 첫번째 사진에서 HikariDataSource 를 리턴할때 null 을 리턴할까요? ㅠㅠ 이것을 모르겠습니다. 단순히 properties 나 yml 에 spring.datatsource.hikari 를 설정하지 않아서일까요? 좋은 하루 보내세요
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
쿼리 로그가 안나옵니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.MemberRepositoryTest 실행시에 실행잘되고 기대했던 결과도 나오지만 쿼리 로그가 보이지 않습니다. junint5로 테스트 실행했습니다. 1. MemberRepositoryTest 클래스 파일 소스 package jpabook.jpashop; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import javax.transaction.Transactional; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; @SpringBootTest class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(value = false) public void testMember() throws Exception{ //given Member member = new Member(); member.setUsername("memberA"); //when Long savedId = memberRepository.save(member); Member findMember = memberRepository.find(savedId); //then assertThat(findMember.getId()).isEqualTo(member.getId()); assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); } } ///////////////////////////// 설정파일 정보는 아래와 같습니다. 1. build.gradle plugins { id 'java' id 'org.springframework.boot' version '2.7.17' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'jpabook' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '11' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('bootBuildImage') { builder = 'paketobuildpacks/builder-jammy-base:latest' } tasks.named('test') { useJUnitPlatform() } 2. application.yml spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: #show_sql: true format_sql: true logging.level: org.hibernate.SQL: debug #org.hibernate.type: trace #스프링 부트 2.x, hibernate5
-
미해결스프링 핵심 원리 - 기본편
Process finished with exit code 0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. Process finished with exit code 0 이 문장 안 나와도 상관 없나요? 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
CreateProcess error=5, 액세스가 거부되었습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요,프로젝트 오픈하고 처음에 run 돌릴 때 아래와 같은 에러가 발생합니다.(강의 6:06초) CreateProcess error=5, 액세스가 거부되었습니다 Execution failed for task ':ServletApplication.main()'.> A problem occurred starting process 'command 'C:\Program Files\Java\jdk-17\bin\java.exe'' 인터넷에 찾아보니 C드라이브에 접근하는 권한 문제일 수 있다고 하는데 해결책은 따로 나와 있지 않아 문의드립니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
new를 이용하지 않는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금한 점이 생겨 질문 드립니다.1.3분 4초 즈음 new로 인스턴스를 생성해서 사용하면 MemberSerivce를 MemberController 말고 다른 컨트롤러도 가져다 쓸 수 있다고 언급하셨는데 private인데도 접근할 수 있는 건가요,,,? 실행버튼이 나오지 않아 커뮤니티 검색해서 helloSpringApplication에서 작동시켜서 선생님과 같은 화면까지는 나왔는데요, 선생님께서는 컨트롤러에도 실행 버튼이 있는데 제 거에는 없는 이유가 있을까요..? 무료와 유료의 차이인가요?감사합니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
new-form 404에러
[질문 내용]안녕하세요~강의 10분까지 따라했는데, 404에러가 떠서 문의드립니다. 전체 소스코드 : https://drive.google.com/file/d/1qj3jxUOuySgLPXIIgDvfKm38HXCpvLKD/view?usp=sharing
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
GET API까지는 잘 하다가 인텔리제이 껐다가 다시 키고 POST API 수업따라 코드 작성 후 서버 실행하니 라는 오류가 발생합니다...
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
MySQL named lock과 redis를 사용한 분산락 구현의 차이점
안녕하세요 강사님, 유익한 강의 잘 듣고 있습니다. 😀강의를 듣던 중 분산락을 구현하는 더 좋은 방법이 무엇일지 궁금해서 질문 남깁니다.강의 중에선 MySQL named lock이 트랜잭션 종료 시 수동으로 락을 반환해야한다는 점 때문에 관리가 어렵다는 단점이 있다고 언급하셨는데요, 레디스를 사용했을 때와 비교해서 named lock이 분산락을 구현하는데 있어 더 불리한 점이 있나요? 구글링을 좀 해봤는데 네임드락은 클러스터 환경에서 분산 락 제공이 불가능하고, 추가로 zookeeper 같은 분산락 관리자를 사용해야한다고 하는데.. 잘 이해가 안되어서 여쭤봅니다. 오히려 기존에 MySQL을 사용하고 있다면 네임드락을 사용하는게 레디스 추가 비용 없이 분산 락을 구현할 수 있는 방법이라는 생각이 드는데요, 강사님은 어떻게 생각하시는지 궁금합니다. 참고로 제가 읽었던 분산락 관련 블로그 주소입니다. https://velog.io/@this-is-spear/MySQL-Named-Lock
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
get()을 하는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요! 수업 도중 궁금한 점이 생겨 질문드립니다.@Test public void save() { Member member = new Member(); member.setName("spring"); repository.save(member); Member result = repository.findById(member.getId()).get(); // System.out.println("result = " + (result==member)); Assertions.assertEquals(member, result); } 이 부분에서 Member result를 할 때 get()을 해주는 이유는 findById의 반환값이 optional이기 때문인건가요...? 그렇다면 optional은 get을 왜 해줘야하는지도 궁금합니다. 감사합니다
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
"%" + itemName + "%"가 @Param에서 읽히지가 않아요
@Override public List<Item> findAll(ItemSearchCond cond) { String itemName = cond.getItemName(); Integer maxPrice = cond.getMaxPrice(); if (StringUtils.hasText(itemName) && maxPrice != null) { //return repository.findByItemNameLikeAndPriceLessThanEqual("%" + itemName + "%", maxPrice); return repository.findItems(itemName , maxPrice); } else if (StringUtils.hasText(itemName)) { return repository.findByItemNameLike("%" + itemName+"%"); } else if (maxPrice != null) { return repository.findByPriceLessThanEqual(maxPrice); } else { return repository.findAll(); } }JpaItemRepositoryV2에서 이름이랑 가격이 모두 있을 때 return repository.findItems(itemName, maxPrice); 이 코드를return repository.findItems("%" + itemName + "%", maxPrice);로 변경하면@Query("select i from Item i where i.itemName like :itemName and i.price <= :price ") List<Item> findItems(@Param("itemName") String itemName, @Param("price")Integer price);여기 코드에서 @Param("itemName")이 itemName을 %itemName%으로 받아서 그런지 org.springframework.dao.InvalidDataAccessApiUsageException: For queries with named parameters you need to use provide names for method parameters. Use @Param for query method parameters, or when on Java 8+ use the javac flag -parameters.; nested exception is java.lang.IllegalStateException: For queries with named 이런 오류가 뜹니다어떻게 해결할 수 있나요?
-
미해결스프링 시큐리티 OAuth2
인가서버와 websecurityconfigureradapter
안녕하세요, 강사님? 강의 잘듣고 있습니다. 이제 막 회사에서 일하기 시작한 주니어 개발자입니다. 제 회사에서는 websecurityconfigureradapter 를 상속받아서, spring boot 2.7.6에서 사용하고 있습니다.이 경우에는 authorization server를 마지막 강의에서 사용하신 source code를 활용해보니 작동하지않았습니다. illegalStateException에서 security filter chain과 websecurityconfigureradapter 둘중 하나를 사용하라는 문제에 부딪혔습니다. 그외에도 oauth2 authroization server 관련 jar내 class들이 security filter chain을 형성하는 과정이 관련 있는 것 같아서, 동작하지 않는것으로 보이기도 합니다. 예를들면 @Bean (clientRegistration을 수행하는메서드) 입니다. 혹시 oauth2로는 websecurityconfigureradapter 과 함께 쓸수가 없는 것일까요? 있다면, 혹시 관련 코드를 가지고 계신것이 있다면 공유해주시면 감사드리겠습니다.!
-
해결됨Practical Testing: 실용적인 테스트 가이드
서비스단 Transactional에 대해 질문 드립니다
안녕하세요!서비스 클래스 상단에 @Transactional(readOnly = true) 옵션을 두는 경우에 대해 질문이 있습니다.만약 Transactional을 적용하고 싶지 않은 메서드가 있으면 어떻게 하는 것이 좋을까요? 저의 경우 외부 api 요청을 보내고 응답을 반환하는 메서드에 Transactional을 적용하지 않으려고 합니다(CQRS에 대해 말씀해주신 부분을 듣고 애초에 외부 API 호출하는 기능이 분리 되어야 하나 싶기도 드네요 ㅠㅠ) @Service @Transactional(readOnly = true) @RequiredArgsConstructor public class SpotService { private final MapApiClient mapApiClient;