묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
2부 마지막 리팩토링 3:30쯤
2부 마지막 리팩토링 0:49에서, "service인데 controller.port를 잘못 참조했다"라고 하셨는데요.이를 수정하고 나신 후인 3:30쯤에서도, 여전히service(의 UserServiceImpl)가 controller(의 Port의 UserService)에 의존하는 상황이지 않나요?제 생각엔 Port 자체를 controller 밖으로 꺼내는 게 의미상 더 좋지 않을까 싶은데 어떻게 생각하시나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
findAll
테스트 끝나고나서 데이터를 클리어해주는 방법을 설명하시기 전에 findAll()함수에서 오류가 나타나야 하는데 전 왜.. 다 초록불이 뜰까요package com.example.hello_spring.repository; import com.example.hello_spring.domain.Member; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import java.util.List; import java.util.Optional; import static org.assertj.core.api.Assertions.*; public class MemoryMemberRepositoryTest { MemberRepository repository = new MemoryMemberRepository(); @Test //실행할 수 있게함 public void save() { Member member = new Member(); member.setName("spring"); repository.save(member); Member result = repository.findById(member.getId()).get(); //Assertions.assertEquals(result, member); // result와 member가 같은지 확인 assertThat(member).isEqualTo(result); } @Test public void findByName(){ Member member1 = new Member(); member1.setName("spring1"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); Member result = repository.findByName("spring1").get(); assertThat(result).isEqualTo(member1); } @Test public void findAll(){ Member member1 = new Member(); member1.setName("spring"); repository.save(member1); Member member2 = new Member(); member2.setName("spring2"); repository.save(member2); List<Member> result = repository.findAll(); assertThat(result.size()).isEqualTo(2); } }
-
미해결스프링 핵심 원리 - 기본편
조회빈이2개일때 찾는거 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.싱글 매칭이 2개있다고 뜨네요
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
사소한것같지만 질문 ..
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.@Override public Member save(Member member) { String sql = "insert into member(member_id, money) values(?,?)"; template.update(sql,member.getMemberId(),member.getMoney()); return member; }@Override public void update(String memberId, int money){ String sql = "update member set money = ? where member_id=?"; template.update(sql, money, memberId); }위에 2개가 강의 내용인데, update()도 초반 코드설계를 @Override public Member findById(Member member){ String sql = "select * from member where member_id = ?"; return template.queryForObject(sql,memberRowMapper(),member.getMemberId()); }이런식으로 Member를 받아와서 설계하는건 좋지않은방법인가요 ? 어차피 필요한건 member 객체 전체가 아니라 member_id하나만 필요하기때문에 ? 강의를 들을때는 이런식으로 설계하면 되는구나 하고 이해는 가는데 혼자서 메서드 설계할때 어떤식으로 접근해서 설계하는게 이상적인지 아직 어렵네요
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
login프로젝트
안녕하세요 로그인 프로젝트 따라하며 공부하는데 회원가입html로 이동해야하는데 로그인html로 이동하더라고요url경로 보니까http://localhost:8081/login?redirectURL=/members/add이렇게 뜨는데 home화면에서 분명 회원가입 html로 가게 설정해뒀는데 왜 회원가입을 누르면 리다이렉트 되는지 모르겠습니다..답변 해주시면 감사하겠습니다!https://drive.google.com/file/d/1FdVqOIvDoSXP-tNytaxKZ_v7YOLW6gP6/view?usp=drive_link
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
/error-500 호출 시 html 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]교재에 나온대로 application-properties를 설정하였는데 왜 /error-500으로 호출하면 /error-ex처럼 나오지 않는건가요 ? 밑에 사진은 application-properties입니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
/error-500을 호출하였는데 postHandle이 호출되는 이유?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 선생님 아주 유익한 강의 잘 듣고 있는 수강생 입니다 ! 항상 감사합니다! 강의에서 인터셉터 중 postHandle은 컨트롤러 또는 다른 비즈니스 로직에서 예외가 발생한 경우 postHandle이 호출되지 않는다고 하셨습니다.근데 위 사진을 보시면 postHandle이 호출되고 로그가 나와있습니다. /error-ex는 postHandle이 호출되지 않는 것을 확인했는데 /error-404, /error-500은 postHandle이 호출됩니다.이유가 궁금합니다 !!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
update 메서드의 매개변수 작성 스타일?
// a. public void update( String password, String nickname) { this.password = password; this.nickname = nickname; } // b. public void update(UpdateContent content) { this.password = content.getPassword; this.nickname = content.getNickname; }안녕하세요 update 방식에 대해 궁금한점이 생겼는데, Member 엔터티 클래스 내부에 위와 같이 update 메서드를 둔다고 했을 때, 매개변수의 개수가 많다고 가정하면, 별도의 클래스를 만들어서 b.처럼 전송해주는 방식을 사용해도 괜찮을까요? 엔터티 클래스와 별도의 클래스가 결합?되는 느낌이라 찝찝한데, a.와 b.중 좀 더 정석적인 방식이 있는지 궁금합니다!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
서버가 이중화 되었을때 MemberService.java join()과 관련된 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]MemberService.java 내에서 join() 함수입니다.@Transactional public Long join(Member member) { validateDuplicateMember(member); //중복회원 검증 memberRepository.save(member); return member.getId(); }이때 member를 저장하면 persist하게 되고, commit까지는 일어나지 않는다고 이해하고 있습니다. db에 저장이 되어 있지 않은 상태라면 이중화 시 각 was에 jpa persist된 값이 있을 것 같은데, validateDuplicateMember을 호출할 때 name 컬럼에 unique 제약조건을 줘서 저장이 안되게 한다고 하더라도. validateDuplicateMember는 통과가 되고, 아래 save에서 오류가 나게될 것 같은데요. 제가 생각하는 로직이 맞는지 궁금합니다. 맞다면 여기에 대한 코드 보완이 따로 필요할 것으로 보여서요. (강의 보완이 아니라, 제가 나중에 코딩할 때 보완을 하려고 합니다:) )
-
미해결스프링 부트 - 핵심 원리와 활용
영한님 좀 더 실무적인 메트릭 수집하는 방법과 운영환경이 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]1. 멀티스레드에 안전하게 처리하기 위해 Atomic.. 을 사용하셨는데, 실무에서는 데이터베이스같은곳에서 정보를 받아와야 하는데, 프로메테우스에서 데이터베이스의 테이블을 접근중일때 READ가 발생할텐데, 현재 유저한테 서비스되는 클라이언트단에서 READ, WRITE가 발생할때 lock이 발생하는 경우는 없나요?2. 1번 질문과 이어서.. 아래와 같은 곳에서 정보를 수집하는데 동시성/데드락/경합 문제가 발생하지는 않나요?아래에서 정보를 가져올때는 어떻게 하는게 best practice인지 궁금합니다- State DB(Mysql, postgresql, mongodb)- InMemory DB(Redis)- Kafka Topics3. 현재는 설치형으로 강의를 진행해주셨는데, docker나 k8s 환경에서 수집을 한다면 같은 네트워크에도 묶여야되는 등 신경써야 할 부분이 많은 것 같은데요.. 베어메탈에서 wget 등으로 받아서 띄우는거 말고 컨테이너 환경에서는 어떻게 하는지 또 궁금합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
WebServer , WebApplicationServer, Server 관련 질문
Server = 하드웨어 = OS가 없는 PC서버의 역할은 하드웨어 재원을 제공한다로 이해하고 있습니다. 웹서버는 80포트를 열어줌,도메인설정, 정적 컨텐츠 서빙, 로드밸런싱, SSL인증서 설치... 등등의 역할WAS는 동적 콘텐츠 생성, HTTP 메서드 ,비지니스 로직 , 세션처리...등등의 역할 웹서버 , WAS 둘 다 Server 위에서 동작하는 소프트웨어로 서버는 하드웨어 재원을 제공하며서버 위에서 돌아가는 소프트웨어인 웹서버,WAS는 위에 명시된 역할을 수행. 예를들어 Nginx , Tomcat 사용하고 있으면 실제로 서버가 2개 띄워져있어야 함 SpringBoot는 WAS로 톰켓을 내장 그럼 우리가 배포를 한다고 했을때 서버에 SpringBoot Application을 올리고 boot가 Tomcat을 내장하여 WAS로 사용하는 구조간략히 말하면 "xx서버에는 SpringBoot 올라가있어" 라고 말할 수 있음 이렇게 정리를 하였는데 혹시 잘못 이해한 부분이 있을까요?
-
미해결토비의 스프링 6 - 이해와 원리
섹션5 - DataAccessException과 예외 추상화 질문 있습니다.
문제)DataClient 에서 Hibernate 의 ConstraintViolationException 이 DataAccessException 으로 던져지지 않았습니다.(발생한 예외 - 예상한 기댓값이 아님)Exception in thread "main" org.hibernate.exception.ConstraintViolationException: could not execute statement [Unique index or primary key violation: "PUBLIC.UK43EGXXCIQR9NCGMXBDX2AVI8N_INDEX_8 ON PUBLIC.ORDERS(NO NULLS FIRST) VALUES ( /* 1 */ '100' )"; SQL statement:원인)Order Object 에서 @GeneratedValue 의 strategy 를 IDENTITY 로 작성해서 발생한 문제였습니다.@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;(변경된 예외 - 예상 기댓값으로 동작 성공)Exception in thread "main" org.springframework.dao.DataIntegrityViolationException: could not execute statement [Unique index or primary key violation: "PUBLIC.UK43EGXXCIQR9NCGMXBDX2AVI8N_INDEX_8 ON PUBLIC.ORDERS(NO NULLS FIRST) VALUES ( /* 1 */ '100' )"; SQL statement:질문사항)안녕하세요 토비님. 위에 작성된 문제점을 발견했고 해결했음에도 JPA를 학습해보지 않아서 그런지.. 위 문제가 발생한 이유를 모르겠습니다.대충 생각하기에는 IDENTITY strategy가 DB로 권한을 넘기기 때문에 EntityManager 의 영속성 컨텍스트에서 발생한 문제점이 아니라서 DataAccessException Layer에서 관리하지 못하는 것인가..? 라는 생각은 드는데 혹시 맞을까요?비슷한 상황을 만들어보려고 IDENTITY strategy를 설정하지 않고 OrderRepository 에서 flush 를 해본 결과, 예상대로 ConstraintViolationException 가 뜨긴 하는데 ID가 null 이라서 DB에서 직접 접근 후 저장하는 작업을 한 번 해서 그럴까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
같은 세션을 사용하기 위해서 동일한 커넥션을 사용한다고 했는데
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]그러면 영한님이 h2데이터베이스로 트랜잭션 설명하실 때 창을 2개 띄워놓고 하셨잖아요 그 때도 2개의 창이 같은 세션을 사용하고 있는건가요?
-
미해결스프링 핵심 원리 - 기본편
Provider 작동 방식
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]https://www.inflearn.com/questions/1198720/autowired%EB%A5%BC-%EC%93%B4-%EC%9D%B4%EC%9C%A0해당 링크를 보면 @Autowired가 PrototypeBean을 주입 받는다고 답변 주셨는데 PrototypeBean은 단지 타입 인자를 지정해줬을 뿐이고, 주입 받는건 ObjectProvider 아닌가요??@lazy를 사용한 지연 생성 빈이나 prototype 빈은 클라이언트가 요청하기 전까지 스프링 컨테이너에는 빈 객체는 없을텐데 그렇다면 스프링 컨테이너에 빈이 등록된다고 하는 것은 꼭 빈 객체가 생성되지 않더라도 타입 즉, 이름만 등록되어도 컨테이너에 등록된다고 하는 것인가요? -> key(빈 이름):value(빈 객체)로 이루어져 있을 때 value == null이고 key 값만 존재해도 '컨테이너에 빈을 등록한다' 라고 하는 것이 맞는지 궁금합니다.만약 2번이 맞다면 ObjectProvider는 인자로 받은 타입을 스프링 컨테이너에서 찾고, 그 후에 스프링 컨테이너가 생성한 빈 객체를 반환하는 것인가요?
-
미해결스프링 핵심 원리 - 기본편
CoreAppicationTests 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.4:50 에서 java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null) at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:85) at jdk.proxy2/jdk.proxy2.$Proxy46.getHandler(Unknown Source) at org.mockito.internal.util.MockUtil.getMockHandlerOrNull(MockUtil.java:158) at org.mockito.internal.util.MockUtil.isMock(MockUtil.java:147) at org.mockito.internal.util.DefaultMockingDetails.isMock(DefaultMockingDetails.java:32) at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:106) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.beforeTestMethod(ResetMocksTestExecutionListener.java:60) at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:320) at org.springframework.test.context.junit.jupiter.SpringExtension.beforeEach(SpringExtension.java:240) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Suppressed: java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null) at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:85) at jdk.proxy2/jdk.proxy2.$Proxy46.getHandler(Unknown Source) at org.mockito.internal.util.MockUtil.getMockHandlerOrNull(MockUtil.java:158) at org.mockito.internal.util.MockUtil.isMock(MockUtil.java:147) at org.mockito.internal.util.DefaultMockingDetails.isMock(DefaultMockingDetails.java:32) at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:106) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.afterTestMethod(ResetMocksTestExecutionListener.java:67) at org.springframework.test.context.TestContextManager.afterTestMethod(TestContextManager.java:487) at org.springframework.test.context.junit.jupiter.SpringExtension.afterEach(SpringExtension.java:278) ... 2 more Caused by: java.lang.IllegalStateException: Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:105) at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.getDefaultPlugin(DefaultMockitoPlugins.java:79) at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:75) at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:49) at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:29) at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:26) at org.mockito.internal.MockitoCore.<clinit>(MockitoCore.java:71) at org.mockito.Mockito.<clinit>(Mockito.java:1683) at org.springframework.boot.test.mock.mockito.MockReset.get(MockReset.java:105) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:85) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.resetMocks(ResetMocksTestExecutionListener.java:73) at org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener.beforeTestMethod(ResetMocksTestExecutionListener.java:60) at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:320) at org.springframework.test.context.junit.jupiter.SpringExtension.beforeEach(SpringExtension.java:240) ... 2 more Caused by: java.lang.reflect.InvocationTargetException at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480) at org.mockito.internal.configuration.plugins.DefaultMockitoPlugins.create(DefaultMockitoPlugins.java:103) ... 15 more Caused by: org.mockito.exceptions.base.MockitoInitializationException: Could not initialize inline Byte Buddy mock maker.It appears as if your JDK does not supply a working agent attachment mechanism.Java : 17JVM vendor name : Amazon.com Inc.JVM vendor version : 17.0.11+9-LTSJVM name : OpenJDK 64-Bit Server VMJVM version : 17.0.11+9-LTSJVM info : mixed mode, sharingOS name : Windows 11OS version : 10.0 at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<init>(InlineDelegateByteBuddyMockMaker.java:260) at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:23) ... 18 more Caused by: java.lang.IllegalArgumentException at java.instrument/sun.instrument.InstrumentationImpl.appendToClassLoaderSearch0(Native Method) at java.instrument/sun.instrument.InstrumentationImpl.appendToBootstrapClassLoaderSearch(InstrumentationImpl.java:220) at org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<clinit>(InlineDelegateByteBuddyMockMaker.java:177) ... 19 moreCaused by: [CIRCULAR REFERENCE: java.lang.IllegalStateException: Internal problem occurred, please report it. Mockito is unable to load the default implementation of class that is a part of Mockito distribution. Failed to load interface org.mockito.plugins.MockMaker] 이러한 에러가 생깁니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
필터 관련
이전 스프링 MVC 1편에서 스프링 부트를 실행하면 내장 톰켓 서버를 내부에 띄워 서블릿 컨테이너를 생성한다고 배웠는데요. 이 때, 서블릿 컨테이너가 생성되면서 필터 초기화 메서드 역시 실행된다고 볼 수 있을까요? 또한 종료 시점 역시도 위와 같이 스프링 부트를 종료하면 서블릿 컨테이너가 종료되면서 필터 종료 메서드가 호출이 된다고 이해하는 것이 맞을까요?
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
@PostMapping("/book")같은 걸 html에 연결하는 건 어떻게 하는 건가요
"book", "user"이런 거 연결하는 부분은 어떻게 하는 건지 항상 궁금했습니다ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
에러가 발생하는 이유가 궁금합니다.
안녕하세요. 7강까지 수강한 학생입니다. Test코드를 실행시 왜 이런 오류가 발생하는지 궁금합니다. 에러 메시지는 아래와 같습니다Coreapplication:15:37:49.791 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [hello.core.CoreApplicationTests]: CoreApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.15:37:49.833 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration hello.core.CoreApplication for test class hello.core.CoreApplicationTests. ____ _/\\ / ___'_ __ (_)_ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v3.3.1)2024-07-16T15:37:50.184+09:00 INFO 21812 --- [core] [ main] hello.core.CoreApplicationTests : Starting CoreApplicationTests using Java 17.0.11 with PID 21812 (started by seongmin in C:\core\core)2024-07-16T15:37:50.185+09:00 INFO 21812 --- [core] [ main] hello.core.CoreApplicationTests : No active profile set, falling back to 1 default profile: "default"2024-07-16T15:37:50.557+09:00 WARN 21812 --- [core] [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [C:\core\core\out\production\classes\hello\core\member\MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepositoy' available: expected single matching bean but found 2: memoryMemberRespositoy,memberRepository2024-07-16T15:37:50.563+09:00 INFO 21812 --- [core] [ main] .s.b.a.l.ConditionEvaluationReportLogger :Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.2024-07-16T15:37:50.594+09:00 ERROR 21812 --- [core] [ main] o.s.b.d.LoggingFailureAnalysisReporter :***************************APPLICATION FAILED TO START***************************Description:Parameter 0 of constructor in hello.core.member.MemberServiceImpl required a single bean, but 2 were found:- memoryMemberRespositoy: defined in file [C:\core\core\out\production\classes\hello\core\member\MemoryMemberRespositoy.class]- memberRepository: defined by method 'memberRepository' in class path resource [hello/core/AppConfig.class]This may be due to missing parameter name informationAction:Consider marking one of the beans as @Primary, updating the consumer to accept multiple beans, or using @Qualifier to identify the bean that should be consumedEnsure that your compiler is configured to use the '-parameters' flag.You may need to update both your build tool settings as well as your IDE.(See https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-6.x#parameter-name-retention) contextLoad: java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@6fd12c5 testClass = hello.core.CoreApplicationTests, locations = [], classes = [hello.core.CoreApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@64f857e7, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@3d6300e8, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@7927bd9f, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@3d3f761a, org.springframework.boot.test.context.SpringBootTestAnnotation@c6ebefee], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null]at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180)at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130)at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:142)at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:98)at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260)at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163)at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
컴퓨터를 재시작 했더니 작동을 안 하네요
인텔리제이로 실행했을때도 서버내부 오류라 뜨고 aws로 구동했을 때도 그냥 서버 연결이 안 됩니다ㅠㅠ aws에 확인해보면 git,sql,java다 설치되어있었고 44강부터 차근차근 다시 해봐도 똑같네요 왜 그럴까요 ㅠㅠ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
섹션 6 진행 도중 오류
강의자료를 기반으로 코드를 작성하여 왔는데, 실행하는 것에는 문제는 없으나, 회원 목록 조회 기능에서 whitelabel error page가 발생하였습니다. 어떻게 해야하나요?github 저장소: https://github.com/devcjw/Spring-Boot-Study