묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
AOP 의존성 추가
두가지 궁금사항이 있습니다.1.첫번째@Aspect 애노테이션 을 사용한다면의존성 추가해야된다고 인터넷에 나와있는데,꼭 안해도 되는건가요???implementation 'org.springframework.boot:spring-boot-starter-aop' 2.두번째TimeTraceAop class에 @Component 애노테이션을 추가하면 에러가 안나는데,SpringConfig class에 @bean 으로 등록시 에러가 납니다.콘피그에 빈으로 등록코드를 적을경우 또다른 코드를 주입해야되나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
formatter에 pattern이 일어나는 시점
@GetMapping("/formatter/edit") public String formatterForm(Model model){ Form form = new Form(); form.setNumber(10000); form.setLocalDateTime(LocalDateTime.now()); log.info("form={}",form); model.addAttribute("form",form); return "formatter-form"; } @PostMapping("/formatter/edit") public String formatterEdit(@ModelAttribute Form form){ log.info("post form={}",form); return "formatter-view"; }로그를 통해 form, post form을 출력해보았습니다.저는 처음 form은 그냥 입력한 값이 나오고 그다음 post form은 ModelAttribute에 들어갈 때public String formatterEdit(@ModelAttribute Form form){포멧터가 form의 타입을 변경하고 입력한다고 예상했습니다.하지만 로그를 보니 form=FormatterController.Form(number=10000, localDateTime=2023-04-23T12:39:53.251212) post form=FormatterController.Form(number=10000, localDateTime=2023-04-23T12:39:53)값은 값이 나오는 것을 확인했습니다. 제가 생각했을 때는 Argument Resolver 안에 ConversionService 안에 Formatter 가 controller를 호출하기 전 @ModelAttribute에 입력할 때 실행되지만@Data static class Form{ @NumberFormat(pattern = "###,###") private Integer number; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime localDateTime; }에서 @NumberFormat(pattern = "###,###") 패턴이 적용 되는 시점은 html에서"${{form.number}}"중괄호2개가 있을 때다. 그래서 로그는 값은 같은 값이 출력이 되지만 html에서는 다른 값이 출력된다. 라고 이해를 했는 데 맞게 생각한 것인지 궁금합니다. 답변주시면 정말 감사하겠습니다.
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
예제에서 사용하는 패키지구조와 실무에서 사용하는 패키지구조
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요.패키지 구조에 대해서 문의 드립니다.무료로 제공되는 Spring Introduction 강의에는 패키지 구조가 controller, domain, repository, service 이렇게 나누어 지는데요.Spring MVC1편, 2편으로 넘어오면서 controller, reposityory, service 패키지는 사라지고domain, web 패키지 밑에 비지니스 요구사항에 대해서 나온 업무, 예를 들어 item, login, member를 기준으로 서브 패키지를 만들어서 각각 domain, web 패키지의 하부 패키지를 두고 여기서 controller, repository, service에 필요한 내용을 섞어서 집어 넣었습니다.그리고 MVC 2편 강의로 가니까. web 패키지 밑에 argumentresolver, session 패키지 같이 비지니스 요구사항과 관련된 요구사항이라기 보다. 스프링 기능에 관련된 기능이 web 패키지 밑에 들어왔습니다.그러다 보니 패키지 구조가 Spring Introduction 강의에서 나누었던 패키지 구조보다 뭐랄까 중구난방으로 섞여있는 느낌이 듭니다.질문] 실무에서도 MVC 2편강의에 분리된 형태로 많이 하는지 아니면 Spring Introduction에서 제시한 controller, domain, repository, service 패키지를 기준으로 새로운 패키지가 추가 또는 세분화 되는지 궁금합니다.그럼 답변 부탁드립니다.감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Hello 서블릿 에러
hello 서블릿 생성 후 웹페이지가 구현이 안되네요 어떻게 해야 하나요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 컨트롤러에서 String 을 리턴하면 경로잖아요근데 그게 static에 있는 정적 리소스인지 templates에 있는 동적리소스인지도 구분가능한가요? 아니면 무조건 동적으로 가는건가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
라이브러리 살펴보기 3:45 질문
저는 왜 강사님처럼 오른쪽 창에 gradle이랑 database가 안보이는 걸까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
템플릿엔진이 없을경우 뷰리졸버는 작동을 못하나요??
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 처음에 타임리프 의존성 추가 없이 해서 계속 페이지가 없다고 404오류가 나왔습니다.다른분이 타임리프 없이 할 경우 어떻게 해야하는지 질문주신것에 restapi방식을 많이 사용한다고 답해주신것은 보았는데템플릿엔진이 없으면 아예 뷰리졸버가 동작하지 않는 것인지 궁금합니다.application.properties 파일에 spring.mvc.view.prefix=/resources/templates/ spring.mvc.view.suffix=.html이 코드도 추가해보고, static, templates 폴더에 모두 보여주고싶은 html파일도 넣어보았는데 controller는 동작하고 뷰가 없다고 합니다감사합니다 :)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradle build후 dir에서 jar파일이 안보여요..!
gradle build는 됐는데, 그 뒤에 dir에서 snapshot.jar파일이 안보입니다.이건 왜그럴까요..?ㅠㅠ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
required 질문이요
String[] messageCodes = codesResolver.resolveMessageCodes("required", "item");안녕하세요 이 코드에서 errorCode의 required는 errors.properties에 있는 required인가요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@Controller와 생성자에 @Autowired 중복할필요있나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 클래스에 컨트롤러 붙여주면 스프링빈에 자동등록되서 생성자에 Autowired 붙여줄필요없는거 아닌가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
DTO 사용범위
안녕하세요.아직 강의를 듣는중이지만, 여러가지 찾아보다가 궁금증이 생겨 질문 남겨봅니다.궁금한 것은 DTO의 사용범위(세분화 정도)와 Request 파라미터 Null 체크입니다.DTO는 클라이언트-서버 사이의 요청/응답 데이터를 전송하는 객체라고 이해했습니다.다른 기능을 하는 aController, bController내 API가 있고 회원 정보를 담고있는 MemberDTO가 있다고 상황을 가정했습니다.MemberDTO에는 name, email, number, sequence 파라미터 등등이 담겨 있고 sequence 파라미터에는 @NotNull 애노테이션이 붙어있습니다.이때, DTO 에서 @NotNull 등을 설정 후 사용하고자 하는 aController 내 API에서는 @NotNull 애노테이션이 적용된 sequence를 response값에 넣어주고 싶지만, bController에서는 MemberDTO 객체 중 sequence만 제외한 response가 필요하면 이때 bController에 맞는 DTO 객체를 하나 생성해 주는 게 더 옳은 것일까요? 이런 경우 실무에서 어떻게 해결하는 지 궁금합니다! 생각을 해봤을 때,기능을 달리하는 Controller 내 API마다 DTO 객체 생성하나의 DTO 객체에 각 기능 별로 보내도 되지 않는 파라미터는 제거 (2번이 그렇다면 방법이 궁금합니다. 찾아보면 좋은 키워드를 알려주셔도 감사하겠습니다. 질문이 두서없을 수 있지만 답변 주시면 감사하겠습니다.제가 이해를 잘못하고 있는 부분이나 영한 님의 강의 중 관련 내용이 있는 파트가 있다면 알려주시면 감사하겠습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MemberServiceTest 중 질문
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예-------------------------------------------------------[질문 내용]스프링 입문 강의 > 섹션3 > 회원 서비스 테스트 > 11:45 지점회원가입() 메서드 내에 member 객체의 이름을 spring으로 바꾸면, 중복_회원_예외() 메서드에서 join한 member1 객체와 충돌하여 에러가 난다고 설명해주셨습니다 . -> 질문 : 중복_회원_예외() 내부에서는 member1와 member2의 이름이 같기 때문에, 예외가 발생하며 member2가 가입되지 않았습니다.그런데 왜 그 후에 회원가입() 메서드에서 member1과 이름이 같은 member가 join할 때는 위와 같이 실행되지 않고, 런타임에러가 발생하는걸까요 ?? ( 이 때도 마찬가지로 join() 내부에 있는 validateDuplicateMember()가 실행되어서 member는 가입되지 않고, 정상적으로 종료할 것이라고 예상했는데, 왜 이렇게 되는지 궁금합니다 ..!! )
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
안녕하세요 강의를 듣고 따라하다가 등록일부분과 수정일부분에서 데이터가 갑자기 조회가 안되는 현상이 발생해서 질문드립니다 .
다른부분은 이상이없는데 무었이 잘못일까요?구글드라이브 링크 남겨드립니다 :https://drive.google.com/file/d/1ZxdPrRNo-zlr_IkRXwidukMYrpDr8Af5/view?usp=share_link
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
특정 컨트롤러에서만 발생하는 예외를 별도로 처리하는법
수업 자료에서" 특정 컨트롤러에서만 발생하는 예외를 별도로 처리하기 어렵다. 예를 들어서 회원을 처리하는 컨트롤러에서 발생하는 RuntimeException 예외와 상품을 관리하는 컨트롤러에서 발생하는 동일한 RuntimeException 예외를 서로 다른 방식으로 처리하고 싶다면 어떻게 해야할까? "라는 말이 있었습니다. 그렇다면 실무에서는 위에 문제를 @ControllerAdvice를 이용하여 해결한다고 이해하면 될까요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
다양한 ViewResolver를 사용하고 싶을 경우
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]다양한 ViewResolver를 사용하고 싶을 경우 어떻게 하는지 궁금해서 질문을 올립니다.예를 들어서 위 코드가 있고, 클라이언트에 요청이 들어오면 DispatcherServlet은 Adapter에게 받은 ModelAndView를 받습니다.InternalResourceViewResolver는 ModelAndView를 application.properties의 정보를 사용해서 View를 생성합니다.View를 render합니다. 서버는 위와 같은 순서로 진행된다고 생각합니다.그런데 만약 ThymeleafViewResolver도 등록해서, 어떤 요청은 jsp로 하고 어떤 요청은 thymeleaf로 동작하게 하려면 어떻게 해야할까요? "new-form" 이란 논리적인 View Name을 유연하게 물리적인 View Path로 변경하는 방법이 궁금합니다. 혹시 이렇게 사용하는 상황이 없기 때문에 지원하지 않는 것일까요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
백엔드 개발자로서 프론트에 대해서 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]리액트는 선택이고 타임리프는 알아야 한다고 하셨는데 제가 알기로는 요즘에는 REST 방식으로 JSON 형태로 주고 받고 요즘 자주 쓰는 React 같은 경우는 서버를 아예 따로 띄어주고 JSON으로 데이터만 주고 받고 하는데 타임리프를 꼭 자세히 알아야 하나요?여기서 말하는 자세히란 지금 현재 타임리프 문법은 대략적으로 알 고 있고 타임리프로 프론트가 작성되어 있는거 보면 알 수 있을 정도는 되는데 프론트를 혼자서 만들 정도는 안됩니다. (그게 맞지 않아서 백엔드를 선택했는데...)프로젝트 만드는데 타임리프로도 만들어야 할 정도로 알아야 하는지 궁금합니다. 현재 계획으로는 리액트하고 백엔드하고 나눠서 따로 서버 배포하고 백엔드는 REST 방식으로만 진행해서 MVC에서 View를 빼서 나누려고 하는데 타임리프로 알아야 한다면 이것도 프로젝트로 만들어야할지 고민이되서 질문드립니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 빌드 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]인텔리제이 터미널에서 gradlew.bat build를 치니 오류가 뜹니다. 해결방법 알 수 있을까요?
-
미해결스프링 프레임워크는 내 손에 [스프1탄]
memProfile 이름을 UUID로 주기
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님 혹시 newProfile변수에 UUID값을 줘도 되나요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
member와 login의 분리
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의에서 member와 login을 분리해주었는데요, 로그인할 때 member 도메인의 loginId, password가 필요하잖아요. 그럼 login할때 meber의 정보가 필요하니까 login을 member에 포함시켜주는건 부적절한가요?
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
setter와 생성자 사용에 대한 질문.
안녕하세요.스프링 MVC 2편의 섹션5 : Form 전송 객체 분리 개발 강의에서 5:45 쯤에강사님께서 "setter 보단 생성자를 사용하는 것이 더 낫다"고 말씀하셨습니다.따라서 위 코드를 Item item = new Item(form);처럼 생성자를 통해서 사용할 수 있도록 Item 클래스에 ItemSaveForm을 파라미터로 갖는 생성자를 만들면 되겠구나 라고 생각했습니다. 하지만 강의를 듣다보니 섹션 6 : 프로젝트 생성 강의에서강사님께서 도메인이 가장 중요하므로 도메인이 다른 패키지, 클래스에 의존하는 설계는 좋지 않다고 말씀하셨습니다. 따라서 제가 생각했던Item item = new Item(form);위 코드는 Item 도메인 객체가 ItemSaveForm에 의존하고 있으므로 좋은 코드는 아니라는 생각이 들었습니다.그렇다면 어떻게 생성자를 이용하여 ItemSaveForm를 Item 객체로 변환할 수 있을까요? ** 추가Item item = form.transToItem();처럼 ItemSaveForm 내부에서 Item 객체로 변환하는 메서드를 작성하는 것은 데이터를 전달만 하는 용도로 사용되는 객체의 역할에 벗어나는 것일까요?