묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
DispatcherType ERROR 발생 여부 문의
안녕하세요 존경하는 강사님 서블릿 예외처리 핕터 부분 수강중 궁금한점 문의 드립니다.최초의 클라이언트에서 HTTP 요청이들어오면 DispatcherType이 리퀘스트이고 예외가 발생하여 저희가 등록한 에러페이지를 호출할때는 스프링 내부에서 사용자 모르게 한번 더 호출하는거라 DispatcherType 타입이 ERROR인것을 확인했습니다. 그런데 단지 스프링내부에서 호출을 두번하면 무조건 DispatcherType이 ERROR인건지 아니면 저희가 등록한 예외처리 관련 컨트롤러를 내부에서 재호출해서 DispatcherType이 ERROR 인건지 문의드립니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Repository 단위테스트가 갖는 의미를 모르겠습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]단순히 HashMap, Item.setX 가 보장하는 동작을 메서드로 묶은 것 뿐인 save, findAll, updateItem 에 대한 단위테스트가 무슨 의미를 갖는지 모르겠습니다.HashMap.put을 통해 객체를 저장했고, 그 키 값으로 객체를 꺼내오면 당연히 savedItem = findItem 아닌가요? '1은 1이다.' 라는 무조건 참인 명제를 작성하는 것으로 느껴집니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
redirectURL 변수질문
이부분에서 /외에 따로 변수를 만져주지않던데 밑에서return "redirect:"+redirectURL이라고 쓰면 항상 /로 home 으로가는것 아닌가요? 제가 있는 위치에 따라 redirectURL이 저절로 바뀌나요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
sendRedirect 질문
sendRedirect("/ㄱ?redirectURL=ㄴ") 이런식으로 있으면 ㄱ으로 간다음에 다음url로 바로 ㄴ으로 다시 리다이렉트 되는건가요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
컨버터의 우선순위가 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]만약 TestConverterA와 TestConverterB는 매개변수의 타입과 반환 타입이 완전히 동일할 때(ex. Integer -> Integer), 컨버터 서비스는 어떤 컨버터를 선택해서 처리하나요?conversionService.addConverter(new TestConverterA()); conversionService.addConverter(new TestConverterB()); 수업에서 보았을 때 컨버터 서비스가 제공받는 정보가 입력값과 반환 타입밖에 없는데, 복수의 컨버터의 두 타입이 모두 동일하다면 여러 컨버터 중 어떤 컨버터가 선택되는지 기준이 무엇인지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션쿠키아이디를 정적변수로 만든이유?
세션쿠키아이디를 정적변수로 만든 이유가 궁금합니다 굳이 정적변수가 아니여도 되는거죠? 정적변수로만드는 기준이 무엇이길래 정적변수로 만든걸까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션에서 동시성 이슈가 발생할수 있다고 하셨는데
어떤 상황에서 동시성 이슈가 발생하는 건가요???세션은 혼자쓰는거 아닌가요??
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
Assertion가 작성이 되지 않습니다.
package hello.jdbc1.conncection; import lombok.extern.slf4j.Slf4j; import java.sql.Connection; import org.assertj.core.api.Assertions; @Slf4j public class DBConnectionUtilTest { @Test public void aa() { Assertions } } Assertions를 사용하려닌깐 이렇게 오류가 발생하는데 어떻게 해결해야 하나요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프로젝트 선택 시 Groovy, Kotlin 중 어떤 것을 선택해야 하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.섹션2. 서블릿 / 프로젝트 생성 2:10Spring Initializr 에서 프로젝트 선택 시Gradle - Groovy, Gradle - Kotlin 중 어떤 것을 선택해야 하나요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드할때 ClassNotFoundException
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]계속 이렇게 뜨네요..무료버젼이라 세팅 들어가서 gradle로 바꿔줬습니다 ㅠ인텔리제이 17버젼이고,스트링부트는 3.0이상이라 찾아서 이렇게 변경했는데 계속 안되네요 뭐가 문제일까요
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
트랜잭션
트랜잭션 관련해서는 따로 강의에서 안 다루나요~?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
중복회원 가입이 왜 될까요? + 중복회원 예외 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 다른 분들이 질문 남겨주신 부분 토대로 거의 다 확인한 것 같은데 계속 오류가 납니다 ㅠㅠ 1) 회원가입 테스트 시 중복으로 데이터가 저장됨 2) 중복회원 예외 테스트 시 중복으로 데이터가 저장됨 3) 중복회원 예외 테스트 시 예외처리가 안됐다는 오류? 제가 코드 잘못 작성한 부분이 있을까요?
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
An internal error occurred during: "Loading descriptor for SpringStart.".
이런 오류가 자꾸 뜨는데 git이랑 연결하고 나면 뜨는 오류 같아요.완전 삭제 후 재설치는 해봤는데 해결이 안 됩니다.어떻게 하면 해결할 수 있을까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
이것도 CSR 인가요??
[질문 내용]안녕하세요 강의를 듣다가 제가 한 프로젝트가 CSR인지 애매해서 질문 드립니다.강의에서는 웹 브라우저에서 내려준 html를 통해 서버에 js를 요청한다고 나와있는데제가 한 프로젝트에서는 웹 브라우저에서 http api를 바로 요청하고 서버에서 바로 json형식으로 데이터를 내려주었습니다.(1,2번이 생략되었다고 보시면 될 것 같습니다)이러한 경우에도 CSR이라고 할 수 있나요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
application.properties (test) 없어도 적용이 되나요?
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 강의 중에 application.properties 파일이 없는데 로고가 적용 되는 이유를 알고 싶습니다. 강의 내용을 따라서 코드를 작성하고 test 를 돌리니깐 저는 적용이 되지 않더라고요 그래서 resoures/application.properties 를 복사해서 test 안에 붙여넣기 하니깐 로고가 찍혀서 나오는 걸 확인 했습니다. 없을 경우에도 원래 가능한 건지 아니면 제가 한게 맞은 건지 알고 싶습니다. logging.level.org.springframework.transaction.interceptor=TRACE logging.level.org.springframework.jdbc.datasource.DataSourceTransactionManager=DEBUG #JPA log logging.level.org.springframework.orm.jpa.JpaTransactionManager=DEBUG logging.level.org.hibernate.resource.transaction=DEBUG #JPA SQL logging.level.org.hibernate.SQL=DEBUG test 안에 application.propertie 에 포함되지 않았을 때 2023-11-07T08:29:26.134+09:00 INFO 14876 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 외부 트랜잭션 시작2023-11-07T08:29:26.139+09:00 INFO 14876 --- [ Test worker] hello.springtx.propagation.BasicTxTest : outer.isNewTransaction()=true2023-11-07T08:29:26.139+09:00 INFO 14876 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 내부 트랜잭션 시작2023-11-07T08:29:26.140+09:00 INFO 14876 --- [ Test worker] hello.springtx.propagation.BasicTxTest : inner.isNewTransaction()=true2023-11-07T08:29:26.140+09:00 INFO 14876 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 내부 트랜잭션 롤백2023-11-07T08:29:26.141+09:00 INFO 14876 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 외부 트랜잭션 커밋 test 포함 될 때 외부 트랜잭션 시작2023-11-07T10:18:23.081+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Creating new transaction with name [null]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT2023-11-07T10:18:23.083+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Acquired Connection [HikariProxyConnection@369947173 wrapping conn0: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA] for JDBC transaction2023-11-07T10:18:23.085+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Switching JDBC Connection [HikariProxyConnection@369947173 wrapping conn0: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA] to manual commit2023-11-07T10:18:23.085+09:00 INFO 23704 --- [ Test worker] hello.springtx.propagation.BasicTxTest : outer.isNewTransaction()=true2023-11-07T10:18:23.085+09:00 INFO 23704 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 내부 트랜잭션 시작2023-11-07T10:18:23.086+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Suspending current transaction, creating new transaction with name [null]2023-11-07T10:18:23.086+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Acquired Connection [HikariProxyConnection@1178214215 wrapping conn1: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA] for JDBC transaction2023-11-07T10:18:23.086+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Switching JDBC Connection [HikariProxyConnection@1178214215 wrapping conn1: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA] to manual commit2023-11-07T10:18:23.086+09:00 INFO 23704 --- [ Test worker] hello.springtx.propagation.BasicTxTest : inner.isNewTransaction()=true2023-11-07T10:18:23.086+09:00 INFO 23704 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 내부 트랜잭션 롤백2023-11-07T10:18:23.086+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Initiating transaction rollback2023-11-07T10:18:23.086+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Rolling back JDBC transaction on Connection [HikariProxyConnection@1178214215 wrapping conn1: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA]2023-11-07T10:18:23.087+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Releasing JDBC Connection [HikariProxyConnection@1178214215 wrapping conn1: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA] after transaction2023-11-07T10:18:23.087+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Resuming suspended transaction after completion of inner transaction2023-11-07T10:18:23.087+09:00 INFO 23704 --- [ Test worker] hello.springtx.propagation.BasicTxTest : 외부 트랜잭션 커밋2023-11-07T10:18:23.087+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Initiating transaction commit2023-11-07T10:18:23.088+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Committing JDBC transaction on Connection [HikariProxyConnection@369947173 wrapping conn0: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA]2023-11-07T10:18:23.088+09:00 DEBUG 23704 --- [ Test worker] o.s.j.d.DataSourceTransactionManager : Releasing JDBC Connection [HikariProxyConnection@369947173 wrapping conn0: url=jdbc:h2:mem:858919b0-1ec2-4a72-8bb2-e84223172ee9 user=SA] after transaction 정상적으로 찍혀서 나오는 걸 볼 수 있어요 제가 제대로 못 본 건지 강의 내용에서는 application.properties 가 main 코드 안에 만 작성이 되어 있었는데 로고가 나오던데 왜 그런지 알고 싶어요
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
springframework 라이브러리 인식 오류
인텔리제이 종료 후 재실행하여 프로젝트를 열었을 때 아래 화면과 같이 오류가 발생합니다.org.springframework.boot 라이브러리 자체를 인식하지 못하는 것으로 확인되는데,어떻게 고칠 수 있을지 알 수 있을까요?(인텔리제이 종료 전까지만 해도 정상 동작하였습니다.) 제 개발 환경은 MacOS, IntelliJ, JDK 11, Spring 2.x 버전 입니다.
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
추상화, 의존성 주입 질문 드립니다!
안녕하세요 강의를 보다가 질문 드리고 싶은 부분이 있어 작성하게 되었습니다.강의자료 2.커넥션풀과 데이터소스 이해 마지막 부분에서"외부에서 DataSource 를 주입 받아서 사용한다." 라고 설명을 해주셨는데DataSource 의 구현체를 DriverManagerDataSource를 주입 받을지 HikariDataSource를 주입 받을지 어떻게 정해지는건지 궁금합니다. 라이브러리에 현재 h2 데이터 베이스만 등록되어있어DriverManager에 h2 Driver가 의존성 주입이 되고h2 Driver 구현체를 사용함으로써DataSource에 자동으로 DriverManagerDataSource 의존성 주입이 되고DriverManagerDataSource 을 구현체를 사용함으로써 PlatformTransactionManager에 자동으로DataSourceTransactionManager 구현체를 주입 받고 MemberServiceV3_1 에서도 자동으로private final PlatformTransactionManager transactionManager;DataSourceTransactionManager를 외부로 자동으로 주입 받는게 맞을까요?? 그러면 혹시 나중에 라이브러리에 DB가 2개 이상 존재하게 되면 인터페이스에 어떤 구현체를 주입하게 되는지특정 config 에서 드라이버 및 데이터 소스, 트랜잭션 매니저 주입을 설정하게 되는건지 질문드립니다. MemberServiceV3_1Test에서 아래와 직접 같이 의존성 주입을 하는 것과 마지막에 트랜잭션 문제 해결 - 트랜잭션 매니저2 정리 부분을 설명을 듣던 중 갑자기 질문을 생각하게 되었습니다.DriverManagerDataSource dataSource= new DriverManagerDataSource(URL, USERNAME, PASSWORD); memberRepository= new MemberRepositoryV3(dataSource); PlatformTransactionManager transactionManager= new DataSourceTransactionManager(dataSource);memberService= new MemberServiceV3_1(transactionManager, memberRepository);너무 뻔한 질문이라면 죄송하다는 말씀 드리겠습니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
jsp 자동 작성
jsp 관련해서 따로 프레임워크를 추가해야 강의와 같은 jsp 파일 형태가 나오는건가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ReturnValueHandler와 Http 메세지 컨버터 관련해 질문있어요
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]ReturnValueHandler는 ModelAndView 객체를 생성 후 반환값이 다양해도 반환값에 따라 알맞게 뷰 이름을 ModelAndView객체에 넣어주는 녀석인가요그리고 ReturnValueHandler가 작동할 때 ModelAndView객체를 만든 후 응답 메세지 바디에 Accept 헤더와 맞는 형식으로 내용을 넣으려고 메세지 컨버터가 작동하는 건가요
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
isEqualTo 관련 Java 동등성/동일성 판단
[질문 템플릿]1. 예 2. 예 3. 예[질문 내용]Java에서 동일성(identity)와 동등성(equality) 개념에 관련하여 강사님께서 언급하신 내용에 대해 올바르게 이해하고 있는지 질문하려고 합니다. == 의 경우 두 객체가 같은지(주소값이 동일한지) 즉, 동일한지를 판단하기 위해 사용하고,equals() 의 경우 두 객체가 같은 정보를 가지는지 즉, 동등한지를 판단하기 위해 사용합니다. // findMember Member findMember = repository.findById(member.getMemberId()); // findById 메서드 일부 발췌 Member member = new Member(); member.setMemberId(rs.getString("member_id")); member.setMoney(rs.getInt("money")); return member; // member Member member = new Member("memberV0", 10_000); findMember와 member의 경우 애초에 같은 인스턴스가 아니기 때문에 동일성 판단 시 false인 것은 당연합니다.-> 서로 다른 곳에서 new 연산자를 통해 인스턴스를 생성했으므로, 주소값이 같을 수가 없음. 동등성 판단을 위해 isEqualTo 메서드를 이용하여 판단하는데, 원래대로라면 equals() 메서드를 overriding 하여 판단해야하지만 @Data(엄밀히 말하면 @EqualsAndHashCode) 가 equals()메서드를 overriding하기 때문에 동등성 판단이 제대로 이루어져서 true 로 제대로 판단하는 것으로 이해했습니다.-> equals()메서드를 overriding 해야하는 이유는 Object 클래스의 equals()메서드를 까보면public boolean equals(Object obj) { return (this == obj); }이렇게 동일성 판단을 하는 것으로 구현되어 있기 때문에 동등성 판단을 하도록 overriding 해야 합니다. 제가 알고 있는 지식을 통해서인스턴스 간 equals()와 ==의 결과값이 다른 것을 보여주신 이유에 대해 정리한 건데, 틀리거나 빠진 내용이 있을까 싶어서 질문글 작성하게 되었습니다. 감사합니다!