묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
POJO 상품 등록 기능 구현하기 강의 질문
안녕하세요.POJO 상품 등록 기능 구현하기 강의의3:58 에서 throw new UnsupportedOperationException("Unsupported addProduct");가 제안으로 바로 뜬 이유를 여쭙니다..!
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
steps 클래스를 사용하는 이유
안녕하세요!강의 잘 듣고 있습니다! steps 클래스를 따로 만드는 이유는 뭐라고 할 수 있을까요?? 감사합니다.
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
랜덤 포트를 사용하는 이유
안녕하세요! 너무 좋은 강의 잘 보고 있습니다. 감사합니다! 강의를 듣다가 궁금한 것이 생겼는데,굳이 ApiTest 라는 클래스를 따로 만들어서 랜덤 포트로 설정해준 이유는 무엇인가요?? 감사합니다.
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
상품등록 API 개발, JPA로 변환하기 에서
org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "PRODUCTS" not found (this database is empty); SQL statement:select product0_.name as name1_0_0_, product0_.discount_policy as discount2_0_0_, product0_.id as id3_0_0_, product0_.price as price4_0_0_ from products product0_ where product0_.name=? [42104-214] 이런 에러가 나옵니다.. application.properties 에서 jpa 관련 설정해준건 없고따라하기만 했을 뿐인데 저런 에러가 뜨네요.. 제가 알기론 jpa 의 ddl-auto 가 create 라서 저절로 생성해주는걸로 알고있는데 ,, 왜 저런 에러가 뜨는지그리고 강사님이랑 같은 코드를 입력했는데 발생하는지 궁금하네요
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
패키지 구조에 대해서 궁금합니다!
안녕하세요 좋은 강의를 무료로 올려주셔서 정말 잘 보고있습니다.보여주신 패키지 구조가 헥사고날 패키지 구조에 기반 하셨다고 다른 글에서 말씀을 해주셨던 것을 봤습니다. 그럼 controller 를 넣게 된다면 port 에 in 폴더를 넣고 다시 나누는 작업을 하시나요? 그리고 실무에서도 Controller 없이 Service 에 바로 GetMapping 을 넣어도 괜찮을까요?감사합니다!
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
제대로 한게 맞는건가요?
@Transactional @Override public void updatePassword(String UUID, PasswordUpdateDto passwordUpdateDto) { User user = userRepository.findByUuid(UUID).orElseThrow(() -> new IllegalArgumentException("UUID정보 없음 = " + UUID)); user.hashPassword(passwordUpdateDto.getPassword()); }이게 서비스 코드인데 여기서 예외가 터지면 컨트롤러로 넘어가서 catch (IllegalArgumentException ex) { throw ex } 을 해서 처리하는게 맞게 하는건가요? @PutMapping("/user/update-password/{UUID}") public ResponseEntity<String> updatePassword(@PathVariable String UUID, @RequestBody PasswordUpdateInfo passwordUpdateInfo) { try { ModelMapper modelMapper = new ModelMapper(); PasswordUpdateDto passwordUpdateDto = modelMapper.map(passwordUpdateInfo,PasswordUpdateDto.class); userService.updatePassword(UUID,passwordUpdateDto); return ResponseEntity.ok("Password updated successfully"); } catch (IllegalArgumentException ex) { throw ex; } } @Slf4j @RestControllerAdvice(annotations = RestController.class) public class ExceptionController { @ExceptionHandler public ResponseEntity<ErrorResult> userExHandle(IllegalArgumentException e) { ErrorResult errorResult = new ErrorResult("USER-NOT-FIND", e.getMessage()); return new ResponseEntity<>(errorResult, HttpStatus.BAD_REQUEST); } } 포스트맨 쓰니까 일단 뜨긴뜨닙다
-
미해결
ec2재부팅 후 ec2 주소 접근 불가능 !!!!! (스프링 배포)
https://velog.io/@dasd412/ec2-%EC%9E%AC%EB%B6%80%ED%8C%85-%ED%9B%84-%EC%97%B0%EA%B2%B0-%EB%B6%88%EA%B0%80-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0이걸 참고해도 보안 다시 해도 전 여전히 안되더라구요.. 결론적으로 배포를 성공했고 배포한 주소가 회원가입에 접근을 못해서 시큐리티 설정 때문에 그런줄 알았는데 여기서 멈췄어야 했나봅니다..로컬에서는 되고 ec2주소로는 접속이 안되어서 찾아보던 중 ec2를 재부팅 하면 해결된다고 해서 따라 했더니https://github.com/jojoldu/freelec-springboot2-webservice/issues/485 이제는 아예 ec2주소에 접근이 불가능합니다 ㅠㅠㅠㅠㅠ 이걸 해결해야 하는데 어떡하나요..
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
BeforeEach 를 하위 클래스에서 다시 사용하는것에 대해서 질문 드립니다.
안녕하세요..!여쭤보고 싶은게 있어서 질문 남깁니다.현재 테스트의 구조가ApiTest 라는 클래스를 상속받아서 ProductApiTest를 만들게 되었습니다.class ProductApiTest extends ApiTest {}제가 하고 싶은 것은 코드의 중복을 줄이고 싶습니다.class ProductApiTest extends ApiTest { @BeforeEach void setUp() { ProductSteps.상품등록요청(ProductSteps.상품등록요청_생성()); } } 이런식으로 상품 조회와 상품 수정을 하게 될때 상품을 등록하게 되는데 이런 코드를 한번만 작성하면 어떨까 생각합니다.근데 이렇게 테스트를 돌리니 Connection refused 이라는 에러 메세지가 나오면서 테스트가 안돌아갑니다.아마 RestAssured.port 가 설정이 안되어서 그런것같습니다.이제 그러면 ApiTest의 필드들은 protected로 수정합니다.class ProductApiTest extends ApiTest { @BeforeEach void setUp() { if (RestAssured.port == RestAssured.UNDEFINED_PORT) { RestAssured.port = port; databaseCleanup.afterPropertiesSet(); } databaseCleanup.execute(); ProductSteps.상품등록요청(ProductSteps.상품등록요청_생성()); } }이렇게 하면 잘 돌아가는것을 확인했습니다.SET REFERENTIAL_INTEGRITY FALSE Hibernate: TRUNCATE TABLE products Hibernate: ALTER TABLE products ALTER COLUMN ID RESTART WITH 1 Hibernate: SET REFERENTIAL_INTEGRITY TRUE위의 DatabaseCleanup도 한번씩만 돌아가는것을 확인했습니다.근데 이렇게 재정의 해서 사용하는것이 맞는 방식인가..? 하는 생각이 들기도하고 이런 상황에서는 어떻게 해결하면 될까 싶어서 질문 남깁니다!
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
ProductService의 updateProduct 로직 질문입니다.
updateProduct 로직을 보면, 맨 첫줄에productPort.getProduct로 조회를 해온 뒤 product.update(~~~)로 변경을 하면, 변경 감지가 일어날텐데굳이 save를 호출하신 이유가 뭐에용??
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
TRUNCATE TABLE 시 AUTO_INCREMENT 컬럼 1로 초기화
MySQL이나 H2 에서 TRUNCATE TABLE 시 AUTO_INCREMENT 컬럼값도 1로 초기화되는 걸로 알고 있습니다. 그런데 강의에서는 TRUNCATE 후 AUTO_INCREMENT 컬럼인 ID 를 1부터 다시 시작하게 하는 쿼리를 추가하셔서 어떤게 맞는건지 헷갈립니다좋은 강의 감사합니다
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
POJO로 개발 후 스프링으로 전환, 이후 JPA 전환하는 이유
POJO로 개발 후 스프링으로 전환, 이후 JPA 전환하는 이유가 있나요?? 처음부터 JPA로 만들면 안되는지 궁금합니다
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
postman 응답 결과에 대한 질문입니다.
안녕하세요!선생님 강의를 재밌고 유익하게 수강하고 있는 학생입니다.스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 강의의 bean validation - HTTP 메시지 컨버터 부분을 수강하던 중 강의 내용과 제 결과 케이스의 다른 부분이 있어 다른 결과가 나오게 된 원인이 궁금하여 질문 드립니다!강의와 결과가 달랐던 부분은 postman으로 실패 요청을 send했을 때의 응답 결과 입니다.강의의 결과입니다.{ "timestamp": "2021-04-20T00:00:00.000+00:00", "status": 400, "error": "Bad Request", "message": "", "path": "/validation/api/items/add" }제가 실행한 결과입니다.{ "timestamp": "2021-04-20T00:00:00.000+00:00", "status": 400, "error": "Bad Request", "path": "/validation/api/items/add" }보이는 바와 같이, 제가 실행한 결과에서는 message에 대한 json 객체가 존재하지 않습니다. 혹시 스프링 부트의 버전과 관련된 부분에 있어서 차이가 있을까요?현재 사용 중인 스프링 부트 버전은 2.7.11 버전입니다.
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
TestRestTemplate 대신에 RestAssured를 사용하는 이유가 있을까요?
TestRestTemplate은 스프링 테스트에서 제공하는 라이브러리로 알고 있습니다.굳이 스프링에서 제공하는 라이브러리 말고 외부 라이브러리인 RestAssured를 사용하는 이유가 따로 있을까요?제가 아무리 검색해도 시원한 답변을 찾을 수가 없었습니다.둘의 장단점이나 차이점을 좀 알고 싶습니다.
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
API 테스트로 전환하기
해당 영상 내에서 굳이 var 타입을 사용하신 이유를 알 수 있을까요?
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
코드 스타일에 대해서 질문드립니다.
변수들에 final 키워드를 붙이시는 이유class를 만들때 접근지정자 public 을 지우시는 이유메서드를 static 으로 생성하는 이유위의 점들이 궁금합니다.
-
해결됨CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
API의 정의 질문
큰돌님, 안녕하세요. 강의 잘 듣고있습니다!학습 중에 궁금증이 있어서 질문 올립니다.API를 뭐라고 정의해야 될까요???큰돌님 강의 교안 19페이지에서는 API를 '둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층의 의미'라고 적어주셨는데요,강의 교안 185페이지 REST API 파트에서는API를 '소프트웨어와 소프트웨어 사이에서 데이터 전송을 가능하게 하는 프로그램'이라고 적어주셨습니다.그 외에도, 인터넷으로 API의 정의에 대해 찾아보면 '소프트웨어 간의 통신 규약'이라고 나오는 등 정의가 애매모호한 것 같습니다.기술면접에서 API에 대해서 질문이 들어올 경우, 어떻게 답하는게 가장 깔끔할까요?? 아니면, 어떻게 답해도 상관이 없을까요???
-
해결됨CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
안녕하세요 선생님, API 실습 2 강의를 듣다 궁금한 점이 생겨 질문 드립니다.
API는 변동 내용이 바로 반영이 안 된다는 것을 학습할 수 있었습니다.만약 변경 내용을 바로 반영하고 싶다면 어떻게 해야 하는지 그리고 API는 수정한 데이터를 저장까지 했는데 바로 반영이 안 되는지 궁금합니다.
-
해결됨실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
혹시 강의 중에 나오는 플러그인 좀 알 수 있을까요
강의 중에 나오는 "Complexity is 3 Everything is cool!" 이라는 코멘트가 나오는건 어떤 플러그인을 사용하시는 건지 궁금하니다!!
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
ApiTest에서 MockMvc를 사용한 테스트가 아닌
ApiTest에서 MockMvc를 사용한 테스트가 아닌 RestAssured를 사용하여 테스트하는 이유를 알 수 있을까요??
-
미해결실전! 스프링부트 상품-주문 API 개발로 알아보는 TDD
port와 adapter에 대해
만들때 쓰셨던 port와 adapter 패턴에 대해 좀 설명해주실수 있을까요?