묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
의존성 주입 방식, 컴포넌트스캔과 자바설정방식 관련질문입니다
안녕하세요! 강의 너무 잘 보고 있습니다. 스프링 혼자 공부해보려다가 넘 어려워서 안하게 됬는데, 흥미롭게 진행해주시는 강의듣고 조금씩 알아가는 것 같아 스스로도 기쁘고 감사합니다.ㅎㅎ 질문1 [스프링 빈과 의존관계]-[자바 코드로 직접 스프링 빈 등록 하기] 강의 7분 26초 에서 setter 주입 방식의 단점으로... 어플리케이션 로딩 시점에 한번 세팅되고 나면 이 멤버변수는 바꿀 일이 없는데 public으로 노출되게 된다는 점이 단점이라고 설명해주셨습니다. 그런데 6분 0초 필드 주입방식을 설명해주실 때 단점으로... 스프링이 시작될 때, 초기에만 설정되고 개발자가 동적으로 바꿀 수 없어서 추천하지 않는 방식이라고 설명해주셨는데요! 질문은! 어플리케이션 로딩 시점에 한번만 세팅되면 되는 거면, 필드 주입방식에서 초기만 설정되고 나중에 바꿀 수 없다는 점이 왜 단점이 되는 건지 이해가 잘 안됩니다! 한번 더 단점을 정리해주실 수 있을까요? 질문2 [스프링 빈과 의존관계]-[자바 코드로 직접 스프링 빈 등록 하기] 강의 2분 40초 에서 memberRepository() 메소드 반환형을 왜 MemoryMemberRepository 타입으로 하지 않고, 인터페이스 타입으로 하신 건지 궁금합니다. + 11분 25초 부분까지 강의를 들으니 알겠네요. ^^상황에 따라 다른 데이터베이스를 연결하는 내용의 리포지토리를 연결할 때, 서비스나 컨트롤러 코드를 변경하지 않고, 아래 파일에서 new 하는 객체만 원하는 리포지토리로 바꿔주면 되니까 그런거군요! package hello.hellospring.service;import hello.hellospring.repository.MemberRepository;import hello.hellospring.repository.MemoryMemberRepository;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class SpringConfig { // @Bean : spring bean을 등록할 거라는 의미 @Bean public MemberService memberService(){ return new MemberService(memberRepository()); } @Bean public MemberRepository memberRepository(){ return new MemoryMemberRepository(); }} 질문3 : 컴포넌트스캔방시과 직접자바설정방식 차이 잘 이해한건지 확인부탁드립니다. 컴포넌트 스캔방식 : 스프링은 @Controller, @Service, @Repository 어노테이션이 붙은 것들을 빈으로 등록해 관리한다. @Autowired로 각 빈들을 연결해준다. 직접자바설정 방식 : @Configuration과 @bean으로 스프링에 빈을 등록한다. @Autowired로 각 빈들을 연결해준다. 그런데, 이 강의에서 직접 자바 config를 만들때, @Service, @Repository, @Autowired는 지웠는데, @Controller 은 지우지 않았습니다. 이유가 무엇인가요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JDBC 순수 구현 import 오류
회원 리포지토리 코드를 복사했는데 import org.springframework.jdbc.datasource.DataSourtceUtis; 가 안됩니다. 어떻게 해결해야 하나요? 위의 사진처럼 오류가 생깁니다!!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 기준 단축키
선생님께서 '커맨드'라고 하는 건 컨트롤(ctrl)로, '옵션'이라고 하는 건 알트(alt)로 생각하시면 될 것 같습니다! 직접 프로그램 내에서 써보고 찾아보니까 아직까지는 다 맞았던 것 같아요! (ex. 옵션 엔터 = 윈도우에서는 alt + enter) (ex. 커맨드 옵션 M = 윈도우에서는 ctrl + alt + M )
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
리포지토리 테스트케이스 실행
테스트 케이스 실행했을 때 이렇게 뜨는데 제대로 되는건가요? 강의 영상에서는 아무것도 안뜨던데 저는 이렇게 결과가 뜹니다..!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
후반부 MemberServiceIntegrationTest에서 회원가입 실행 시 수많은 오류들이 나와서 질문드립니다!
패키지와 심볼 클래스를 찾을 수 없다고 나오는데 제가 라이브러리 다운로드를 잘못한건가 싶은데 정확하게 원인을 찾을 수 없어 질문 드립니다. 사진 첨부합니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이 초록색 단축키 알리미 질문
안녕하세요 강의 듣고 따라해보고 있는 학생으로서 IDE에 대해 간단한 질문인데요..! 강의 중간에 보면 인텔리제이 하단에 초록색으로 어떤 단축키를 통해서 무엇을 할 수 있다고 뜨는 것 같은데 제 인텔리제이에서는 그게 안뜨더라구요. 혹시 어떻게 나올 수 있게할 수 있는지 여쭤봐도 될까요...? 강의 잘 듣고 있습니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
SpringConfig파일 dataSource 밑줄 오류
안녕하세요 강사님 강의 잘 듣고 있습니다. 아래 사진처럼 밑줄 오류가 뜨는데 실행해보니 별 이상은 없습니다. 정확인 무슨 이유인지 알 수 있을까요? 이것 뿐만 아니라 tymeleaf의 model 데이터 인식 오류로 인해 model 데이터에도 밑줄 오류가 뜨네요 인텔리제이가 약간 이런 오류가 많나봐요 ㅠㅠ
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Whitelabel Error Page
안녕하세요 강사님 강의보고 그대로 했는데 http://localhost:8080 에서 회원가입이나 회원목록을 누르면 Whitelabel Error Page 요런 에러가 나오는데 어디서 잘못된건지 찾아도 잘모르겠어서요.. 요 캡쳐화면으로 찾을수있는걸까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
~/test.mv.db 요파일 생성 여부는
안녕하세요 강사님 ~/test.mv.db 요파일 생성여부는 윈도우이용자는 어떻게 조회할수있는지 알수있을까요..??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
질문 있습니다!!
안녕하십니까 강의 진짜 정말 유익하게 잘 듣고있는 졸업예정 취준생입니다. 컴퓨터공학이라는 전공의 수 많은 분야 앞에서 적성을 찾다가 최근에 웹개발로 마음을 굳혀서요.. 지금이라도 스프링을 배워보면서 포트폴리오용으로 CRUD 기능을 구현해보려고 하는데 바보같은 질문이지만 인정받으려면 html css javascript처럼 완전 기초의 언어가지고 만들어야 인정해주나요?.. 왜냐하면 지금 강의 앞부분만 들은 시점에서 스프링데이터 JPA가 CRUD기능도 다 제공을 해준다고 하더라구요... 그럼 구현 난이도도 그만큼 쉬워진다는건데 과연 스프링으로만 CRUD를 구현하는것과 프레임워크 없이 구현하는것과 회사 입장에서 많은 구분을 두는 편인가요?? 만약 그렇다면 JPA까지만 배운 상태로라도 CRUD를 구현해보려고 합니다.. 아예 이번 강의는 듣지 않은채로... (스프링 데이터 JPA를 귀에 담지 않은채로 라는 말입니다) 강의 정말 잘 듣고있습니다. 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
데이터 베이스 파일 생성이 되지 않습니다.
안녕하세요? 강사님. 항상 강의 잘 듣고 있습니다. 다름이 아니라, 제가 window installer 로 다운받은후에 H2 콘솔을 열어서 , 여러방법을 사용해서 데이터 베이스 파일 생성을 해보려고 했는데 되지가 않습니다. 주소창에 localhost:8082 도 해보고 저장한 설정 에서 server 대신 embedded 도 해보고, JDBC URL 에서 ~/test로 변경도 해보고 다 해봤는데 계속 똑같이 아래와 같은 것만 뜨네요... Database "C:/Users/user/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149
-
해결됨스프링 웹 MVC
세션에서 넘어오는 데이터 바인딩
강의 3분 정도의 설명에 session 에 있는 데이터를 받아와 @ModelAttribute 의 객체에 바인딩이 가능하다고 하셔서, 테스트를 작성해봤지만 실패해 테스트를 어떻게 작성해야하는지 질문드립니다.. 제가 시도한 방법은 다음과 같습니다. <컨트롤러> @Controller public class TestController { @PostMapping("/session") @ResponseBody public Event sessionTest(@ModelAttribute Event event){ return event; } } <테스트 코드 > @WebMvcTest class TestControllerTest { @Autowired MockMvc mockMvc; @Test void sessionTest() throws Exception { MockHttpSession session = new MockHttpSession(); session.setAttribute("name", "jaden"); mockMvc.perform(post("/session") .session(session) .param("limit", "10")) .andDo(print()) .andExpect(status().isOk()); } } <실행결과> 세션을 목업해서 넘겨봤는데, 바인딩이 되지 않아 null 이 찍힙니다. 또한, 두번째로 시도한 방법은 mockMvc 에 .sessionAttr 을 넣을 수 있어서 사용해 봤습니다. <테스트코드> @Test void test2() throws Exception{ mockMvc.perform(post("/session") .sessionAttr("limit", "10") .param("name", "jaden")) .andDo(print()) .andExpect(status().isOk()); } <실행결과> 하지만 마찬가지로 바인딩이 잘 되지 않는 것 같더라구요.. 어떻게 테스트 코드를 작성해야 제대로 바인딩을 할 수 있을까요? --- 아니면 혹시, session 에서 값을 받아와 setter 를 통해 직접 바인딩 해줄 수 있기 때문에 그렇게 말씀하신걸까요? 좋은 강의 감사드립니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
8:00 getter/setter 윈도우 단축키는
alt+Insert 하면 getter and setter를 생성 할 수 있습니다,
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cannot find symbol class Model 오류가 발생합니다
@Controller public class HelloController { @GetMapping("hello") public String hello(Model model) { model.addAttribute("data", "hello!!"); return "hello"; } } 위를 복사하여 실행할때, cannot find symbol class Model라고 오류가 발생합니다!ㅠ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
질문드립니다.
안녕하세요!강의 정말정말 잘 듣고있습니다! 예제에서는 모두 MemberRepository의 인터페이스를 통해 의존성 주입을 받도록 되어있는데, 그렇다면 스프링 데이터 JPA에서 제공하는 여러 기능들을 이용하기 위해서는 memberRepository에 사용할 기능을 추가해야 하는 건가요~? 새해복 많이받으세요!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
domain과 repository 질문
안녕하세요, 강의 듣다 궁금증이 생겨 질문 남깁니다. 질문 1. domain == vo, repository == dao 이렇게 똑같이 봐도 괜찮은 건가요? 같은 것이라면 왜 vo, dao가 아닌 다른 이름을 사용한 것인지, 다른 것이라면 (vo, dao)와 (domain, repository)의 차이점에 대해서도 알려주시면 감사하겠습니다. 질문2. 강의자료에 나오는 Memberservice, MemberRepository, MemoryMemberRepository들의 클래스 의존관계 그림은.. 이번 예제의 상황을 고려하여 만들어진 그림인가요? 아니면 실제 업무에서도 저런식으로 구성된다고 보면 되나요? + 어떤 디비를 사용할지 모르기 때문에 인터페이스로 만들었다는 말이 잘 이해가 안 되는데.. 디비접근방식을 탑재하지 않은 인터페이스를 만들어놓고 사용할 디비에 따라서 implements해서 사용하겠다..는 말이 맞나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
save() 메소드에서 member를 리턴하는 이유가 뭔가요??
안녕하세요. 좋은 강의 감사하게 잘 보고있습니다. MemoryMemberRepository에서 Member를 리턴하는 이유가 있는지 궁금합니다. store에 저장만하면 save()의 기능은 끝나는거 아닌가요? 굳이 member를 리턴하는건 왜 그런건가요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
source folder 설정법
안녕하세요 Eclipse 환경에서 강사님 강의를 따라하고 있습니다. MemberServiceIntegration.java의 테스트가 불가능하고 " The input type of the launch configuration does not exist "라는 오류가 뜹니다. 찾아보니 intellij에선 상관없지만 eclipse에서 발생하는 문제이며, source folder로 등록되어 있지 않기 때문에 발생한다고 하는데 build path 통해서 확인해보니 사진과 같습니다. 존재하긴 하는데 다른 폴더들과 달리 진하게?? 되어있어 source folder로 등록되어 있는 것이 맞는지 의문입니다. gradle 환경에서 따로 source folder를 강제로 등록시키는 방법이 있을까요??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
id값이 갑자기 이상하게 되는 현상
강사님 강의를 보면서 h2 db로 똑같이 진행중이었는데요, id값이 1,2,3,4 이런식으로 잘 들어가다가 갑자기 33이 되어버렸습니다. 마침 밑 질문에도 저와 같이 33이 되신분이 있길래 답변을 봤는데 "자동 생성이 33부터 들어가는 것은 아마 이전에 값을 넣었다가 지웠다가 해서 그럴꺼에요^^" 라고 답변을 주셨더라고요 근데 저는 이전에 값을 넣었다가 지운적이 없습니다. 그래서 33이 왜나왔지 하고 33을 지웠더니 갑자기 이번엔 65가 나와버리네요 데이터를 다 지워도 이 id값은 안내려가는데 id값을 다시 1로 바꾸는 방법이 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
H2 실행 관련 질문 드립니다 ^^
안녕하세요 김영한 선생님. 스프링 관련하여 좋은강의 정말 잘듣고 있습니다 ^^; 수업을 열심히 따라가던 도중 H2 실행과 관련하여 아래와 같은 에러 내용이 발생하여,아래와 관련한 에러가 발생하였으나, 끝내 배치파일로 실행을 하지 못하고 h2.bat 실행시 Error: Could not find or load main class org.h2.tools.Console 조치방법 1. JDK 8 / JavaSE 11 버전을 모두 삭제한 후 openJDK 11 로 설치2. 시스템 환경변수 재설정 - JAVA_HOME : C:\jdk11\openjdk-11+28_windows-x64_bin - H2_HOME : C:\dev_h2_db\h2 - CLASSPATH : .;%JAVA_HOME%\lib - path 추가 %JAVA_HOME%\bin %H2_HOME%\bin 이렇게 조치하였으나, 실행이 되지 않아 열심히 찾던 도중 h2 공식 문서에 cmd 에서 h2\bin 폴더에 접근 후 java -jar h2-1.4.200.jar로 실행하는 방법이 있다고 하여 겨우 구동시킬수 있었습니다.일단 파일에는 문제가 없다는 것인데, 제가 시스템 변수를 어떻게 수정을 해야 배치파일로 실행이 가능할까요?