묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
getter setter 인텔리제이에서 만드는 법
안녕하세요. getter setter를 만들려고 했는데 alt+Insert를 해도 generate에 test와 copyright만 뜨고 다른게 뜨지를 않습니다. 이럴땐 getter setter를 어떻게 만들어야 할까요 ㅠㅠ.. 구글링을 해봐도 모두 generate를 누르면 다 getter setter 탭이 뜨는데 인텔리제이 사용이 처음이라 어렵네요 ㅠㅠ..
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
메모리 데이터 조회 예제를 해보고 있는데 폼 데이터를 하나 더 추가하니 조회가 안됩니다.
안녕하세요. 회원 목록 Memory 에 저장하는거를 토대로 그냥 시간, 할 일 데이터를 받아와서 출력하는 예제를 해보고 있습니다. ( 수업 때 진행하셨던 부분을 토대로 한거라 구조는 같은데 Model에 date,work 가 저장되어 변수 하나 더 추가해서 해보는 중입니다. ) - 날짜, 할 일을 입력 받는 것까지 되는거는 확인 했습니다. - 1 을 보시면 아시다 싶이 id 값은 출력이 됩니다. 그런데 date 와 work 로 설정해놓은 데이터들이 출력이 안됩니다. 소스파일은 zip 파일로 묶어서 구글드라이브에 올려놨습니다. ( https://drive.google.com/file/d/1aTSxDKgxCr-do_l9oV0zNX3NTc7jDfRN/view?usp=sharing ) 한번 확인 가능하시면 어떤 부분을 놓치고 있는 것인지 조언 부탁드립니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
model의 attribute를 뷰에서 어떻게 아나요?
위에 ModelAndView를 반환해주는 V1메소드는 addObject로 뷰에 넘어갈 "data"에 "hello!"값을 넣어서 리턴해주는 것을 이해하겠는데 밑에 model에 addAttribute 해도 실제 return 값은 뷰 네임인데 어떻게 뷰에서 렌더링할때 data가 hello! 인지 알까요? model을 리턴한 것도 아닌데 어떻게 전달되나요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberRepository 에서 cannot find symbol 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] 안녕하세요!! 동영상 강의 잘 보고 있습니다. 강의 내용 대로 따라서 하고 있는데 MemberRepository 를 작성하고 나면 cannot find symbol 오류가 발생합니다. 자동으로 import 되는게 강의와 다르게 import java.lang.reflect.Member; 로 되고 있습니다. 동영상 강의에는 import hello.hellospring.domain.Memeber; 되어 있는데 여기에서 오류가 발생하고 있습니다. 어느 부분이 잘못 됐을까요.. package hello.hellospring.repository;import java.lang.reflect.Member;import java.util.List;import java.util.Optional;public interface MemberRepository { Member save(Member member); Optional<Member> findById(Long id); Optional<Member> findByName(String name); List<Member> findAll();}
-
미해결스프링 핵심 원리 - 기본편
안녕하세요. 회원 도메인이라는 단어에 대해 궁금합니다.
제가 알고있는 도메인은 ip 주소를 기억하기 어려워 기억하기 쉬운 주소를 부여한 것으로 알고있습니다. 그런데 이 맥락에서 보면 회원 도메인 설계라는 말이 무슨 말인지 이해가 가지않아서 질문남깁니다. 단순히 봤을때 어떻게 코딩할지를 다이어그램으로 그리는 작업 같은데 왜 저런 명칭이 붙는지 알 수 있을까요? 마찬가지로 vo라고 불리는 것을 도메인이라고 부르는 경우도 있던데 이 경우도 궁금합니다. 제가 궁금해서 찾아보니 http://naver.com/alkajdsf?asdlkjf 이런 url이 있을때 naver.com이 도메인이 되고, 전체적인 것은 url이 되는 것으로 알게됐습니다. 그렇다면 프로젝트를 생성 하면 앞의 naver.com이 변경되는게 아닌 / 뒤가 수정 되기 떄문에 url 쪽 용어가 더 맞는거 아닌가요? 도메인은 한프로그램에 하나가 고정되어 있는 의미 같은데요.. 어떤 점을 의아해하고 잘 모르겠는지 전달 됐을 것 같다고 생각합니다. 고생많으시고 건강 조심하세요.
-
미해결스프링 핵심 원리 - 기본편
Bean 관련 질문드립니다.
안녕하세요, Bean 관련해서 궁금한게 있습니다. 스프링컨테이너를 생성하고, 해당 컨테이너에 등록된 빈 이름들을 확인하는 테스트에서 보면 출력되는 것중 가장 첫번재는 appConfig인 것을 알 수 있습니다. AppConfig 클래스에서 어떻게 @Bean 어노테이션으로 등록하지 않은 'appConfig' 가 Bean으로 등록되는지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Runwith, springboottest어노테이션이 없이 테스트 하면 어떻게 되나요?
이전에는 그 어노테이션 없이 test를 진행했던것같은데 이번에는 저 어노테이션이 추가가되어있네요 어떤 차이인거죠? runwith 어노테이션은 junit에 내장된 러너를 사용하는 대신 어노테이션에 정의된 러너 클래스(springrunner.class)를 사용한다는데.. junit에 내장된 러너랑 어노테이션에 정의된 러너클래스랑은 무슨차이인건가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
영속성 컨텍스트와 트랜잭션에 대한 질문입니다.
안녕하세요 영한님. 늘 강의 잘 듣고 있습니다. 강의에서는 Controller단에서 찾아서 넘기면 JPA와 관계가 없는 애가 넘어온다고 하셔서 아래 코드로 테스트 해보았는데, 값이 변경되길래 조금 찾아보았고, 제가 이해한 것이 맞는건가 확인차 질문 올립니다. 1. Spring에서 Controller단의 경우 트랜잭션 범위 밖이기 때문에 읽기만 가능하며, 읽을때에도 영속성 컨텍스트에 등록은 된다.(기본적으로 open-in-view : true이기 때문에) 2. 하지만 말 그대로 "읽기"이기 때문에 persist / merge / flush 등을 호출시 에러를 터트려 트랜잭션 범위 밖에서는 값을 변경할 수 없다. 3. 그럼에도 아래의 코드로 item의 price와 name이 변경되는 것은 1번에 의해 item은 영속성 컨텍스트로 관리되고 있었기 때문이고 orderService의 order()가 종료될 때 플러시 발생 -> 더티체킹 동작시 DB에서 불러왔을때와 다르니 정상적으로 update 발생4. 만약 application.yml에서 open-in-view : false로 변경 시컨트롤러단에서 find 한 엔티티들은 영컨에 등록되지 않아 더티체킹도 안될 뿐더러 넘겨받은 member / item을 service단에서 그대로 사용하려 할 경우 에러 발생 (org.hibernate.LazyInitializationException: could not initialize proxy) ``` @PostMapping("/order") public String order(@RequestParam("memberId") Long memberId, @RequestParam("itemId") Long itemId, @RequestParam("count") int count) {// orderService.order(memberId, itemId, count);// 테스트 Member member = memberRepository.findOne(memberId); Item item = itemRepository.findOne(itemId); item.setPrice(88888); //더티체킹이 일어나는 시점은 트랜잭션 종료 지점이라 해당 지점에서는 변경이랑 관련이 없다. //그래서 트랜잭션이 있는 서비스 메소드 부분을 주석쳐버리면 변경은 일어나지 않는다.// 얘네는 다 에러// entityManager.flush();// memberRepository.save(member);// itemRepository.save(item); orderService.order(member, item, count); return "redirect:/orders"; } @Transactionalpublic Long order(Member member, Item item, int count) { item.setName("변경된 책 이름"); //배송정보 생성 Delivery delivery = new Delivery(); delivery.setAddress(member.getAddress()); delivery.setStatus(DeliveryStatus.READY); //주문상품 생성 OrderItem orderItem = OrderItem.createOrderItem(item, item.getPrice(), count); //주문 생성 Order order = Order.createOrder(member, delivery, orderItem); //주문 저장 orderRepository.save(order); return order.getId();} ``` 으로 이해했는데 맞는지 모르겠습니다...
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
forward에 관한 질문이 있습니다!.
안녕하세요 좋은 강의 항상 감사합니다!. 강의 내용에 "다른 뷰는 실제 뷰를 렌더링하지만, JSP의 경우 forward()를 통해서 해당 JSP로 이동해야 랜더링이 된다!" 는 내용이 이해가 되지 않습니다.ㅜ_ㅜ 이전 질문에 JSP가 아닌 다른 템플릿은 바로 렌더링이 진행된다? 는게 무슨의미일까요 ?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
${} 문법 관련 질문입니다!
${} 문법 사용 시 프로퍼티 접근법에 의해서 데이터 조회 시에는 getId()가, 저장할 때는 setId()가 자동으로 호출된다고 하셨는데 그럼 ${member.id} 를 작성했을 때 member.setId()를 호출하려면 어떤 식으로 코드를 작성해야 하나요??
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
api 응답객체 네이밍 및 new에 대해
안녕하세요. 강의 너무 잘 보고 있습니다. 좋은 컨텐츠를 제공해주시는 인프런과 영한님, 서포터분들께 감사드립니다. api응답 객체 네이밍에 대해 질문이 있습니다. 등록,수정의 경우 응답객체 네이밍이 ~~Response 조회의 경우 MemberDTO 를 Result로 래핑해서 보내는데 DTO와 Response로 네이밍하는 기준이 있는지 궁금합니다. 또 하나는, 좀 엉뚱한 질문일 수도 있는데 응답시마다 new를 통해 응답객체를 생성하는데 대규모 시스템에 성능에 크게 문제가 없는지와 응답 객체를 싱글톤으로 만드는 패턴같은것도 있는지 궁금합니다. 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
서버를 늘린다는 것이
1. 서버를 늘린다는 말이, 쓰레드를 늘릴 수 있게 서버의 성능을 올리거나 처리할 수 있는 컴퓨터들을 추가하는 건가요? 1-1. 그렇다면 서버의 성능을 올릴 때 제가 사용하던 서버의 컴퓨터 메모리, cpu 들을 올린다는 의미인가요
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Connection is closed 에러발생(해결)
안녕하세요 강사님! 덕분에 수업 잘 듣고있습니다. 스프링 통합 테스트 강의에서, 테스트 코드의 join함수를 실행시켰더니 java.lang.IllegalStateException: java.sql.SQLException: Connection is closed 에러가 발생했습니다. 원인파악을 위해 join함수 처음부터 천천히 디버깅을 시도했는데, JdbcMemberRepository 클래스의 save함수에서 try 구문의 conn을 할당받는 첫번째 pstmt변수에서 IllegalStateException을 발생시켰습니다. 어떤 원인으로 에러가 발생했으며, 해결방법이 궁금합니다. 아래에 제가 작성한 오류와 연관된 코드들과 에러메시지 첨부합니다. *close함수에서 conn.close()를 close(conn)으로 수정했더니 해결됐습니다. [테스트코드] [JdbcMemberRepository 클래스] [MemberService 클래스] [에러메시지]
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Repository와 Service의 이해
안녕하세요! 강의를 다시 보다보니 제대로 이해한건지 확실히 하고 넘어가고 싶어서 글을 쓰게 되었습니다. Repository에서 interface로 선언한 것은 각 기능별로 저장할 때 어떤 타입? 으로 저장할지(list 등) 이며 이를 가지고 class에서 implements를 하여 실제 구현체를 만드는데 각 기능별로 저장한 값을 어떻게 반환할지 단순히 데이터의 저장을 위한 기능 Service에서는 앞서 Repository와 Domain에서 정한 것을 가지고 실제로 동작하는 기능(조건이 있다면 조건 로직, 검증을 해야한다면 검증 로직 포함)을 작성하는 것으로 이해했습니다. 실제 구현 할 때 Service 부분을이 아무래도 비즈니스 로직이다보니 해당 부분에서 오류가 발생한다면 전반적인 작동에도 문제가 생기겠죠?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
8080포트 사용
.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
SetterInjection 사용 지양에 대한 문의입니다.
안녕하세요 영한님. 강의 늘 잘 듣고 있습니다.이번 강의를 듣던 중 Setter Injection 사용 지양에 대한 이유를 제가 제대로 이해하지 못해 질문 올립니다.Repository의 경우 런타임에 한 번 주입시켜놓으면 수정할 일이 없는데 굳이 그것을 Setter 메소드로 열어놓아 유지보수시 추적을 힘들게 할 필요 없다...이런 느낌으로 이해했는데 맞는지 알고 싶습니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
컨트롤러 단에서 프록시 객체 초기화
안녕하세요. 강의를 듣다 궁금하게 있어서 질문드립니다. 강의 중 for문을 돌려서 강제로 프록시를 초기화하는 부분이 있는데요. 제가 프록시 강의를 듣기로는 영속성 컨텍스트의 도움을 받을 수 없는 준영속 상태일 때는 프록시를 초기화하면 문제가 발생하는 것으로 알고 있습니다. 그리고 트랜잭션이 걸려있는 서비스단에 트랜잭션이 끝나면 영속성 컨텍스트가 끝나는 것으로 알고 있는데요. 현재 코드는 서비스가 아닌 Repository에서 바로 값을 가져오고 있고 해당 클래스는 트랜잭션이 걸려있지 않기 때문에 아직 영속성 컨텍스트가 끝나지 않아 컨트롤러에서 프록시 초기화가 가능한 것인가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
TimeTraceAop를 SpringConfig에 Bean으로 등록시 에러
[SpringConfig] [TimeTraceAop] [ERROR] 어떤문제인지 잘모르겠습니다
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
서비스 계층에서 비즈니스 로직을 넣은 이유?
안녕하세요, 몇 가지 궁금한게 있어서 질문드립니다. 1. (2:10 )서비스 계층에서 로그인 체크 비즈니스 로직을 사용한 이유가 있을까요?? 2. (8:10) 글로벌 오류로 처리하고 다시 폼으로 돌려보냈는데, 그렇다면 예외 처리는 어떤 경우에 써야하는 것인가요?? 항상 답변 감사합니다!!
-
미해결실전! 스프링 데이터 JPA
커맨드와 쿼리 분리
안녕하세요 영한님 강의 후반부에 커맨드와 쿼리 분리 라고 말씀하셨는데 여기서 뜻하는 커맨드는 어떤 것을 의미하는 것일까요?