묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
경로설정
1.서버를 실행하니 url이 http://localhost:8080/templates/basic/text-basic 여기로 매핑되어있는데 강사님 화면은 http://localhost:8080/basic/text-basic으로 되어있는데 뭐가 문제인가요?모든 url에서 템플릿을 빼니까 화면이 출력되긴합니다코드도 다 똑같이 따라했는데 뭐가 문제인가요..?import lombok.Data; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Controller @RequestMapping("/basic") public class BasicController { @GetMapping("/text-basic") public String textBasic(Model model) { model.addAttribute("data", "Hello Spring!"); return "basic/text-basic"; } @GetMapping("/text-unescaped") public String textUnescaped(Model model) { model.addAttribute("data", "Hello Spring!"); return "basic/text-unescaped"; } @GetMapping("/variable") public String variable(Model model) { User userA = new User("userA", 10); User userB = new User("userB", 20); List<User> list = new ArrayList<>(); list.add(userA); list.add(userB); Map<String, User> map = new HashMap<>(); map.put("userA", userA); map.put("userB", userB); model.addAttribute("user", userA); model.addAttribute("users", list); model.addAttribute("userMap", map); return "basic/variable"; } @Data static class User{ private String username; private int age; public User(String username, int age) { this.username = username; this.age = age; } } }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
무언가를 띄우셨는데 무엇인지를 모르겠어요
갑자기 어떤 창을 띄우시더니 "그냥 빌드 하시면 돼요"라고 하시는데문맥상 윈도우와 다른 진행 방식인 것 같거든요해당 부분을 이해하기 위해서는 어떤 부분을 공부해야 될까요? 섹션1 프로젝트 환경설정의 3분짜리 '빌드하고 실행하기' 영상입니다 0:16 즈음이에요
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
thymeleaf 에서 href 수정
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.href 부분만 수정 하였는데,이렇게 화면이 깨져버려요 왜 그런건가요 ㅠㅠ 디팬던시에 thymeleaf도 추가 돼 있는데href 수정 전에는 정상적으로 잘 나왔었어요 ㅠ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 공부에 대한 문의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요.이렇게 좋은 강의가 있는걸 지인을 통해 알게되어 이번주부터 듣고 있습니다. 아직 시작한지 얼마 안되어 스프링 입문에서 열심히 따라치면서 이런게 있구나 하고 있는 상황입니다.헌데 이 강의를 알기 전에 토비의 스프링 3.1이란 책을 샀거든요.불행중 다행인지 아직 포장을 뜯지 않았습니다. 1/2권 세트라 비닐 포장이 되어있거든요.이 강의를 듣는다면 토비의 스프링 3.1 세트 책까지 필요없을지 아니면 이 책도 보는게 좋을지 의견을 들어보고싶어 문의드립니다.이 강의로도 충분할듯하면(스프링하고 JPA 둘다 구매하였습니다) 책은 환불하려고 하거든요. 감사합니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
기본생성자
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.1.상품 도메인 개발에서 기본생성자는 왜 만드는 건가요??2.그리고 왜 id 를 제외한 생성자를 만드는건가요?(id 제외 이유)
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
TransactionSynchronizationMaganger 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요~ repository은 TransactionSynchronizationMaganger를 통해 트랜잭션이 적용되어 기존의 커넥션이 존재하면 그 커넥션을, 트랜잭션이 적용되어 있지 않아 기존의 커넥션이 없으면 새로운 커넥션을 받아올텐데요. 트랜잭션이 적용되어 기존의 커넥션이 존재할 때, 그 기존의 커넥션을 식별할 수 있는 방법은 무엇인가요? 즉, TransactionSynchronizationMaganger는 각 서비스에서 사용중인 커넥션들을 어떻게 식별해서 각 서비스에 전달하는지 궁금합니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
트랜잭션 전파 2관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]MemberService에는 @Transcational를 한 상태이고 MemberRepository, LogRepository 에는 @Transactional 을 정의하지 않은 상태에서 joinV2 method 를 사용하고 log에서 예외를 발생하는 상황이 궁금해서 실행해 봤습니다.LogRepository 의 예외를 Service에서 잡았기 때문에 전체적으로는 commit 하는 상황을 예상하기는 했는데 LogRepository의 save에서 예외가 발생하기 때문에 Log find 테스트에서 isEmpty를 예상했는데 로그를 찍어보니 로그예외_outerTxOff_success row가 log table 에 insert가 되어있네요.logRepository에서는 runtime exception을 반환하는데 어떻게 log table에 로그예외... username이 insert되는 거죠?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
회원 저장인데 201 Created가 아닌 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]아래 사진의 경우 회원 저장을 하는 상황인데응답 메시지가 201 Created가 아닌 이유가 뭔가요? 201 Created를 하기에 적절하지 않는 경우인지,아니면 201 Created를 해도 되는 상황이 맞지만, 그냥 200 OK로 한 건지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@InitBinder의 검증기 생성에 대해서
안녕하세요 해당 컨트롤러 안에 init()메서드가 있는경우 애노테이션Validated가 있는 메서드가 호출되는 경우만 init()가 호출 되는 건가요? 또 init가 호출될 떄마다 검증기도 새로 생성된다고 했는데 검증기도 객체인데 그 객체를 호출마다 새로 생성하고 리퀘스트 스코프 끝나면 검증기 객체가 자동 삭제되고 다른 호출일 때 또 새로운 검증기 객체가 생성되는 인식이 맞을까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
@PathVariable 관련 에러가 왜 발생했는지 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제가 "상품 상세" 강의를 들으면서 BasicItemController 안에 있는 @GetMapping("/{itemId}") public String item(@PathVariable Long itemId, Model model) { log.info("BasicItemController.item"); Item item = itemRepository.findById(itemId); model.addAttribute("item", item); return "basic/item"; }강의를 따라 위의 부분처럼 작성했을 땐java.lang.IllegalArgumentException: Name for argument of type [java.lang.Long] not specified, and parameter name information not found in class file either.라는 에러가 발생하고 @GetMapping("/{itemId}") public String item(@PathVariable(name = "itemId") Long itemId, Model model) { log.info("BasicItemController.item"); Item item = itemRepository.findById(itemId); model.addAttribute("item", item); return "basic/item"; }이렇게 작성하니 에러가 해결되었습니다. 위 코드는 왜 에러가 났는 지 궁금합니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
model 및 BindingResult을 사용할 때
model이랑 BindingReulst로 오류처리 하는 부분을 뷰로 넘겨주는 로직에 관해서 질문입니다. 지금은 타임리프를 사용해서 model 등을 값을 받아서 화면에 출력하는데 사용을 하지만 나중에 프론트 프레임워크를 사용하는 경우 해당 검증 방법을 그대로 쓸 수 있나요?? 보통 json형태로 값을 보내주는 걸로 알고 있는데 그 경우 검증 로직은 프론트 단에서 하게 되는지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
질문말고 요청입니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]수업이 주로 타임리프로 진행이되어 백엔드단에서 model이나 modelattribute를 많이사용하시는데요! 요새는 주로 템플릿엔진대신 spa를 많이사용하는걸고알고있습니다 혹시 강의에 중간중간 그럴경우에 어떤파라미터를 써야하는지 아니면 다른 방법을얗야하는지 혹은 별도 섹션 강의로 만들어주시면 좋은것 같습니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradlew build 시 오류입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]사진과 같이 intelliJ 에서 JDK는 17로 맞춰놓았습니다.그래서 빌드도 성공적으로 잘됩니다. 하지만 빌드 후, 제 로컬환경에서CMD에서위와같이 gradlew 입력시 ,아래와같은 오류가 뜹니다 ㅠ어떻게 해결할 수 있을까요?검색해서 해보라는 조치는 다해본상태입니다 ㅠ
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
@Bean 등록을 @SpringBootApplication 내부에서 해도 괜찮나요?
@Bean 등록은 일반적으로 @Configuration 애노테이션이 있는 설정 클래스 내부에서 이뤄지는 걸로 이해하고 있습니다.하지만 ItemServiceApplication 클래스를 보면 @Configuration이 아닌데도 TestDataInit가 @Bean으로 등록되고 있습니다.@Import(MemoryConfig.class) @SpringBootApplication(scanBasePackages = "hello.itemservice.web") public class ItemServiceApplication { public static void main(String[] args) { SpringApplication.run(ItemServiceApplication.class, args); } @Bean @Profile("local") public TestDataInit testDataInit(ItemRepository itemRepository) { return new TestDataInit(itemRepository); } } 찾아보니, @SpringBootApplication 애노테이션이 이미 암시적으로 @Configuration 애노테이션을 포함하고 있기 때문에 가능하다고 봤습니다.실제 @SpringBootApplication이 @Comfiguration을 포함하고 있어서 위 코드가 가능한 게 맞나요?그렇다고 해도 이미 @Configuration이 붙은 MemoryConfig가 이미 있는데, 왜 굳이 @SpringBootApplication 에서 빈으로 등록하려는 건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
이렇게 쓰면 안되나요??
@Configuration public class WebConfig implements WebMvcConfigurer { @Autowired private FilterRegistrationBean<LogFilter> filterFilterRegistrationBean; @Bean public FilterRegistrationBean addFilter() { // FilterRegistrationBean<Filter> filterFilterRegistrationBean = new FilterRegistrationBean<>(); filterFilterRegistrationBean.setFilter(new LogFilter()); filterFilterRegistrationBean.addUrlPatterns("/*"); filterFilterRegistrationBean.setOrder(1); return filterFilterRegistrationBean; } }
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
이 강의 전에 뭘 공부해야하나요? 무슨소린지 하나도 모르겠는데..
자바'만' 알아요. 입문강의라고 해서 들어봤는데 자바 처음 공부할때처럼 자바란 뭐고 어디에 쓰이고 등등부터 알려주시는것처럼 알려주시는줄 알았는데 그냥 따라하기부터 바로 들어가시더라구여.... 저는 스프링이 뭔지, 어디에 쓰이는지, 왜 배워야되는지 등등 완전 기초적인것부터 알려주실줄 알았는데... 완전 기초용 강의는 없나요?....
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
[공유]Invalid value type for attribute 'factoryBeanObjectType': java.lang.String
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링 부트 버전 3.2.0 사용 하시는분들 mybatis 의존성 추가하실때 이렇게 추가하시면 돼요..!
-
해결됨[React 1부] 만들고 비교하며 학습하는 React
componentDidMount에서 getKeywordList()를 하는 이유
안녕하세요. 강의 재밌게 잘 듣고 있습니다.강의를 듣다 궁금증이 생겨 질문 남깁니다. store.getKeywordList() 메서드를 사용해서 keywordList를 storage에서 가져오는 작업을 componentDidMount에서 하셨는데,main.js의 search 메서드에서 submit이 발생했을 때, store에서 searchResult를 가져오는 것처럼keyword tab을 클릭했을 때 keywordList를 가져오는 방식으로 작성하지 않고 componentDidMount를 사용하신 이유가 궁금합니다. 아래와 같이 onClick과 핸들러를 사용하여 작성해도 정상적으로 동작하는 것처럼 보이는 것을 확인했습니다. handleTabClick(tabType) { if (tabType == TabType.KEYWORD) { const keywordList = store.getKeywordList(); this.setState({ keywordList }); } } ... const tabs = ( <> <ul className="tabs"> {Object.values(TabType).map((tabType) => { return ( <li className={tabType === this.state.selectedTab ? "active" : ""} key={tabType} onClick={() => { this.setState({ selectedTab: tabType }) handleTabClick(tabType)}} > {TabLabel[tabType]} </li> ); })} </ul> {this.state.selectedTab === TabType.KEYWORD && keywordList} {this.state.selectedTab === TabType.HISTORY && historyList} </> );
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링부트와 jpa모두 듣고 msa구축 설계
스프링부트 강의를 듣고 김영한님 유투브와 jpa entity 설계를 보던중 만약 리소스서버와 인증서버를 분리할때 유저의 entity를 리소스서버와 인증서버 2곳 모두에 설계 해야되나요?
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
JpaRepositoryV2 도입 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]제가 이해한 내용을 설명하고, 이해가지 않은 내용을 질문하려 합니다. Spring Data JPA 기술을 이용하여 SpringDataJpaItemRepository를 구성했고, 해당 interface를 바로 ItemServiceV1에서 의존관계 주입하여 사용하고 싶다.하지만, 이미 ItemServiceV1은 ItemRepository interface를 주입받아 사용하고 있기 때문에 SpringDataJpaItemRepository interface를 사용하려면 ItemServiceV1에서 코드레벨에서의 수정이 필연적으로 일어나게 된다.(문제점 1)또한, SpringDataJpaItemRepository는 ItemRepository를 extends한 것이 아닌 JpaRepository를 extends한 것임.(문제점 2)따라서 이런 문제점들 때문에 JpaItemRepostioryV2 class를 도입하여 ItemRepository와 SpringDataJpaItemRepository 사이를 맞추려 한다. 위 내용처럼 서술했을 때 올바르게 서술한 것인지 궁금하고,2가지 이해가지 않는 부분에 대해서 질문하고 싶습니다.첫번째: 문제점2가 왜 문제인건지 잘 모르겠습니다.두번째: “ItemRepository와 SpringDataJpaItemRepository 사이를 맞추려 한다”에서 맞춘다가 정확히 어떤 것을 맞추는 것이라고 해야 표현 상 올바른 것인지 잘 모르겠습니다.