묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의에서 43초 부분에 @GetMapping관련하여 질문이 있습니다.
제일 처음 hellospring으로 간단히 코드를 만들었을때 @GetMapping("hello")를 하면 localhost:8080/hello를 치면 그 코드가 실행되는 걸로 기억을 하는데그럼 여기서도 혹시@GetMapping("/members/new")이렇게 해도 되고@GetMapping("members/new")이렇게 입력해도 결과값은 같게 나오나요? 그리고 지금 이 강의에서MemberController와 MemberService둘다 스프링빈에 등록되어 있어서 MemberController생성자에 MemberService를 쓸 수 있는것이 맞나요?
-
미해결스프링 핵심 원리 - 고급편
강사님 사소하지만 궁금해서 질문남겼습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]스프링이 지원하는 프록시 섹터를 듣고 어느정도 프록시 팩토리에대해 이해를 한 상태입니다. 조금 더 깊은 이해를 하고싶어서 다른분들의 블로그를 검색해보았는데 프록시 팩토리빈이라는 단어를 선택하더라구요... 차이점을 찾아헤메던중 뭔가 사이다같이 원하는 답이 나오지 않아서 이렇게 질문을 남기게 되었습니다. 프록시 팩토리와 프록시 팩토리빈의 차이점이 정확히 뭔지 궁금합니다.!!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA시 테이블 자동생성 및 마이바티스와의 혼용
JPA에서 엔티티를 설정해주면 자동으로 디비에 테이블을 생성해줍니다. 강의내용중에 생성되는 테이블 ddl을 그대로 안쓰고 정제해서 쓰신다고 하셨는데,그말은 jpa로 Auto로 생성되는걸 막아놓고, 디비에서 직접 create를 하신다는 말씀이신가요?? 그리고 혹시 jpa와 mybatis를 같이 사용 할 수 있나요? 서칭해보면 가능하다고 하는데, jpa사용법은 나름 숙지된 상태인데팀플젝으로 마이바티스를 사용하고 싶은 상황입니다.같이사용하기 어려울까요? spring: jpa: hibernate: ddl-auto: update
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
redirect시 @RequestParam이 동작을 안합니다. ㅠㅠ
강사님 일단 로그인안한 상태에서 /items에 접근하면 -> 이렇게 쿼리파라미터를 들고 login페이지로 새로 보여주는거까지는 잘됩니다. -> 근데 여기서 /items로 redirect해줄려고 @RequestParam어노테이션을 사용해서 쿼리파라미터를 받아오려고 하면 이렇게 뜨거든요. 그래서 제가 컨트롤러 단에서 페이지를 다른 페이지로 돌리고 로그를 찍어보닌까 @RequestParam으로 redirectURL이라는 쿼리파라미터를 못불러 오는것 같습니다. defalutURL을 넣어서 / 로 해주면 계속 /로가고 저걸 안넣어주면 쿼리파라미터를 찾을 수 없다고 에러가납니다. 이런 경우 어떻게 해결해야 할까요? 강의랑 특별히 다르게 한건 없는데;;;
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
timeTraceAop만들고 SpringApplication 실행하는데 걸린 시간이 안나오네요..
결과창이 이렇게 뜨는데 아무리 고쳐봐도 안되네요.. *************************** APPLICATION FAILED TO START *************************** Description: The bean 'timeTraceAop', defined in class path resource [com/example/hellospring/Service/SpringConfig.class], could not be registered. A bean with that name has already been defined in file [C:\Users\zzang\Downloads\java\hello-spring\build\classes\java\main\com\example\hellospring\aop\TimeTraceAop.class] and overriding is disabled. Action: Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
DTO 와 Form_2
안녕하세요! 영한님! 영한님께서 올려주신 여러가지 강의를 보고 코드를 작성하다가,제가 예전에 질문하고 피드백 주셨던 부분이 생각나서 질문드리려고 합니다. https://www.inflearn.com/questions/125911 예전 질문의 내용은 이렇습니다! 이때는 의문이 들었던점이 정확히 정리가 안되어 더 질문드리지 못하고 넘어갔었습니다.이제 좀 정리가 되어서 재질문 드리려고합니다. Book 과 같은 Entity는 하나의 도메인에서 사용되는게 아니라 광범위하게 사용되고,현재 패키지를 어떻게 나눌지 감이 잘 안잡힙니다. 따라서 현재(Book) Entity => example.xxx.model에 두었고 dto => example.xxx.model.dto 이렇게 두었습니다. 이런경우 위에서 말씀하신 Entity가 dto를 참조하는데 다른 패키지에 있는 상황입니다. 이럴 때는 BookService에서 메소드로 Dto를 받고, Entity를 조작하는 형태로 변경해야 할까요?아니면 설계가 잘못된것인지, 패키지를 어떻게든 같이 놓는 방법이 맞을지 궁금합니다.개념에 구멍이 뚫려있는 느낌입니다 ㅜㅜ
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
@JoinColumn 질문
안녕하세요 영한님. 좋은 강의 덕분에 이해가 정말 잘 되고 있습니다!! 다름이 아니라 @JoinColumn에 궁금한게 있어 질문드립니다. 예를들어 아래의 두개의 코드를 비교 해보면 위에는 @JoinColumn 을 사용하였고 밑에는 그냥 @Column을 사용하였다는 차이점이 있습니다. 물론 어플리케이션 딴에서 그럴일은 거의 없겠지만 제가 무조건 order를 사용하는 케이스가 orderId를 조회하는거 밖에 없다면 위의 코드보다 아래의 코드가 더 좋은 것일까요? 왜냐하면 orderId를 찾기위해선 위에 코드는 user.getOrder().getId() 와 같이 코드를 짜고 이때 DB에 Order에 대한 쿼리가 또 나가기 때문에 하지만 밑에 코드는 그냥 user.getOrderId만 하고 따로 쿼리가 안나가기 때문에 밑에 코드가 더 이 경우엔 효율 적일까요? public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToOne private Order order; public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "orderId") private Long orderId;
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
SpringConfig 빈등록 오류
강사님 코드를 따라 치면서 질문 중복이지만 해결이 안되서 질문드립니다. 1. MemberService의 생성자 확인 MemberRepository로 구현 2. MemoryMemberRepository에 Repository인터페이스 구현 위의 둘다 정확하게 한거같은데 뭐가 문제인지 궁급합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO 의 Entity 변경에 대한 위치에 대해서 문의드려요
안녕하세요 . 김영한 강사님 , 강좌 초반을 학습하다가 궁굼한 부분이 생겨서 문의드립니다. 강의에서 생성 메소드를 만들때 전달받은 DTO 를 Entity 로 변환하는 로직을 Controller에서 수행하였는데 , DTO -> Entity , Entity -> DTO 에 대한 책임을 Controller에 위임 하시는 편인가요 ? (저의 경우는 그 책임을 Service layer 에 두고 modelmapper 를 사용하고 있습니다.) @PostMapping("/api/v2/members")public CreateMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request) { Member member = new Member(); member.setName(request.getName()); Long id = memberService.join(member); return new CreateMemberResponse(id);}
-
미해결실전! 스프링 데이터 JPA
update 실무
안녕하세요 ㅎㅎ 실무적으로 궁금한게 하나 있어서 질문드립니다 update 쿼리는 실무에서도 100% 더티체캉으로 해결하나요 ??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
강사님 질문입니다!!!
현재 loginService에서 DB에 있는 값 체크할 때 if(member.getPassword().equals(password)) { return member; } else { return null; } 이런식으로 비밀번호만 체크하잖아요? 근데 아이디가 틀릴 수도 있으니 아이디도 체크해줄려고 if(member.getLoginId().equals(loginId)) 이런식으로 조건을 더 추가를 해주면 비밀번호만 체크하고 아이디가 다를땐 500에러를 내거든요? java.util.NoSuchElementException: No value present 이런 에러인데요,.,. 아이디랑 비밀번호가 모두 일치해야 성공로직을 돌고 아이디가 없으면 아이디가 없다고 비밀번호가 다르면 비밀번호가 다르다고 이렇게 구성하려면 어떻게 해야할까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
entity vs form vs dto
entity vs form vs dto 1. 이들은 각각 어떤 특징이 있다고 생각하면 될까요? 2. 이셋을 큰 틀로 보자면 모델로 봐도 되나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
thymeleaf 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
forward에 대해서 궁금합니다.
나중에 가면서 이해되겠지 하고 천천히 돌려보고 자료도 보고했는데 forward 가 되기때문에 렌더링이 마쳐진다는 강사님의 말씀이 이해가지않습니다. forward가 redirect와는 달리 바로 쏴주는거같은데, jsp 에 쏴주게 됨으로써 html이 렌더링 된다는 말씀이신가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
접근지정자의 범위가 궁금합니다.
기본적인 접근지정자의 범위개념은 인지하고있습니다. 예를들어 protected는 해당 패키지외에 상속받은 다른 클레스가 범위인데, 현재 13분 50분경 service 가 protected로 되었습니다. 이때 꼭 저걸 써야되나? 싶은 의문이 들더라구요 그래서 실무에서의 각 접근지정자의 대략적인 범위? 예를들어 private라면 대략 생성자같은 클라이언트가 건들면 안되는곳을 지정한다 처럼요. 부탁드립니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티 VS 폼객체
강의내용 8:30 내용질문입니다. < API를 만들때는 엔티티를 외부에 반환하면 안된다 > 1. 필드가 그대로 노출됨 (ex.userpassword) 2. API 스펙이 변한다. (엔티티에 로직을 추가했는데 api스펙이 변한다) 솔직히 말씀드리면 전부 이해가 안됩니다..ㅠ 이전 강의에서 FORM에 입력되는 데이터를 Member 엔티티를 쓰는게 아니라 따로 만들어준 MemberForm을 쓰는이유는 이해했습니다. (Member객체 코드가 지저분해질수 있고, Valid 기능같은것을 사용하지못해서) 그것과 유사한 이유인것 같은데... 정확히 이해가 안되네요 사실 api라는 개념도 정확하게 잡히지 않습니다. 정리해서 질문 하겠습니다. 1. 저희가 강의에서 만들어준 api가 있나요??? (혹시 MemberController의 메서드들이 모두 api에 속하는건가요?) 2. 필드가 노출된다는게 무슨말인지 모르겠습니다. 예를들어 폼에 password입력칸이 있는데, 이게 어떻게 노출이 가능하다는 것인가요? 3. api의 스펙이 바뀐다는 부분이 이해가안됩니다. api스펙이 무엇을 뜻하며, 그게 바뀌면 무슨 문제가 생기나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
예외테스트 중 저번강의에서 햇던 것과 차이
Exception을 테스트하는 부분에서 궁금한 점입니다. 해당 강의에서는 @Test(expected = IllegalStateException.class) 어노테이션과fail()함수를 이용해서 테스트하셨는데, 이 강의보다 최신강의로 알고있는 spring 기본편에서 테스트하실때는 아래코드와 같이 하셨습니다.두 테스트 차이가 있을까요? @Test public void 회원가입_중복() throws Exception { // given Member member1 = new Member(); member1.setName("인프런"); Member member2 = new Member(); member2.setName("인프런"); // when memberService.join(member1); // then IllegalStateException e = assertThrows(IllegalStateException.class, () -> { memberService.join(member2); }); assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); }
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
service와 controller의 역할에 대한 질문이 있습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]service와 controller의 역할에 대한 질문이 있습니다. 강의를 듣고 활용해던 도중 의문점이 생겼습니다. 한참 찾아봤는데 아직도 모르겠어서 질문드립니다. 저의 기존 코드에서는 어떤 컨트롤러의 post 요청에서 A,B,C 엔티티가 반드시 순서대로 생성된후 저장되어야 합니다. (참조관계 떄문에 그렇습니다) 기존에 저는 컨트롤러에서 A 엔티티 생성 -> AService.createA() 한 후 B, C도 동일한 과정을 거칩니다. 이러니까 컨트롤러가 서비스의 역할을 해버린다고 생각했습니다. 그래서 컨트롤러는 그냥 dto를 넘겨주고 서비스에서 위의 작업을 하려했습니다. 그랬더니 몇가지 문제가 생겼습니다. 1. service에서 repository만을 사용하면 코드 중복이 심함(create 할때 복잡한 중복검증 로직이 있는대, 그것까지 전부 다시 해야함) 2. service에서 service를 주입받아서 하자니 순환참조, 나말고 코드 이해도 낮은 다른사람이 손대면 실수할 가능성 높음 등등의 문제가 생김 그래서 그냥 원래대로 냅두려니 controller가 너무 크고 service가 하는게 그냥 repository로 요청 보내기인 경우가 대부분임 그래서 질문은 1. 적절한 방법이 뭘까요? 2. 복잡하고 큰 규모의 서버 코드를 보고싶은데 좋은 예시를 어디서 찾을수 있을까요? 3. 제가 해결방법으로 여러 service를 주입받아서 사용만하는 service를 만들어서 컨트롤러에 있던 코드를 거기로 옮겨서 컨트롤러에 비즈니스 로직이 생기는걸 없에고 순환참조, 코드 중복 등을 제거 해봤는데 이게 맞는건가요? 4. MSA와 상관있는 문제일까요?
-
미해결스프링 프레임워크 핵심 기술
릴로딩 기능에 대해
MessageSource의 릴로딩 기능은 어느 때 사용하는지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
도메인 설계를 잘하고 싶어요 (학습에 대한 고민 상담)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예...아니오...애매합니다ㅠㅠ2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 선생님의 강의를 재밌게 듣고 있습니다. 백엔드에 대한 기초 지식 하나 없다가 자바 기본서 하나 읽고 바로 선생님의 강의를 들었어요. 그래서 중간에 많이 버벅대긴 하지만 레고를 맞추는 듯 즐겁게 진행중입니다. '주문과 할인 도메인 설계' 까지 선생님꽈 쭉 공부를 진행하던 중... 고민이 생겼는데요, 분명 선생님의 설명을 들으면 설계가 정말 기가 막히게! 이해가 되지만, 스스로 설계를 해볼 수 있겠나? 물으면 대답을 못하겠어요. 알고리즘에 대한 공부를 제대로 안 하고 바로 넘어와서 이런 걸까요? 사실 프로그래밍을 배우면서 늘 '보면 이해 되는데 직접 못하겠어' 라고 느낀 적이 상당히 많았는데요... 여태까진 이 막막함을 견디고 하다보면 뭔가 나중에 이해가 되긴 되었지만. 가끔 너무 막막할 땐 어떻게 해야 할지 모르겠네요. 학습을 할 때 나무가 아닌 숲을 바라보는 어떤 비결이 있을까요? 학습법에 대해 조언을 구하고 싶습니다! 선생님의 강의를 좀 더 제대로 곱씹고 이해하고 싶어요. 좋은 강의 감사합니다! 덕분에 저 꽤 멀리까지 왔어요ㅎㅎ 선생님 강의를 듣다가 문득 뒤를 돌아보면 정말 깜짝 놀란답니다!