묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
값을 안넘겨주면 똑같이 저도 에러가 나긴 하는데 왜 콘솔창에는 warn이 안뜰까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강의에서는 warn이 뜨고 name이 없다라는 콘솔문구가 뜨는데 저는 창을 들어가보면 에러는 똑같이 나는데 warn이 안뜨네여..
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ScriptAssert에서 javascript
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]현재 jdk17 이상부터는 @ScriptAssert에서 자바스크립트를 지원하지 않아서 오류가 뜨는데 17버전 이상부터는 @ScriptAssert를 어떻게 사용하나요??
-
미해결
스프링 websocket handler presend 질문 있습니다.
public Message<?> preSend(Message<?> message, MessageChannel channel) { log.info("presend 실행은 되는지"); StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message); log.info("테스트{}",accessor.getCommand()); // // 메시지의 구독 명령이 CONNECT인 경우에만 실행 if (StompCommand.CONNECT.equals(accessor.getCommand())) { StompHeaderAccessor headerAccessor = StompHeaderAccessor.wrap(message); log.info("구독 명령이 떨어졌어{}",headerAccessor.getNativeHeader("test")); } return message; }위 코드처럼 실행했을 시 accessor.getCommand()가 connect거나 disconnect면 log.info("presend 실행은 되는지"); StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message); log.info("테스트{}",accessor.getCommand());이것이 2번 씩 출력되는데 원래 이런건지 아니면 제가 코딩을 잘못했는지 질문있습니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
h2 데이터베이스는 preparestatement를 구현하고 있는 것일까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.JDBC 개발에 있어 제일 핵심이 되는 내용은 JDBC는 인터페이스이고 각각의 데이터베이스는 이 JDBC인터페이스를 구현하여 제공하고 있기에, 개발자들은 JDBC를 통해 다양한 데이터베이스를 용이하게 사용할 수 있는 점인 것 같습니다. preparedStatement는 JDBC 의 3가지 기능인1. Connection 획득SQL 전달결과 조회 중 두 번째 SQL 전달과 관련된 기능이라 생각되는데요. 그런 prepareStatement는 Connection 인터페이스 안에 있는 메서드였고, Statement를 상속하고 있는 또 다른 인터페이스인 PreparedStatement 타입인 것을 알게 되었습니다. 1) 그렇다면 Preparedstatement 또한 JDBC의 일부분이고, h2데이터베이스는 이 PreparedStatement에서 지정해놓은 메서드들을 구현하고 있다고 생각해도 되는지 궁금합니다. 2) Connection 인터페이스든 Statement 인터페이스이든 package를 보면 java.sql 에 속해 있는데, java.sql 패키지 자체가 jdbc라고 생각해도 되는지 궁금합니다.
-
미해결스프링 프레임워크 입문자를 위한 따라하기
따라하고 있는데, Spring MVC Project가 보이지 않아요..
똑같이 따라 했는데, Spring MVC Project가 보이지 않아요.. 다른것도 다 안보이고, Simple Project만 보여요 ㅠㅠ
-
미해결실전! 스프링 데이터 JPA
Merge 관련해서 질문드립니다.
안녕하세요 영한님, 정말 좋은강의 잘 듣고있습니다. Merge관련해서 질문이 하나있는데요..! 아래 두 method 모두 시작할때 persistence context가 비어있고 찾는 entity가 db에 있다고 가정할때 비슷한 (혹은 같은) flow로 진행될까요? 여기서 method parameter, Entity e,는 업데이트될 (id가 set되어있고 field가 업데이트 되어있는)객체입니다. @Transactional public void updateEntity(Entity e){ Entity foundEntity = em.find(Entity.class, e.getid()); foundEntity.setFieldOne("New Data"); }@Transactional public void updateEntity(Entity e){ em.merge(e); }Merge를 꼭 써야하는건 아니지만, 그냥 동작 메커니즘이 궁금해서 질문드립니다. Merge를 쓰는게 Update전에 항상 Select query로 db에서 객체를 조회하기때문에 쓰기를 지양하라고 하시는건가요, 아니면 merge를 쓸때 또 다른 downside가 있나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@component
@component 에노테이션 사용할때 @componentScan 없이도 자동으로 스프링 빈으로 등록이 되나요?아니면 @ServletComponentScan이 이미 있기때문에 그런건가요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
섹션 4. 회원 도메인 개발-회원서비스 개발에 대해 질문있습니다.
섹션 4. 회원 도메인 개발-회원서비스 개발에 대해 질문있습니다.테스트 junit으로 테스트 실행시 아래와 같은 에러가 나옵니다.Execution failed for task ':test'.> No tests found for given includes: [jpabook.jpashop.Service.MemberServiceTest](filter.includeTestsMatching)package jpabook.jpashop.Service; import static org.junit.Assert.*; import jpabook.jpashop.domains.Member; import jpabook.jpashop.repository.MemberRepository; import org.junit.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; //메모리db로 test import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.assertEquals; @RunWith(SpringRunner.class) @SpringBootTest @Transactional class MemberServiceTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @Test public void 회원가입() throws Exception { //given Member member = new Member(); member.setName("kim"); //when Long savedId = memberService.join(member); //then assertEquals(member, memberRepository.findOne(savedId)); } // @Test // public void 중복회원예외() throws Exception { // //given // // //when // // //then // // } }에러 사항을 찾아보니 디렉토리 위치가 다를 경우에 에러가 날 수 있다고 하여 디렉토리 위치를 비교해봐도 같습니다. junit테스트도 동일합니다. 어느 부분이 틀린지 알 수 있을까요?
-
해결됨Practical Testing: 실용적인 테스트 가이드
Fixture 클렌징 관련 질문드립니다.
안녕하세요! 저는 강사님이 말씀해주신 방법들이 아닌 @Sql 어노테이션을 사용해서 모든 테이블을 Truncate하는 방법으로 클렌징을 하고 있었습니다.Truncate는 복구가 안되지만 성능 면에서 Delete보다 빠른 것으로 알고 있는데 제가 사용한 방식도 괜찮은 방법일지, 혹은 발생할만한 문제가 있을지 궁금합니다. teardown.sql-- 모든 제약 조건 비활성화 SET REFERENTIAL_INTEGRITY FALSE; truncate table user_tb; truncate table oauth_tb; truncate table vote_tb; truncate table choice_tb; truncate table vote_item_tb; truncate table place_tb; truncate table review_tb; truncate table review_vibe_tb; truncate table vibe_tb; truncate table place_vibe_tb; truncate table place_food_tb; truncate table food_tb; truncate table participant_tb; -- 모든 제약 조건 활성화 SET REFERENTIAL_INTEGRITY TRUE;
-
미해결스프링 부트 - 핵심 원리와 활용
자동구성 관련 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 영한님.말씀해주신 자동 구성 라이브러리가 잘동작하는것 확인하였습니다.@Configuration 설정 항목들을 @AutoConfiguration 항목들로 구성하는 방법을 이해하고 문득 궁금한게 생겼는데요.내부에 @Service 관련이나 @Repository (JPA) 관련 컴포넌트들이있다면 이러한 여러 다른 컴포넌트들을 자동구성할수 있는 방법이 있을까요?@Import 로 전체 서비스를 일일히 해주는건 비효율적으로 보이는데 섹션 5.자동구성 정리의 8:43 초 부분에서 내부에서 @ComponentScan 을 사용하면 안되는 이유에 대해서 의견주시면 감사하겠습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@RequestParam, @ModelAttribute, @RequsetBody 질문
3개의 방식 모두 프론트단(html)에서 값을 넘겨준다고 가정했을때 그때마다 어떤 어노테이션을 써야하는지 개념이 부족한거 같습니다. 예를 들어 프론트단에서 username, price의 값을 userA, 10000이라고 전달했을때로 가정한다면3개 모두 요청값을 받아 받은 데이터로 객체를 생성하고 set해주는 느낌인거같아서 헷갈립니다ㅠㅠ
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Php jsp timeleaf의 차이점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]3가지 언어들은 각 기능마다 문법과 사용 환경만 조금씩 다른것이라고 이해 하였습니다. 주위에서 듣기로는 php는 과거의 기술이고 jsp가 php보다 많이 사용되고 있다고 들었습니다. 영한님 강의에서는 jsp는 사라지는 추세이고 time leaf가 최선의 선택 이라고 해주셨는데 3가지의 기능적인 차이와 html을 생성하는 기능 이라는 것이 어떤것인지 궁금합니다. Php또한 html을 생성하는 기능이 있는 지도 궁금합니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
부트스트랩, css
프로젝트를 받아서 실행시켜보니 이런 메시지가 뜨면서 css가 적용되지 않은것을 확인 했습니다. 해결해 보기 위해서 링크도 추가해보고 했지만 여전히 바뀌지가 않네요 이럴경우는 어떻게 해야할까요..?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
게시물의 신고 횟수를 추가한다면 post일까요 put일까요
게시물의 신고 횟수가 10이 되면 자동으로 삭제하는 로직을 만들고 싶은데요. 신고 사유와 확인 버튼을 누르면 게시물의 신고 횟수가 +1이 되는 로직입니다. 한 번 신고한 유저는 다시 신고를 할 수 없구요 이럴땐 postmapping 인가요 putmapping 인가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Mapping 할 URL을 만들 때 질문입니다.
예를 들어 게시글에 관련된 CRUD를 만들 때/board/{식별키}이런 식으로 만들고 method로 구분 하고 있는데요.이 게시글 식별키는 PK기 때문에 외부로 노출하고 싶지 않은데 따로 방법이 있을까요?겉으로 보기에는 /board 의 URL 이지만 내부적으로 이 게시글들을 구분하는 방법이 있을까요?
-
해결됨스프링 핵심 원리 - 기본편
5. 싱글톤 컨테이너 - 싱글톤 패턴의 단점 부분 질문입니다.
안녕하세요,싱글톤 컨테이너 - 싱글톤 패턴의 단점 부분에서 질문이 있습니다. 스프링 컨테이너가 빈을 싱글톤으로 관리하는 부분에 대해 설명하시는 강의이므로 ["컨테이너에 의한 싱글톤"과 비교하여 "일반 싱글톤 패턴"이 갖는 단점]이라는 측면으로 이해하려 합니다.의존관계상 클라이언트가 구체 클래스에 의존한다 -> DIP를 위반한다. / 클라이언트가 구체 클래스에 의존해서 OCP 원칙을 위반할 가능성이 높다.다른 질문글들을 찾아보니 이 내용은 "컨테이너를 사용하지 않을 경우 싱글톤이 아닌 일반적인 구체 클래스를 클라이언트에서 직접 new 하듯이 클라이언트에서 구체적인 싱글톤 클래스의 getInstance를 호출해야한다"는 점에서 DIP를 위반한다는 내용으로 이해됩니다. 그러면 이 단점은 컨테이너를 사용하지 않을 경우 싱글톤 클래스나 싱글톤이 아닌 클래스나 마찬가지로 갖는 단점인데 싱글톤 패턴의 단점이라고 표현하신 점에서 제가 이해하지못한 차이가 있는지 궁금합니다.테스트하기 어렵다. / 내부 속성을 변경하거나 초기화 하기 어렵다.컨테이너를 사용하면 config에서 의존관계의 구체클래스만 변경하며 객체의 속성 변경이 용이하지만 직접 구현한 싱글톤 패턴은 이미 생성된 static 객체가 존재하므로 내부를 변경해야한다면 1) 싱글톤 클래스의 코드를 고치거나 2) 클라이언트 또는 테스트 코드에서 수정자 등을 이용해야하므로 내부 속성 변경이 번거롭고 따라서 여러 케이스로 테스트가 어렵다는 의미일까요?결론적으로 유연성이 떨어진다. ("DI가 어렵다, 구체 클래스의 getInstance를 다 해줘야 한다, ...")이 부분도 컨테이너가 없을 경우 일반 클래스, 싱글톤 클래스가 갖는 단점이라 생각되는데 싱글톤의 단점이라 표현하신 점에서 제가 이해하지 못한 부분이 있는지 궁금합니다. 감사합니다.
-
해결됨
스프링 오류
Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 이 문구가 나와서 localhost:8080도 들어가지지 않습니다. 구글에 검색해보니 properties의 async로 들어가서 체크해제해보라는 말 있어서 해봤는데도 해결되지 않았습니다.이 오류때문에 localhost:8080도 못들어가서 강의 진행도 안되고 있습니다. 빠른 해결책 주시면 감사하겠습니다.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
default_batch_fetch_size 쿼리문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. select oi1_0.order_id, oi1_0.order_item_id, oi1_0.count, oi1_0.item_id, oi1_0.order_price from order_item oi1_0 where oi1_0.order_id in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)강의 4-4 페이징과 한계돌파 들으면서 똑같이 yml에 배치사이즈 100으로 하고 하던중확인해보니 in문에 강의처럼 order 데이터 2개 있으니 '?' 2개로 보여야하는데배치사이즈 설정한 수만큼 '?' 가 100개 이고 ,p6spy 보면 나머지 98개가 null로 들어갑니다..org.hibernate.orm.jdbc.bind: trace 하고 확인해봐도 여전한데하이버네이트나 머 다른게 업데이트후 저렇게 쿼리문 나가는게 정상이에요?아니면 다른 문제이면서 저렇게 쿼리문 나가는건 성능에 안 좋은 영향 있을까요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
인터셉터의 afterCompletion에서는 예외를 처리해주진 못하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]afterCompletion 구현 코드 결과 화면사진과 같이 afterCompletion()에서 예외 처리 부분에 response.sendError(200)을 해도 예외가 500으로 나가는 걸 확인할 수 있었습니다.@ControllerAdvice 어노테이션을 지정한 클래스 및 제가 구현한 ExceptionResolver들은 전부 주석처리 하여서 HandlerExceptionResolver 단계에서 예외 처리 실패했으니 500 Internal Error이 나가는 것은 맞지만,최종적인 단계에서 필터링 해주는 인터셉터인 afterCompletion()에서 sendError()을 지정하면 WAS는 지정된 상태 코드의 예외 처리를 해줘야하지 않나요?
-
미해결Practical Testing: 실용적인 테스트 가이드
현업에서도 TDD를 적극 활용하시는지 궁금합니다.
우빈님 강의에서 말씀해주신 것 처럼 TDD를 활용하면 테스트 코드를 먼저 작성하기 때문에 테스트에 대한 강제(?)할 수 있으며, 엣지 케이스에 대한 식별을 빨리 할 수 있어 많은 장점이 있다고 생각합니다. 제가 생각했을 때는 TDD를 활용하지 못하는 상황은 시간적 여유가 없을 때라고 생각되는데 이 외 다른 이유도 있을까요? 또한, 우빈님께선 평소 TDD를 활용하여 프로덕션 코드를 작성하는지도 궁금합니다.(개발 기간이 부족할 때도 테스트 코드를 무조건 작성하는지도 궁금합니다😀)