묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
HTTP 응답 데이터 - json
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.response.setContentType을 application/json로 지정하면 utf-8을 사용하도록 정의되어 있다고 하셨는데 utf-8을 제외하고 실행하면 한글이 깨집니다.
-
미해결스프링 핵심 원리 - 기본편
프록시와 스코프에 대해
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1.CGLIB 라이브러리 관련 얘기를 싱글톤을 배울 때@Configuration 이 들어간수동 빈 등록 혹은자동 빈 등록@ComponantScan 에 자동으로 CGLIB이 적용 된다고 이해하면 되는걸까요 ?? 2.프록시를 보면서 가짜 프록시 객체를 생성하고 진짜객체를 조회 할 때까지 지연 처리 한다 적혀있는데CGLIB 이 적용된 @Bean 을 생각해 보면스프링 컨테이너에 myLoger 빈이 있으면 그대로 사용없으면 myLogger를 등록 후 리턴해서 싱글톤 보장이 된다고 이해를 했는데.request 스코프 빈은 요청이 와야 생성할 수 있으며Proxy,Provicder 가 지연 처리를 하며 ( localhsot~~~~ log-demo 들어갈때까지)CGLIB 기능(빈이 있으면 사용 없으면 새로 생성해서 리턴)myLogger@CGLIB(상속받은객체) 가 프록시 객체에 들어가며'가짜 프록시 객체는 실제 요청이 오면 그때 내부에서 실제 빈을 요청하는 위임 로직이 들어있다.'→ 가짜 프록시 객체 실행 시(myLogger.log 등..) @Componant 진짜 myLogger 빈을 사용해서기능 실행제가 이해한 Proxy,Provider 역할이 맞을까요 ? 3. @Scope는 싱글톤 스코프가 기본값으로 적용 되어있는데 여태까지 로직처리나 그런 부분은 따로@Scope를 설정 안했는데 DB연결 이나 네트워크 관련(페이지 이동? 로그인?) 일 때 주로 사용하는게 맞나요 @Scope에 대해서 어려움이 있어 질문 남깁니다..ㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
spring.io 2.7.8 버전
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요?예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]스프링 부트 2.7.8 사용 중 입니다. core Features 에서 welcome Page 를 못찾겠네요 어디 있을까요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의 27분쯤에 궁금한게 생겨서 질문드립니다.
강의 27분쯤에 하신 말씀이 헷갈려서 질문드립니다.강의 자료와 강의 내용에보면'뷰 객체를 통해서 HTML화면을 렌더링한다.' 와'JSP로 포워드해서 JSP를 렌더링한다.'이 두 말이 다른건가요? JSP를 렌더링 하는게 곧 HTML화면을 렌더링하는거 아닌가요?동작 순서를 보면 JSP를 렌더링하고 그다음에 HTML화면을 렌더링 하는건가요?그리고 dispatcher.forward() 를 하는건 JSP로 포워드해서 JSP를 렌더링하는 동작인가요?구글링 하여 알아봤는데, JSP를 렌더링하여 HTML을 만들어서 클라이언트에 응답한다. 서버는 JSP를 렌더링해서 HTML을 만들어서 클라이언트한테 주면 클라이언트는 받은 HTML을 렌더링해서 HTML화면을 보여주는것이다 라고 이해하면될까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이에서 실행버튼이 사라졌어요
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]cmd에서 빌드하고 localhost:8080에서 구경하는데 블루스크린 떠서 다시켰습니다. 그 후 인텔리제이에서 다시 실행하려하니 실행 버튼이 사라졌어요..이런식으로 파일도 바뀌어잇구요,,실행 버튼도 사라졌구요..
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
file 관련질문
만약 쇼핑몰을 만들게 되면 판매자별로 file을 만들텐데 그러면 판매자별로 분류를 어떻게 하나요?? item.setImageFiles(storeImageFiles); -Listfile insert 부분여기에는 데이터베이스를 이용하지 않아서 여러개의 file insert시 list를 이용했는데 데이터베이스에 넣을 땐 List를 어떻게 넣어야하나요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
강제 지연 로딩 초기화에 관한 질문입니다.
우선 2개의 질문을 참고하였습니다.이것과이것입니다. 두개의 글을 종합해 보면, V1에서 Order리스트를 반환할때는 Lazy방식이기 때문에 Member객체가 프록시 객체이고, Jackson이 해당 해당 객체를 접근하는 순간 초기화한다는 것입니다. 그리고 해당 프록시 객체를 JSON으로 읽을수 있도록 도와주는 것이 하이버네이트5모듈이라는 것입니다. 여기서 궁금한 점이//강제 지연 로딩 설정 hibernate5Module.configure(Hibernate5Module.Feature.FORCE_LAZY_LOADING, true);이 코드입니다. 해당 코드는 강제 지연 로딩 설정이라고 하는데강의 21분 20초경 LAZY를 강제 초기화 한다고 나와있습니다.저는 위의 코드와 for (Order order : orders) { order.getMember().getName(); order.getDelivery().getAddress(); }이 코드가 같은 역할을 한다고 이해했습니다. 위의 두개의 코드를 삭제하면, 포스트맨으로 요청을 보냈을 때,Member, orderItems, Delivery에는 null 값이 들어갑니다. 두개의 코드중 하나를 넣으면 요청을 넣었을때 Member, orderItems, Delivery에 실제 값이 들어가게 됩니다. 하지만 위의 두 글을 종합한 내용을 보면Jackson이 해당 해당 객체를 접근하는 순간 초기화라는 내용이 있습니다. 그렇다면 이미 초기화 된 프록시 객체일텐데 왜 위의 강제초기화 코드를 넣어야 실제 값이 들어가게 되는지 궁금합니다. jackson이 프록시 객체에 접근할때 초기화가 되어서 두 코드를 넣지 않아도 null이 아닌 실제 값이 나와야하는 것 아닌가요? 글이 너무 길어 죄송합니다..ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
test method에 throws Exception
테스트 메소드는 production 코드에서 exception을 던질수 있기 때문에 웬만하면 throws Exception을 추가하는게 좋다.라는 내용을 보았는데, 김영한 님의 다른 강의에서 소개하신 live templates를 보면 throws Exception을 던지는 것을 기본 템플릿으로 사용하시더라고요.프로덕션 코드에서 exception을 던지지 않더라도 테스트 코드에서 관례상 throws Exception을 던지는 것이 좋을까요? 영한님은 어떤 의미에서 template에 throws Exception을 추가하셨는지 궁금합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
@RestController, @GetMapping import가 안됩니다. ㅠ
안녕하세요. 선생님따라서 코딩중인데 구글링결과대로 시도해봐도 딱히 해결되지 않아서 질문 남겼습니다... 제목 그대로 import 자체가 되지 않아요 ㅠ
-
미해결스프링 핵심 원리 - 기본편
컨테이너 생성시 파라미터 전달하여 빈 등록하기
@Test void findAllBean() { ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class,DiscountService.class); DiscountService discountService = ac.getBean(DiscountService.class); DiscountService.class 를 파라미터로 넘기면서 해당 클래스를 자동으로 스프링 빈으로 등록한다고 알고 있습니다 .static class DiscountService { private final Map<String, DiscountPolicy> policyMap; public DiscountService(Map<String, DiscountPolicy> policyMap) { this.policyMap = policyMap; DiscountService 클래스가 빈으로 등록되었으니 그럼 여기 DiscountService 생성자는 @Autowired 가 생략되어있다고 볼수 있는건가요? @Test void findAllBean() { ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class); DiscountService discountService = ac.getBean(DiscountService.class);@Component static class DiscountService { private final Map<String, DiscountPolicy> policyMap; @Autowired // 생성자가 1개인 경우 생략 가능 public DiscountService(Map<String, DiscountPolicy> policyMap) { this.policyMap = policyMap; 위의 코드와 아래 코드는 동일하다고 볼 수 있나요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Hibernate5Module의 기능 질문드립니다.
[질문 내용]양방향 연관관계에서는 엔티티를 직접 반환 할때 서로 연관관계를 타고타고 가서 무한 루프에 빠집니다. 따라서 한쪽에 무조건 @JsonIgnore 어노테이션을 추가하여 무한루프에 빠지지 않게 해주었습니다.이때 지연로딩이기 때문에 프록시 객체가 들어가서 버디바이트 에러가 발생하여 Hibernate5Module을 사용하여 해당 에러가 발생하지 않도록 조취하였습니다. 그런데 Hibernate5Module을 추가한뒤에 @JsonIgnore 어노테이션을 모두 빼봐도 V1이 잘 동작하는 것을 확인 하였는데, Hibernate5Module이 해당 기능도 수행하는 것인가요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
꼭 close()를 해줘야 하나요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]어디서 들은건데 java6부터인가 Connection, PreparedStatement, ResultSet 클래스가 상속받은 클래스중 AutoCloseable이 있어서 close로 받아 주지 않아도 상관없다는 얘기를 들었는데 잘못된 점이 있으면 말씀해주시면 감사하겠습니다.
-
해결됨스프링 핵심 원리 - 기본편
PrototypeBean 생성시점 질문입니다.
@Test void singletonClientUsePrototype() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class); } static class ClientBean { private final PrototypeBean prototypeBean; @Autowired public ClientBean(PrototypeBean prototypeBean) { this.prototypeBean = prototypeBean; } }이 코드에서 new AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class);이때 ClientBean은 싱글톤이어서 스프링 컨테이너에 생성되고 PrototypeBean은 프로토타입이라 생성되지 않습니다. (조회시점에 생성되므로 - getBean)static class ClientBean { private final PrototypeBean prototypeBean; @Autowired public ClientBean(PrototypeBean prototypeBean) { this.prototypeBean = prototypeBean; } }하지만 여기서 (의존관계 자동주입 시점)에 스프링컨테이너에 프로토타입빈을 요청하면 스프링컨테이너는 프로토타입빈을 생성해서 반환합니다.반환된 프로토타입빈을 ( 클라이언트 빈의 생성자를 통해) this.prototypeBean=prototypeBean; 에 의해서 내부필드에 주입되어서 보관합니다.라고 이해를 했는데 맞는지 궁금합니다.답변해주시면 정말 감사하겠습니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@Component 등록시 ApplicationContext 유무
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요복습중에 궁금한점이 생겨서 질문드립니다. @Component가 스프링 컨테이너에서 스프링 빈으로 등록되기 위해선 우선 스프링 컨테이너가 필요로 한데 이를 생성하기 위해서 ApplicationContext가 필요로하다고 스프링 핵심강의때 배웠었습니다. 그런데 현재 강의에서 applicationContext의 유무를 확인할 수 없어서 질문남깁니다.
-
미해결스프링 핵심 원리 - 기본편
스프링 빈을 수동 등록하여 문제 해결
강의 4분 35초 즈음에 스프링 빈을 수동 등록하여 문제를 해결한다 함은,application.properties 파일에서 override true 설정 뒤spring.main.allow-bean-definition-overriding=true AutoAppConfig.class 파일에서@Configuration @ComponentScan( basePackages = "hello.basic.member", basePackageClasses = AutoAppConfig.class, excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class) ) public class AutoAppConfig { @Bean("discountPolicy") DiscountPolicy fixDiscountPolicy() { return new FixDiscountPolicy(); } }상기 코드와 같은 방법으로 진행한다는 말씀일까요..?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 편의 메서드
JPA 활용편에서 간단하게 상품 댓글 기능을 추가해봤습니다.Item과 ItemReply는 일대다 양방향 관계이고, Member와 ItemReply도 일대다 양방향 관계입니다.< ItemReply 엔티티 >< ItemReply의 생성 메서드 >< ItemReply에 있는 연관관계 편의 메서드 >< Item 엔티티 >< Member 엔티티 > 이렇게 한 뒤, 서비스 코드를 만들고 테스트 코드를 짰습니다.근데 여기서 제가 생각한 흐름은 ItemReply를 저장할 때, 연관관계 편의 메서드에 의해서 List<ItemReply> itemReplies에 ItemReply가 1개씩 저장되는 것이었는데테스트 코드를 짠 뒤 실행해본 결과, 각각의 itemReplies에 ItemReply가 저장되기는 했지만 2개씩 저장이 됐습니다. 그래서 연관관계 편의 메서드에서 List에 추가하는 과정을 주석 처리한 후 다시 실행했는데 제가 생각한대로 동작하였습니다.궁금한 점 1. 연관관계 편의 메서드에서 List에 추가하는 과정이 있을 때, 2개씩 나왔다고 했는데, 1개는 연관관계 메서드에서 추가됐다고 하면 나머지 1개는 어느 부분에서 추가됐는지 모르겠습니다. < Test 코드 >< replyService.reply 메서드 >replyService의 reply 메서드입니다.< ItemReply.createItemReply 메서드 >
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
ModelView
안녕하세요. 복습하다가 궁금한 점이 생겨서요.public class ModelView필드에 private<String, Object> model = new HashMap<>();으로 선언이 되어 있는데컨트롤러에서 ModelView mv = new ModelView("save-result");mv.getModel().put("member", member);getModel()메서드가 model 객체를 반환하는데 이 model 객체는 private이므로 put을 못하지 않나요??
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
@Repository 빨간줄
BookMemoryRepository랑 BookMysqlRepository에 @Repository를 모두 붙이면 빨간줄이 강의상에선 나는데 저는 이상이 없는 데 혹시 스프링 버전 차이인건지 궁금합니다.
-
해결됨토비의 스프링 부트 - 이해와 원리
ApplicationRunner이 생성되지 않는 것 같아요.
return 위에 System.out.println은 실행되는데, return 람다 안에 있는 System.out.println은 실행되지 않는 것 같아요. 어디서 잘못된 걸까요..?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
urlPatterns관련
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요!강의내용에서 hello-form.html에 접근하기 위해 http://localhost:8080/basic/hello-form.html 을 이용했습니다. 제가 만약에 서블릿을 하나 만들고 urlPatterns를 /basic/hello-form.html 으로 만들면 hello-form.html 파일로 직접 접근하는 것이 아닌 제가 만든 서블릿으로 접근하는 것을 확인했는데요. 이 경우에는 url접근 우선순위를 1. 서블릿 Url매핑 찾기 2. 경로 정보를 이용해서 직접 html을 내려주기 이렇게 이해해도 되는지 궁금합니다!또한 이처럼 url을 겹치도록 설계하는 것 자체를 지양해야하는것인지 궁금합니다. 감사합니다!