묻고 답해요
148만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원가입 로직 테스트 오류
https://drive.google.com/drive/folders/1unulH1E9G7a--c4InEpy_4NwIEKrvH4b?usp=sharing회원가입 로직 테스트 오류가 납니다. 필요:hello.demo.domain.Member@f48a080실제 :hello.demo.domain.Member@1d3a03fe<클릭하여 차이점 확인>org.opentest4j.AssertionFailedError: expected: hello.demo.domain.Member@f48a080 but was: hello.demo.domain.Member@1d3a03fe at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
PATH 에러입니다..
[질문 내용]여기에 질문 내용을 남겨주세요. openjdk 22버전을 다운받아서 programfiles에 있는데다운 받은거를 어떻게 연동 시켜야하나요..?!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
SpringConfig required a single bean, but 2 were found:
[질문 내용]여기에 질문 내용을 남겨주세요. Parameter 0 of constructor in hello.hellospring.SpringConfig required a single bean, but 2 were found: - memoryMemberRepository: defined in file [C:\Users\Han\IdeaProjects\hello-spring\out\production\classes\hello\hellospring\repository\MemoryMemberRepository.class] - springDataJpaMemberRepository: defined in hello.hellospring.repository.SpringDataJpaMemberRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfigurationspringconfig에 빈이 2개있어서 그런거 같은데어느 파일을 수정해야할까요 @Configuration public class SpringConfig { private MemberRepository memberRepository; private EntityManager em; @Autowired public SpringConfig(MemberRepository memberRepository) { this.memberRepository = memberRepository; } // @Autowired // public SpringConfig(DataSource dataSource) { // this.dataSource = dataSource; // } @Bean public MemberService memberService() { return new MemberService(memberRepository); } // @Bean // public MemberRepository memberRepository() { // return new MemoryMemberRepository(); // return new JdbcMemberRepository(dataSource); // return new JpaMemberRepository(em); // } } 생성자 주입을 못받고 있다고 합니다.@Autowired public SpringConfig(MemberRepository memberRepository) { this.memberRepository = memberRepository; }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
jdbc 연결 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.https://drive.google.com/file/d/13B3t74Z3Xy8CyY0XTSTYjosfFZOhgOMB/view?usp=sharing위는 프로젝트 파일입니다.db연결 까지 완료 했고 테이블까지 생성 했습니다.하지만, 홈 화면에서 회원 목록을 조회 하려고 하면,인텔리제이 콘솔창에 이와 같은 오류가 발생합니다.select * from member [42104-224]] with root causeorg.h2.jdbc.JdbcSQLSyntaxErrorException: Table "MEMBER" not found (this database is empty); SQL statement:select * from member [42104-224]db까지 연결을 잘 했다고 생각하는데, 대체 어디가 잘 못 되어 member테이블을 찾지 못하는지 모르겠습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
엔티티 노출을 피하라.
현재 스프링 로드맵부터 시작하여 JPA 로드맵까지 완강하고, 한 프로젝트에 쭈욱 적용해보며 다시 복습하고 있는 취준생입니다!! 학습한 내용 중에 (JPA 로드맵 중) 엔티티 노출은 최대한 피하여 DTO로 변환해 화면에 보여주거나, API 스펙에 맞추어 내려준다 라고 배웠었는데요. MVC2 프로젝트안에 저장할 때의 ItemSaveForm(dto), 수정할 때의 ItemUpdateForm으로 나누어 각각 저장, 수정할 때 dto로 사용하고 있습니다. 이때, 상품 상세, 상품 수정 등 GetMapping으로 저장된 객체를 불러올 때에 새로운 Dto클래스를 만들어 새로운 Dto 클래스에 바인딩하는 코드로 짜주는 것이 맞나요??
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
프록시 내부 호출 문제에 관한 질문 사항
보통 실무에서는controller ->service(interface) -> repository -> dao^|serviceImpl (service Interface 구현체)이렇게 많이 사용합니다. 제가 개발자로 실무를 하지 않아서 정확하지는 않지만@Configuratiain 을 이용한 클래스에서 구성을 잡고 포인트컷으로 지정된 패키지와 그 하위 *Impl 메서드에 모든 @Transaction 어노테이션이 적용되도록 설정을 했던 것 같습니다.그리고 serviceImpl에서 @Transactional 어노테이션을 사용하지 말라고 가이드가 내려 옵니다. 코딩은public class serviceImpl {public int createMember(MemberVO member) {deleteMember(member);insertMember(member);updateMember(member);} public int deleteMember(MemberVO member) {//비지니스 로직 수행String id = member.getId(); //null 체크 되어 있다고 가정repository.delete(id);}public int insertMember(MemberVO member) {//비지니스 로직 수행repository.insert(member);} public int updateMember(MemberVO member) {//비지니스 로직 수행repository.update(member);}} 그런데 한번도 아키텍처나 업무 공통 단에서 내부 호출에 대한 가이드가 없었습니다.그리고 실제로 내부 호출을 해도 Transaction 처리에 문제가 있지는 않았습니다.그렇다고 AspectJ 의 컴파일러를 이용하는 것 같지도 않고ObjectProvider를 사용하는 것 같지도 않는데 말입니다. 고급편에서도 궁금했지만 DB2편을 다 수강하고 나서 질문을 드립니다 아키텍처 쪽에서 내부 호출에 대한 문제를 모르진 않았을것 같은데통상적으로 어떻게 @Transactional 처리를 하기에 개발자들은 내부 호출 문제에 신경 쓰지 않을까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
build.gradle에러
[질문 내용] ext["hibernate.version"] = "5.6.5.Final" 를 못 읽는것같습니다 뭐가 문제일까요 ??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
findCookie()메서드 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]findCookie() 메서드에서 String cookieName으로 SESSION_COOKIE_NAME = "mySessionId";위의 상수를 받고있고, 그럼 모든 사용자의 cookieName이 다 "mySessionId"인건데 사용자가 달라질때 같은 cookieName인 "mySessionId"로 UUID를 찾는 것이 이해가 가지않습니다.return Arrays.stream(cookies).filter (cookie -> cookie.getName().equals(cookieName)).findAny().orElse(null);위와 같이 return하면 무조건 sessionStore에 첫번째로 저장 된 "mySessionId"의 uuid가 나가지않나요..??
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
querydsl
[질문 내용]안녕하세요 자바 17에 스프링 3이상으로 실습해보고있습니다.처음엔 의존관계 설정을implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" 이렇게 해줬는데 clean만 빌드가 되며 compileJava가 빌드가 안되고 그래들에서 의존관계에 빨간불이 뜨며 persistence를 찾을 수 없다는 에러 메세지가 나왔습니다찾아보던 도중 persistence버전을 3.0.1로 높이면 해결이 된다라는 글을 보고 버전을 올려줬습니다. 그 후 빌드를 해줬더니 jakarta로 import해주었던게 다 javax로 바뀌어있더라고요 그래서 일일히 들어가 다시 jakarta로 바꿔주니까 clean과 compileJava 둘 다 정상적으로 빌드되었습니다.하지만 그래들은 저렇게 아직 빨간불이 뜹니다 이대로 진행해도 되는걸까요 ? 왜 persistance 버전을 높이면 javax로 돌아가는건가요 ?
-
미해결스프링 프레임워크는 내 손에 [스프2탄]
spring Legacy Project에서 MVC 프로젝트가 없습니다. 어떻게 해야하나요?
안녕하세요. 24.03.24일 날 스프2탄을 구매하였습니다. 시작부터 문제가 발생되어서 글 남깁니다. 강사님의 영상을 따라 eGovFrame-4.0.0을 다운로드 하였고 1. 프로젝트를 생성하기위해 Spring Legacy Project 클릭 ---문제 발생 ---- 2.Simple Projects만 보이고 MVC프로젝트가 보이질 않습니다. 구글링을 해보고 시도 하였지만 해결되지 못했습니다. 초보의 입장에서 난감해하고 있습니다. 해결방법과 그따른 영상을 업데이트를 해주실수 있을까요?
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]
나프2탄 51강 서비스계층 구현하기
선생님이 보여주신 화면에서 서비스 인터페이스를 작성하고 자바 클래스를 작성할 때 impl을 하면 add unimplemented method 부분이 나오는데 제가 작성한 화면에서는 나오지 않습니다 이유가 무엇일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
DB연결 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의대로 h2데이터베이스 잘 들어가지는데 빌드하고 실행하면 조회와 멤버 등록에서 오류가 납니다 [2m2024-03-25T10:58:04.317+09:00[0;39m [31mERROR[0;39m [35m10840[0;39m [2m---[0;39m [2m[demo] [nio-8080-exec-5][0;39m [2m[0;39m[36mo.a.c.c.C.[.[.[/].[dispatcherServlet] [0;39m [2m:[0;39m Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalStateException: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection] with root cause org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-224] 오류는 이렇게 납니다. 어떻게 해야 하나요? 강의대로 application.properties도 잘 했고, h2디비 실행도 잘 됩니다. 디비 켜놓고 해도 오류나네요 ㅜㅡ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
java 17을 깔고 세팅도 다 맞췄는데 이런메세지가 떠요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]밑에 무슨 경고문이 뜨고 실행버튼이 여기서는 보이지 않아요 이걸 어떻게 하면 되나요 ㅠㅠ++)build.gradle 을 open as project 로도 해보았습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링통합과-폼 설정
선생님꼐서 선생님꺼 파일 다운받고 form-start 폴더를 form으로 바꾸고 임포트하시라고하셨는데이거 자바 버전바꿔야하나요?자꾸 오류가나서.. 아니면 굳이 바꾸지않고 제가 MVC1편에서 만들었던 프로젝트로 진행하는건 안될까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트실행중 테스트는 잘 되는데 오류가 한 줄 계속 발생합니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended이 오류는 무엇인가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
model.addAttribute
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이미지와 같이 model.addAttribute("data","hello!!"); 입력했을 때, 아래와 같은 오류가 발생합니다.Cannot resolve method 'addAttribute' in 'Model'
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
테스트가 올바르게 되지 않는 것 같아요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemoryMemberRepository; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; class MemberServiceTest { MemberService memberService; MemoryMemberRepository memberRepository; @BeforeEach public void beforeEach() { memberRepository = new MemoryMemberRepository(); memberService = new MemberService(memberRepository); } @AfterEach public void afterEach() { memberRepository.clearStore(); } @Test public void 회원가입() throws Exception { //Given Member member = new Member(); member.setName("hello"); //When Long saveId = memberService.join(member); //Then Member findMember = memberRepository.findById(saveId).get(); assertEquals(member.getName(), findMember.getName()); } @Test public void 중복_회원_예외() throws Exception { //Given Member member1 = new Member(); member1.setName("spring"); Member member2 = new Member(); member2.setName("spring"); //When memberService.join(member1); IllegalStateException e = assertThrows(IllegalStateException.class, () -> memberService.join(member2));//예외가 발생해야 한다. assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); } }강의를 따라하다가 좀 잘 안되서 pdf내용을 그대로 긁어왔는데 import org.junit.jupiter.api.AfterEach;가 빠져있더라구요. 그것만 수정하면 될 줄 알았는데, get()과 assertThrows에서 문제가 발생하고있는것 같습니다 왜그럴까요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
save시 500에러가 뜹니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 4분28초 부분까지 내용 따라하는데 코드 다른것도 없는데 상품 등록을 누르면 500에러가 발생합니다. @PostMapping("/add") public String save(@RequestParam String itemName, @RequestParam int price, @RequestParam Integer quantity, Model model) { Item item = new Item(); item.setItemName(itemName); item.setPrice(price); item.setQuantity(quantity); itemRepository.save(item); model.addAttribute("item", item); return "basic/item"; }2024-03-24T23:35:00.277+09:00 ERROR 924 --- [item-service] [nio-8080-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag.] with root cause java.lang.IllegalArgumentException찾아보려 해도 이유를 모르겠습니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
dto 위치
만약 규모가 작은 프로젝트인 경우 현업에서 controller, service, vo 이런식으로 구조를 나누고 그 안에 비지니스 로직기준해서 폴더를 나누어 주는 경우도 있는데, 그 경우에는 말씀하셨던 비지니스따라 class파일을 만드는것과 크게 구조적으로 차이가 클까요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Validator의 supports 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]supports에서 주석 처리된Item.class.isAssignableFrom(aClass.getClass());로 실행해보니 Validator를 추가하는 부분에서 에러가 발생했습니다. 그래서 return aClass.isAssignableFrom(Item.class)로 바꾸니 정상 동작하더라고요. 왜 aClass와 Item.class의 순서를 바꿨을 때 정상 동작하는지 잘 모르겠어서 질문드립니다. Item.class.isAssignableFrom(aClass.getClass()) 이렇게 사용해야지 aClass(파라미터로 전달받는 객체)가 Item 클래스의 자식일 때도 true로 반환하지 않나요?