묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드하려는데 오류가 떠요
cmd에서 ./gradlew /gradlew gradlew gradlew build 다 쳐봤는데내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라고 나오거나ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk-11\binPlease set the JAVA_HOME variable in your environment to match thelocation of your Java installation. 라고 떠요..그리고 버전 확인해봤는데 저렇게 나오는 게 맞나요?다른 분들 질문한거 웬만한거 다봤는데 여기서 더이상 어떻게 진행해야 될 지 모르겠어서 막막하네요ㅠㅠ
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
yml설정 질문입니다.
[질문 내용]회원 목록 조회 강의수강중입니다.어플리케이션을 재시작 할때마다 DB에 테이블이 재생성이 되면서기존 데이터가 사라집니다.yml에 ddl-auto : create설정 때문인 것 같은데,none, 이나 update로 설정하면 테이블의 재생성은 방지가 되는데,최초 구동 시 JPA가 테이블을 생성하는것도 막히는건지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
@Transactional에 대한 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요.강의 jpa부분을듣고 실습을 따라하다 다른방법이 있는지 문의드립니다.MemberServiceIntegrationTest 에서@Transactional 를 사용하지않으면 데이터 세개가 들어감과 동시에회원가입 메소드와 중복_회원_예외()의 함수를 실행하면 데이터가 들어가게 됩니다.이런 오류가 나오는데..제가 궁금한것은 @Transactional 를 사용하지않고트랜젝션? 처리하는 방법이 있을까요?방법이 존재한다면 어떤방법으로 처리하면..@Transactional 유사 처리가 되는지 궁금합니다.강의를 보고 또 보고하면서도많이 배우고있습니다.감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ModelView 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. ModelView를 사용하는 이유는 서블릿에 대한 종속성에서 벗어나기 위해 사용하는걸로 이해하면 될까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원목록 연결 오류
순수 JDBC 강의를 따라가며 실행해보았는데 디버깅 오류는 없으나 페이지 실행시 이름등록에서 등록 버튼 클릭후, 회원목록 클릭 후 연결되지 않는 에러가 발생합니다.Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Sat Mar 04 13:46:34 KST 2023There was an unexpected error (type=Internal Server Error, status=500). 코드 링크 올려드립니다. 감사합니다.링크 https://drive.google.com/file/d/1b8PmvEY2uQqk3TCS01tPzKYRXbq7-tGY/view?usp=share_link
-
미해결스프링 핵심 원리 - 기본편
컴포넌트 스캔의 대상 질문드립니다.
BeanA에 달려있는 @MyIncludeComponent의 경우 @Component 어노테이션이 붙어있지 않음에도 어떻게 컴포넌트 스캔의 대상이 되어 빈으로 등록되는 것인지 궁금합니다.혹시 includeFilters에 지정된 클래스는 @Component가 없어도 자동으로 빈으로 등록이 되는 것일까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 코드 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.id to load is required for loading; nested exception is java.lang.IllegalArgumentException: id to load is required for loading 오류 발생합니다 코드:package jpabook.jpashop.service; import jpabook.jpashop.domain.Address; import jpabook.jpashop.domain.Member; import jpabook.jpashop.domain.Order; import jpabook.jpashop.domain.OrderStatus; import jpabook.jpashop.domain.item.Book; import jpabook.jpashop.domain.item.Item; import jpabook.jpashop.repository.OrderRepository; import org.junit.Assert; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import javax.persistence.EntityManager; import static org.junit.Assert.*; @RunWith(SpringRunner.class) @SpringBootTest @Transactional class OrderServiceTest { @Autowired EntityManager em; @Autowired OrderService orderService; @Autowired OrderRepository orderRepository; @Test public void 상품주문() throws Exception{ Member member=new Member(); member.setName("회원1"); member.setAddress(new Address("서울","강가","123-123")); em.persist(member); Book book=new Book(); book.setName("시골 JPA"); book.setPrice(10000); book.setStockQuantity(10); System.out.println(book.getId()); em.persist(book); int orderCount=2; Long orderId = orderService.order(member.getId(), book.getId(), orderCount); Order getOrder = orderRepository.findOne(orderId); assertEquals("상품 주문시 상태는 ORDER", OrderStatus.ORDER,getOrder.getStatus()); } @Test public void 주문취소() throws Exception{ } @Test public void 상품주문_재고수량초과() throws Exception{ } }
-
미해결스프링 부트 - 핵심 원리와 활용
내장톰캣 서블릿 강의를 듣는 도중 문제가 생겼습니다.
[질문 내용] 내장톰캣 서블릿 강의 코드를 따라 작성하고 실행하는 도중 아래와 같은 문제가 발생했습니다. 제가 따로 작성한 코드도 없고 그냥 파일생성과 붙여넣기만 했는데.. 실행이 안되네요.. Gradle 설정 문제인가 싶어 Setting에 default 를 Intellij 로 바꾼 뒤 다시 실행했더니 아래와 같은 에러 메시지가 떴습니다. 그리고 영한님과 다르게 main 실행 후 디랙토리에 아래 사진과 같은 패키지가 생성되었습니다. 문제가 무엇일까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
데이터 정합성
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.회원은 저장되지만, 회원 이력 로그는 롤백된다. 따라서 데이터 정합성에 문제가 발생할 수 있다(트랜잭션 전파 활용2 - 커밋, 롤백 강의 中) 라고 하셨는데 지금 이 강의에서도 결국엔 회원은 저장되고 회원 이력 로그는 롤백되니까 데이터 정합성이 해결된게 아닌가요..?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
7강 Static inner class 사용 이유
7강에서 @GetMapping("hello-api") @ResponseBody public Hello HelloApi(@RequestParam("name") String name){ Hello hello = new Hello(); hello.setName(name); return hello; } static class Hello{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }코드 중 궁금한 사항이 있어 문의드립니다.static inner class를 쓰는 이유 알 수 있을까요??그냥 innerclass와 접근 범위가 다르다는 것밖에 이해가 어려워서 조금만 더 잘 알고 싶습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
logging
로깅에서 이거 자체가 안 나오는데 무엇 때문일까요? 전 이렇게만 나옵니다ㅜㅜyml 복붙했는데도 안됩니다ㅜ
-
미해결
Unit Testing 을 위해서 Repository를 Mock했는데 먹지를 않습니다.
안녕하세요.Unit Testing 을 처음 해보는데 일단 Service의 로직을 먼저 테스트하기 위해 Repository를 Mock해서 Service 내에 @InsertMocks 어노테이션을 걸어서 when 조건을 삽입했습니다.이후 Service 내에서 findById(1L)을 실행하면 when문에서 걸어준대로 User 객체를 반환해야 한다고 생각했으나, 계속 Optional이 비어있다고 나오네요.그래서 Service로 들어간것이 아니라 직접 Test 내에서 Repository를 불러본 결과 Mock가 문제없이 잘 되고 있었습니다. 제가 Configuration 한 것에 문제가 있는지 고견 부탁드립니다.UserServiceTest import com.politicia.coreservice.domain.User; import com.politicia.coreservice.dto.request.UserRequestDto; import com.politicia.coreservice.dto.response.UserResponseDto; import com.politicia.coreservice.repository.UserRepository; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.junit.jupiter.MockitoExtension; import java.util.ArrayList; import java.util.List; import java.util.Optional; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) class UserServiceTest { @InjectMocks UserServiceImpl userService; @Mock private UserRepository userRepository; @BeforeEach public void setUp() { MockitoAnnotations.initMocks(this); } @Test void testSignUp() { //given UserRequestDto newUser = UserRequestDto.builder() .name("newUser") .profilePic("https://profile.pic") .nationality("korea") .build(); User expectedUser = User.builder() .id(1L) .name("newUser") .nationality("korea") .profilePic("https://profile.pic") .build(); UserResponseDto expectedUserDto = UserResponseDto.builder() .id(1L) .name("newUser") .nationality("korea") .profilePic("https://profile.pic") .createdAt(expectedUser.getCreatedAt()) .updatedAt(expectedUser.getUpdatedAt()) .build(); when(userRepository.save(any(User.class))).thenReturn(expectedUser); //when UserResponseDto actualUser = userService.createUser(newUser); // Verify assertEquals(expectedUserDto, actualUser); } @Test void testGetUser() { //given User user = User.builder() .id(1L) .name("user") .nationality("korea") .profilePic("profilePic") .build(); List<User> userList = new ArrayList<>(); userList.add(user); when(userRepository.findById(any(Long.class))).thenReturn(Optional.of(user)); UserResponseDto expectedUserDto = UserResponseDto.builder() .id(1L) .name("user") .nationality("korea") .profilePic("profilePic") .createdAt(user.getCreatedAt()) .updatedAt(user.getUpdatedAt()) .build(); //when UserResponseDto actualUserDto = userService.getUser(1L); //then Assertions.assertEquals(actualUserDto, expectedUserDto); } } UserServiceImplpackage com.politicia.coreservice.service; import com.politicia.coreservice.domain.User; import com.politicia.coreservice.dto.request.UserRequestDto; import com.politicia.coreservice.dto.response.UserResponseDto; import com.politicia.coreservice.repository.UserRepository; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service @RequiredArgsConstructor public class UserServiceImpl implements UserService { private final UserRepository userRepository; @Override public UserResponseDto createUser(UserRequestDto userRequestDto) { User user = userRequestDto.toEntity(); User newUser = userRepository.save(user); return UserResponseDto.builder() .id(newUser.getId()) .name(newUser.getName()) .nationality(newUser.getNationality()) .profilePic(newUser.getProfilePic()) .createdAt(newUser.getCreatedAt()) .updatedAt(newUser.getUpdatedAt()) .build(); } @Override public UserResponseDto getUser(Long userId) { User foundUser = userRepository.findById(userId).get(); return UserResponseDto.builder() .id(foundUser.getId()) .name(foundUser.getName()) .nationality(foundUser.getNationality()) .profilePic(foundUser.getProfilePic()) .createdAt(foundUser.getCreatedAt()) .updatedAt(foundUser.getUpdatedAt()) .build(); } }에러문구
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
select ~ for update 락
안녕하세요 좋은 강의 항상 감사합니다.해당 강의에서 조회 락을 위해서 세션1에서 select ~ for update 을 사용하잖아요? 해당 쿼리를 사용해서 lock을 얻은 상태인데요.그런데 조회 중에 세션1(세션2 말고) 에서 바로 update 문을 날리게 된다면 바로 수정이 이루어지는데, 위 쿼리를 통해서 lock을 얻은 것은 update문을 날리게 되면 자동으로 반납이 됨과 동시에 update 문이 실행이 되는 것인가요? 감사합니다.
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
SET LOCK_TIMEOUT 10000;
안녕하세요 좋은 강의 항상 감사합니다. 해당 강의에서 2번째 세션에서만 SET LOCK_TIMEOUT 10000; 을 실행하는데, 락 타임아웃은 세션마다 다르게 설정을 할 수가 있는 것인가요?실습에서 SET LOCK_TIMEOUT 10000; 명령어만 세션1로 옮겨서 (순서, query 다 그대로 세션1, 세션2 각각 다 수행) 실행하니 같은 에러가 발생하는데요. 그렇다면 세션마다 설정하는 것이 아니라 더 큰 개념인 DB에 설정하는 것이라고 볼 수 있는, h2 시간이 정확하지 않아 단정짓기가 좀 어렵네요. 답변 미리 감사드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
localhost:8080/hello Whitelabel Error Page 오류
안녕하세요 강사님 다름이 아니고 강의 초반에 나오는localhost:8080/hello 를 입력했을때 콘솔창에도 HelloServlet.service가 나타나지 않고 페이지도 여전히 Whitelabel Error Page 가 나타납니다.아래 비슷한 질문들의 해결방법은 모두 실행해 보았습니다!먼저 저의 intelliJ 설정을 말씀드리자면1.war 설정2.버전 3.0.33.jdk17 사용그리고 제가 작성한 코드입니다. ServletApplicationServletInitializerHelloServlet 혹시 몰라 패키지 사진도 올리겠습니다.어플실행시 콘솔창 화면입니다.(아무것도 출력되지 않습니다.)+추가해결방법으로 OMG서포터즈님의 파일 다운로드 후 코드 복붙을 해도 해결이 되지 않고몇몇 학생들의 해결방법으로 jdk17을 correcto-11로 변경하면 해결된다고 하였지만 이도 오류로 이어집니다.
-
미해결토비의 스프링 부트 - 이해와 원리
학습 테스트 작성 시 정적 클래스 관련질문
안녕하세요.강의 잘 보고 있는 수강생 입니다.@Configuration과 proxyBeanMethods 강의를 듣고 실습하던 도중 질문이 있습니다. Bean1, Bean2, Common, MyConfig 클래스들을 Static클래스로 만들어야 정상적인 테스트가 가능한것을 확인했는데요. 해당 클래스들을 정적 클래스가 아닌 내부 클래스로 작성하니 적절한 빈타입을 찾을 수 없다라는 에러메시지가 표출되었습니다. 이상해서 해당 클래스들을 별도의 java파일로 작성하니 문제없이 정상동작하는것을 확인하였는데요. 왜 내부클래스 작성 시 정적 클래스로 만들어야 동작하는지 이유를 잘 모르겠습니다. 감사합니다.
-
미해결스프링 핵심 원리 - 고급편
포인트컷과 어드바이스의 관계를 다음과 같이 이해하면 될까요?
프록시대리자를 통칭디자인 패턴프록시 패턴접근 제어캐싱(Caching), 지연 로딩(Lazy Loading)검증(Valid), 인증(Auth)데코레이터 패턴부가 기능로깅(Log)컨버터(Convertor), 포맷터(Formatter)스프링 프록시포인트 컷검증(Filter)만 담당어드바이스검증 이외의 모든 로직을 담당데코레이터 패턴 + 프록시 패턴(캐싱, 지연 로딩)어드바이저포인트 컷 1개 + 어드바이스 1개의 묶음위와 같이 이해하는게 맞게 이해하고 있는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
mysql 1064에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]h2말고 기존 mysql을 설치한게있어 heidisql을 이용하여 강의자료 코드 복붙하였습니다. 계속 1064 신택스 에러가 떠서 찾아봐도 해결이 되지않아 직접 생성했는데 아래처럼 해도 상관없나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
getter setter 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 마지막 8분 22초에서 System.out.println 으로 member의 getName을 찍어서 확인하는데 Form html에서 input name을 name="name"이 아닌name="asd"로 변경후 Form class에서도 private String name을 private String asd로 바꾸고getter에서 return도 name->asd로 변경했습니다이때 메서드명은 getName() 그대로 남겼는데 sout(시스템아웃프린트)로 찍어보니까 null이 뜹니다.메서드명을 getAsd()로 바꾸니까 정상적으로 작동이 되구요 게터와 세터 메서드명을 꼭 변수의 이름과 맞춰야하는건가요? 이유가뭔가요?
-
해결됨실무 환경 그대로 주문게시판 만들기 웹개발 기초 마스터
onload 이벤트 넥사크로 로컬 확인 오류
안녕하세요, onload 이벤트 구현하면서 주문상태 받아오는 데이터 사이클 만들고 넥사크로에서 실행시켰는데 주문상태에는 나오는게 없고 밑에 콘솔창처럼 생긴 곳에Nexacro (15708)> CacheLevel : noneLocal Web Server> [Error] The File doesn't exist : "file://C:/Dev/eclipse-workspace/orderBoard/src/main/webapp/packageN/none"Local Web Server> [Error] 404 Not Found : 127.0.0.1:4099 "GET /none HTTP/1.1" Local Web Server> [Error] The File doesn't exist : "file://C:/Dev/eclipse-workspace/orderBoard/src/main/webapp/packageN/none"Local Web Server> [Error] 404 Not Found : 127.0.0.1:4099 "GET /none HTTP/1.1" Nexacro (15708)> UD 14:55:52:071 gfnCallback : SvcID>>selectCommonCode, errorCode>>0, errorMsg>>SUCCESS, isAsync>>true, sStartDate>>2023-02-03 14:55:51 922, sEndDate>>2023-02-03 14:55:52 71, nElapseTime>>0.149이렇게 나오는데요ㅠㅠㅠ 무슨 문제가 있는걸까요?