묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
스프링이 제공하는 기능과 스프링 빈의 관계
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링이 제공하는 트렌잭션 AOP를 사용하면 스프링 부트에서 관련된 로직을 자동으로 스프링 빈으로 등록한다는 설명에서 궁금한 점이 생겼습니다. 개발자들이 직접 컴포넌트 스캔이나 @Controller 와 같은 애너테이션을 사용해서 등록하는 빈들과 별개로 트렌젝션과 같은 부가 가능또한 빈으로서 관리가 되어야 사용할 수 있는 것인 걸까요? 어떻게 보면 당연히 등록되어야지! 라는 생각도 들지만, 스프링 빈으로 등록이 되어야하는 객체에 기준이 있는건지 궁금합니다. 예상하는 기준은 다음과 같습니다.1. 개발자가 서비스 로직을 만들기 위해 개발되는 모든 것은 스프링 빈으로 등록하여 싱글톤으로 용이하게 관리하며 자동의존 주입을 받는다. 2. 데이터 접근 기술이나 트랜잭션 같이 스프링에서 편리하게 관리할 수 있게 만들어 놓은 것을 사용하려면 스프링 빈으로 등록해서 사용해야한다. 2-1. 다만 스프링에서 제공하는 기능적인 기술은 스프링 부트를 사용시 자동으로 등록해준다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
리소스가 정확히 뭔가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]저번 HTTP 웹지식 강의에서는 리소스가 명사? 라고 했던거 같은데 여기서는 정적 리소스, 동적리소스라고 하니깐 리소스가 정확히 뭔지 감이 안 잡히네요. 완벽히 짖고 넘어가고 싶네요
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
log에 빨간줄
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]log에 빨간줄이 그어지고 test를 돌려도 log 기록이 남지 않는데 무엇이 문제일까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
Mybatis에서 Connection의 생명주기 및 Pooling Proxy객체
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]제목과 같습니다.Mybatis에서의 Connection 생명주기와커넥션풀을 연동했을때의 Connection 생명주기가 궁금합니다.Mybatis에서 커넥션풀을 적용한다고 가정합니다.만약 하나의 기능 즉, 하나의 쓰레드 단위로 쿼리를 호출하는 매퍼 메소드를 4번 호출한다면 이때 커넥션은 Mapper를 통해 호출하는 DAO 메소드 단위로 Pool에서 4번 꺼내는것인지?만약 그렇다면, 4번 꺼내는 객체들이 앞서 배운 내용처럼 처음 Pool에서 꺼내서 사용하고 반환한 동일한 Connection 객체를 다시 꺼내어 재사용 하는건지 궁금합니다!또한 Transcation Rollback 되는것도 동일한 Connection, 동일한 Session에 의한것과 연관성이 있는건지도 궁금합니다.제가 이해한 부분은 아래와 같습니다.커넥션풀을 사용하면 커넥션풀에 각각 다른 커넥션이 생성됨(10개)하나의 커넥션당 하나의 세션이 생성되며, 커넥션의 생명주기에 종속되어 있다.세션은 트랜잭션을 시작하고 커밋을 관리한다.커넥션 풀을 사용하면 하나의 스레드내에 각각의 쿼리에 대한 작업 단위가 동일한 커넥션을 반환받는다.커넥션이 동일하다면 세션도 동일하므로 하나의 트랜잭션으로 관리된다?이게 맞을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
시스템 os locale 과 intellij default locale이 다릅니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]intellij 에서 로케일 티폴트를 찍으면 en-us라고 나오는데시스템 os locale은 한국입니다.locale.korea 라고 했을 때 messages_kr 파일이 없어 messages.properties(디폴트)를 먼저 찾아 테스트가 동작한다는 설명은 이해했습니다. (locale null 대신 locale.korea로 테스트성공) 하지만 null값으로 주게 되면 시스템 os 를 먼저 찾고(저의 경우 kr) -> messages_kr이 없으니 그대로 messages.properties를 찾을 줄 알았으나 messages_en.properties를 계속해서 참조했습니다. (아래) default값을 찍어보니 맨 위 사진처럼 intellij에서 디폴트값을 us로 인식하고 있었습니다. 혹시 어떻게 해결해야 할까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
KeyHolder 질문
@Override public Item save(Item item) { String sql = "insert into item (item_name, price, quantity) " + "values(:itemName, :price, :quantity)"; SqlParameterSource param = new BeanPropertySqlParameterSource(item); KeyHolder keyHolder = new GeneratedKeyHolder(); template.update(sql, param, keyHolder); long key = keyHolder.getKey().longValue(); item.setId(key); return item; } KeyHolder같은경우 id를 내부에서 직접 구성해줘야하기 때문에 쓰는거라고 알고있는데 서버를 열어서 추가를 해줄때마다 숫자가 증가되는걸 볼수있었습니다. 숫자가 증가되는건 코드에서 자체적으로 해주는건가요?항상 답변감사드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
저만 어려운걸까요..
자바 기본 입문,스프링 기본,입문, HTTP까지는 무난무난하게 재밌게 다 이해하며 왔는데Model 추가 V3부터 정말 이해가 하나도안되요....처음엔 다 그런걸까요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
html 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]<b> </b> 태그가 이스케이프 처리되어서, html 코드가 웹 브라우저에 <와 같은 문자로 이스케이프 되는 것으로 이해했습니다.이때 그러면 다른 태그들 <head>, <li>와 같은 코드도 그러면 모두 저런 문자의 형태로 다 이스케이프 처리되어서 웹 브라우저에 내려가야하는 것 아닌가요? 클라이언트에서 어떤 입력값을 서버로 넘겨줄때, <script>와 같은 값을 넘겨주면 이상한 스크립트를 서버에서 실행시킬 위협이 있어서 이를 방지하기 위해 이스케이프 처리를 한다는 것 같은데, 서버 -> 클라이언트로 이스케이프인지 클라이언트 -> 서버 이스케이프인지.. 뭔지 개념이 헷갈리네요 ㅜㅜ
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
프론트컨트롤러 -V1 강의에서
@WebServlet(name = "frontControllerServletV1", urlPatterns = "/front-controller/ v1/*") public class FrontControllerServletV1 extends HttpServlet { private Map<String, ControllerV1> controllerMap = new HashMap<>(); public FrontControllerServletV1() { controllerMap.put("/front-controller/v1/members/new-form", new MemberFormControllerV1()); controllerMap.put("/front-controller/v1/members/save", new MemberSaveControllerV1()); controllerMap.put("/front-controller/v1/members", new MemberListControllerV1()); } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("FrontControllerServletV1.service"); String requestURI = request.getRequestURI(); ControllerV1 controller = controllerMap.get(requestURI); if (controller == null) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); return; } controller.process(request, response); } } 이 코드에서 웹에서 url을 입력해서 requestURL에 들어와 그 URL에 맞는 컨트롤러를 호출한다 이거는 이해를 했습니다.근데 프public FrontControllerServletV1() 생성자를 호출해야 하는거아닌가요..?갑자기 여기서 막혀서 이해가안가네요..
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
커넥션 생성
초기에 트랜잭션이 시작되면 커넥션은 누가 얻어오는건가요?Repository에서DataSourceUtils.getConnection(dataSource); 실행되고 doGetConnection 메서드에서ConnectionHolder conHolder = (ConnectionHolder) TransactionSynchronizationManager.getResource(dataSource); Connection con = fetchConnection(dataSource);이렇게 얻어오는거같은데 트랜잭션 동기화매니저가 커넥션을 얻어오고 이 커넥션을 트랜잭션 매니저가 사용하는건가요??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
url 링크가 변경되지 않는 이유가 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]WAS에서 /error-page/500 경로로 요청을 다시 하면 url 링크도 변경될 거라고 생각했는데 변경되지 않는 이유가 궁금합니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
src/test/resources 에 application.properties
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]이전 수업까지datasource를 저희가 주입하는게 아닌 properties 파일로 자동으로 주입받을 때 src/test/resources 를 만든적이 없는걸로 기억합니다. 그런데도 에러 없이 잘 돌아갔었는데 src/test/resources 를 만들어서 분리하는 순간 src/test/resources에 있는 properties 파일은 src/test 를 위한 설정 파일이 되는건가요? 만약 src/test/resources를 만들지 않았다면 src/main에 있는 설정 정보를 그대로 src/test에서도 끌어다 쓰는건가요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
실제 테스트
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예[질문 내용]강의 잘 듣고 있습니다. 현재는 h2 database를 사용해서 구현하는 테스트인데 실제로 테스트 할 때 데이터베이스를 건들면 문제가 생길 것같습니다. 그럴 때에는 어떤 방식으로 테스트를 진행하나요??
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
index.html
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]'index.html은 welcome page로 정적 페이지이므로, main/resources/static 에 넣야겠다.' 라고 생각합니다. index.html과 basic.html을 webapp 디렉에 넣는 지 모르겠습니다. 다른 질문들 확인해보니, 타임리프를 사용하지 않을 것이면, 그렇게 해도 된다고 하는데, 그게 무슨말인지 모르겠습니다. 톰켓은 디폴트로 welcome page를 index.html로 찾는 것 같은데. index.html을 찾는 주체가 톰켓인가요? 스프링인가요? 아닌 다른 것인가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
편하게 들어도 된다고 하셨는데
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이 방식이 옛날 방식이라 편하게 들어도 된다고 하셨는데 코드를 안 적어도 되나요? 아니면 나중에 최신 방식으로 알려주시나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
첫 gradle build부터 안됩니다 ㅜㅜ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.JDK 17로 맞추고, gradle 설정 들어가서 IntelliJ IDEA로 빌드하라고 설정을 해도 안됩니다. 처음 시작부터 막히니까 너무 막막하네요.캐쉬삭제하고 해봐도 똑같습니다. 무엇을 더 해봐야할지도 모르겠어요. 도와주세요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
messages properties 에러
철자가 이상하게 나옵니다 ㅠㅠ..
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
DataSource와 트랜잭션 매니저
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 해당 강의를 들으면서 DataSource 와 트랜잭션 매니저의 역할이 좀 헷갈립니다. 강의 중에는 트랜잭션 매니저는 데이터소스를 통해 커넥션을 생성하므로 DataSource가 필요하다는 말씀과 PDF에도 그렇게 적혀있는데요. DataSource는 커넥션 풀이나 DriverManagerDataSource 같은 구현체를 다루기 위한 인터페이스로 이전 강의들로 통해 알고 있었습니다. 그리고 실제 구현체는 이 인터페이스를 통해 구현체가 들어오는 것이고요. [질문 내용] 근데 왜 트랜잭션 매니저를 사용하면서 한번 더 인자를 트랜잭션 매니저로 넘겨주어야 하는 것일까요..? 아래 코드입니다.PlatformTransactionManager transactionManager = new DataSourceTransactionManager(dataSource);그리고 트랜잭션 매니저는 추상화와 동기화를 진행한다고 했는데 이미 추상화는 DataSource도 되고 있는 것 같은데 파라미터를 통한 동일한 커넥션 넘겨주는 부분 때문에 트랜잭션 매니저를 사용하는 것일까요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
자바환경변수
JDK 17.0.10 isn't compatible with Gradle 6.8.2. Please fix JAVA_HOME environment variable17버젼사용중이에요. 소스코드를 받아서 들어가려고했는데 이런 에러가 발생하는데 매번 환경변수를 바꿔줘야하나요? 다른 방법이 있을까요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
파일 업로드와 다운로드에서 궁금한 것이 있습니다.
안녕하세요. 파일 업로드와 다운로드 강의 중 문득 궁금한 것이 생겨서 이렇게 질문을 드립니다.강의에서 처럼 메모리에 Item을 저장하는 것이 아니라 실제 RDBMS에 저장을 한다고 가정을 하게되면Item 테이블엔 id와 itemName만 저장하고 파일 경로를 저장할 File 테이블엔 Item의 id와 UploadFile의 uploadFileName과 storeFileName을 저장하는 것일까요? 이렇게 저장한다고 가정하였을 때, DB에서 Item객체를 불러올 땐 Item 테이블에서 id와 itemName을 가져와 set 해주고, File 테이블에서 uploadFileName과 storeFileName을 가져와 UploadFile 객체와 List<UploadFile>을 만들어 Item 객체를 만든다. 로 이해해도 되는 부분일까요?? 뭔가 경우에 따라서 다양한 방법이 있겠지만 지금 제 머리속으론 이런 방식이 떠올라서 이게 맞는건지 궁금해서 여쭈어봅니다. 좋은 강의 항상 감사하게 듣습니다 ㅎ 감사합니다.