묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 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()와 ==의 결과값이 다른 것을 보여주신 이유에 대해 정리한 건데, 틀리거나 빠진 내용이 있을까 싶어서 질문글 작성하게 되었습니다. 감사합니다!
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
mvc members jstl
방법을 찾아봐서 다 해보고 jstl도 다 바꿔봐도 인식이안되는것같습니다 코드에는 문제가없는데 뭐가 문제일까요 ㅠㅠ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberServiceIntegrationTest 테스트 케이스 간섭 발생
안녕하세요. 감사히 영상을 보며 공부하고 있습니다.다름이 아니라 스프링 JdbcTemplate 적용 후 통합테스트를 진행해보는데,회원가입과 중복_회원_예외 테스트 메소드 개별 실행시 정상적으로 작동,클래스 테스트 실행시 중복_회원_예외 케이스 통과, 회원가입 케이스에서 에러가 발생하여 로그를 확인해보니,회원가입 테스트 실행 전, memberService.findMembers()를 통해 확인해본 결과, 중복_회원_예외 테스트케이스에서 put 하는 member 객체가 확인이 됩니다.Spring Boot와 JUnit 5를 사용하여 작성한 테스트 클래스의 경우, 테스트 메소드는 일반적으로 순차적으로 실행되지 않습니다. 대신, 각 테스트 메소드는 독립적으로 실행됩니다. 라고 확인이 되더라구요. 병렬적으로 실행되나, 컨텍스트가 분리되는것으로 보이는데, db는 같은걸 쓰다보니 에러가 발생하는게 아닐까 싶었습니다.그런데 영상에서는 통합테스트에서 이러한 에러가 발생하지 않는데, 어떤 차이때문일까요?*해당 코드 포함한 commit log link