묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 핵심 원리의 개념이 어떻게 녹아 들어간건지 모르겠습니다
안녕하세요. 스프링 핵심 원리 강의와 MVC 1편 강의를 마친 뒤에 궁금한 점이 생겨 질문 드립니다 핵심 원리에서 배운 것 중에 중요한 개념들이 싱글톤, 스프링 컨테이너 이런 것들이었다고 생각하는데 MVC 강의 들으면서 뭔가 이런 개념들이 어떻게 녹아들어간 건지 잘 모르겠습니다.. 뭔가 핵심 원리에서 보던 @Configuration, @Bean, @Autowired와 같은 애너테이션도 하나도 안보이고 해서 두 강의가 연결이 더 안되는 것 같습니다. MVC 강의에서 어떤게 스프링 컨테이너와 연결되고, 어떤게 빈이랑 연결되는지 좀 알 수 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
학습 커리큘럼 관련 질문
여태까지 노드로만 개발을 조금 해오다가 이번에 스프링으로 프로젝트를 하려합니다! 약 4개월 동안 개발을 진행해야 하는데 최대한 빨리 실전에 투입할 수 있는 기본기를 배워 개발을 진행하면서 시간 날때마다 개념을 더 알아가는 식으로 공부를 해야할 것 같습니다. 로드맵을 처음부터 쭉 다 듣기에는 시간이 부족할 것 같은데 어떤 순서로 학습을 진행하는 것이 가장 효과적일까요?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
강의와 관련된 내용입니다
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예) model.attribute에 관한 내용2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 강의를보며 다른소스를 보다가 궁금한점이 생겼는데 컨트롤러에 일부분입니다. for(int i=0; i<lst.size(); i++){ URL obj = new URL(lst.get(i)); URLConnection conn = obj.openConnection(); is = conn.getInputStream(); isr = new InputStreamReader(is, "UTF-8"); in = new BufferedReader(isr); jsonObj = (JSONObject)jsonParser.parse(in); String comboNm = lst.get(i).substring(lst.get(i).indexOf("=")+1, lst.get(i).indexOf("&")); model.addAttribute(comboNm, jsonObj.get("RTN_RSN")); } 이런식으로 모델에 담겨주는데 이 컨트롤러에 리턴되는 view 페이지는 예를들어 return "example/2.do"; 입니다. 그런데 2라는 view 페이지에 가면 comboNm 라는 값을 불러오는게 하나도 없고 ex) ${comboNm} 이런것들 바로 select된 값을 가져오는거 같은데요 이럴수가 있나요?
-
미해결자바 스프링부트 활용 웹개발 실무용
부트 로그인 화면
스프링 부트를 사용하여 로그인 로직 구현중에 있는데요 최초로그인을 할경우 비밀번호를 변경하고 싶어요 ㅠㅠㅠ 근데 최초로그인을 어떻게 만들어야 되고 어떻게 구현할지 잘모르겠어요 ㅠㅠㅠ 구글링 찾아봐도안나와서 문의 드립니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
스프링 로드맵을 보면서 따라가고있는 수강생입니다.
스프링 핵심원리 기본편까지 보고 네트워크를 본 후 다음 강의를 뭘할지 고민중입니다. JPA도 들을 생각인데 네트워크를 본 후 바로 JPA활용편으로 가서 JPA로드맵 수강 후 스프링 MVC에 들어가야할지, 아니면 스프링 MVC 수강 이후 JPA강의를 봐야할지 고민이 됩니다... 강의 수강 순서 추천 부탁드립니다.
-
미해결스프링 핵심 원리 - 기본편
토비의 스프링 3.1 교재 관련
안녕하세요, 김영한 강사님. 좋은 강의 너무 잘 듣고 있으며, 강사님의 로드맵대로 따라가고자 합니다. 그래서 스프링 관련 도서를 구매하고자 하는데(토비 스프링) 해당 교재는 스프링 3에 관련된 내용이고 현재는 대부분 스프링 5이상을 사용하는 것으로 알고 있습니다. 그래도 토비 스프링 교재를 구매하는게 좋을까요 ?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
JPA
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]JPA강의 Hibernate부분에서 Hibernate: insert into member (id, name) values (null, ?)이라고 나와야 하는데 저는 Hibernate: insert into member (id, name) values (default, ?) 이라고 뜨는데 차이가 뭐고 어떻게 하면 null로 나오게 할 수 있을까요?
-
미해결
[전자정부] 한 화면에 폼 입력,저장 리스트화면을 구현하려고합니다
ajax를 쓰지않고 그냥 저장누르면 새로고침되면서 리스트에 추가되게 만들고있는데 java초보라 어렵네요오류코드를 보니 sql에서 에러난거같은데 아무리봐도 제대로 넣은거같습니다.DB에서 직접넣은 데이터는 리스트에 잘나옵니다... 근데 form에서 입력하면 아래 오류가 뜨네요..혹시 다른문제가 있을까요? 몇시간을 삽질하고있는건지 모르겠습니다 ㅠㅠ 에러코드 2022-03-20 22:09:15,731 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml] sql.xml <sqlMap namespace="CodeSpace"> <typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/> <typeAlias alias="codeVO" type="egovframework.example.sample.service.CodeVO"/> <insert id ="codeDAO.insertCodes"> INSERT INTO codes(codegid,codegnm,code,codenm,useat) VALUES(#codegid#,#codegnm#,#code#,#codenm#,#useat#) </insert> <select id="coodDAO.selectCodesList" resultClass="egovMap"> SELECT codegid,codegnm,code,codenm,useat FROM codes ORDER BY codegid ASC </select> </sqlMap> Controller @Controller public class CodeController { @Resource(name="codeService") private CodeService codeService; @RequestMapping(value="/codeList.do") public String selectCodesList(@ModelAttribute("Codevo") CodeVO vo, ModelMap model) throws Exception{ List<?> list = codeService.selectCodesList(vo); System.out.println("list ===>>" + list); model.addAttribute("resultlist",list); return "code/codeList"; } @RequestMapping(value="/codeWriteSave.do") public String insertCodes(@ModelAttribute("Codevo") CodeVO vo) throws Exception{ String result = codeService.insertCodes(vo); if (result == null) { System.out.println("저장성공"); } else { System.out.println("저장실패"); } return "foward:/codeList.do"; } } jsp <form:form action="/codeWriteSave.do" method="post" commandName="Codevo"> <label>그룹코드<form:input path="codegid"/> <label>그룹명<form:input path="codegnm"/> <label>코드<form:input path="code"/> <label>코드명<form:input path="codenm"/> <label>사용여부 <form:radiobutton path="useat" value="Y" label="Y"/> <form:radiobutton path="useat" value="N" label="N"/> </label> <button type="submit" onclick="fn_submit(); return false">저장</button> <button type="reset">취소</button> </form:form>
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
빌드시 경로가 재대로 인식이 안되는거 같습니다.
빌드과정에서 에러가 발생합니다. 읽어보면은 프로젝트안에서 build 폴더를 찾아서 들어가야 하는데, 앞에 B가 빠지고 uild 만 남아서 없는 폴더에 접근하려는거 같습니다.. 딱히 파일 건드린 거도 없고 강의 내용 그대로 따라하면서 프로젝트명만 그냥 데모를 그대로 사용한건데.... 문제가 있을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
커리큘럼 질문드립니다
[질문 내용]안녕하세요 영한님 저는 국비 학원을 5달째 다니고 있는 문과생 늦깍이 취준생입니다. 컴퓨터의 세상은 정말 방대하고 어렵네요..이때까지 공부해 본 어떤 것보다 어려운 것 같아요.ㅎㅎ 영한님께 제 상황에 맞은 조언을 얻고 싶어 질문드립니다. 학원에서는 자바, jsp, 서블릿을 배웠고 특히 서블릿은 따라쳐보고 이해하려고 노력했는데 뭘 잘 아는 것 같지는 않습니다. 그냥 대충 흐름만 이해하고 넘어갔어요. 영한님 강의는 스프링 입문, 스프링 핵심원리,http기본 지식까지는 수강했고 수업 듣고 이해하려고 해보고 안되면 넘어가고 나중에 또 중요한 건 나오겠지 이러면서 정신 승리하면서 공부하는 중입니다. 친절하게 잘 알려주시고 큰 숲을 볼 수 있게 그려주시니까 좋은 것 같아요. 근데 마음 급한 학생은 뭔가 속성으로 빠르게 배워서 당장 포트폴리오를 만들어야 하는데(3주정도) 영한님 로드맵을 보려니 너무 막막합니다 ㅠㅠ 학원에서는 스프링부트로 게시판 만드는 것을 이번주부터 수업을 하는데 사실 수업일수가 별로 안 남아서 강사님이 수업을 다 진행해 주실지도 의문이에요. 이렇든 저렇든 이제 수료까지 3주 정도 남았고 팀원들과 스프링부트로 웹프로젝트를 하나 만들어야 합니다. 지금 상황에서 mvc1,2편 안 듣고 실전 스프링부트와 jpa활용을 들어도 될까요? 지금 상황에서 어떻게 들으면 효율적으로 공부할 수 있을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
안녕하세요. 스프링 로그인 유지 관련 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예/2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 들은 학생입니다. 이번에 스프링 인터셉터 - 인증 체크를 듣고 개발을 해보았는데요.김영한 강사님께서 만드신 로그인 세션 기능은 유저 한명일 때 잘 작동하는 것은 알 수 있는데, 궁금한 점은 유저가 여러명일 때는 작동이 잘되는가 라는 점입니다.세션은 서버의 메모리상에서 공유되는데 if( session == null || session.getAttrivute(SessionConst.LOGIN_MEMBER) == null ) .... 위와 같은 코드 부분에서 session이 있다고 하더라도 만약 다른 유저가 이미 로그인 되어 있다면(로그인을 했다면), session과 세션의 SessionConst.LOGIN_MEMBER 키에 대한 값은 이미 존재합니다.따라서 저는 이번에 예시로 작성해주신 로그인 세션 유지 기능이 유저 한명이 일 때만 작동한다고 생각합니다. 아직 제가 많이 부족하고 많이 모자랍니다. 나쁜 의도로 질문한 것이 아니라 너무 궁금하고 아무리 찾아봐도 모두 강사님처럼 코딩을 하셔서 질문남겨봅니다. 항사 강사님께서 쉽고 친절하게 설명해주신 덕분에 쉽게쉽게 스프링을 이해하고 잘 배워갑니다. 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
gradle 설정관련 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예 맞습니다2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네 없는 네용입니다.3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 전부 확인했습니다.[질문 내용]안녕하세요. 선생님의 강의를 보면서 스프링을 배워가는 학생입니다. 처음 인텔리제이와 gradle 설치 이후 sdk관련된 gradle 싱크 문제로 큰고생 후 이제 설정이 완료되었다고 생각했는데 저는 선생님처럼 gradle 칸을 열어도 dependency 부분이 보이지 않습니다. 또한 hello-spring.build부분도 색깔로 처리되어서 메소드등이 인식되는것이 아니라 회색 밑줄로만 표시되는데요 이부분도 제대로된 세팅법을 알고 싶습니다. 기본적인 세팅부분인지라 질문에 등록되지 않았던 부분인것 같은데 해결책을 알 수가 없네요..
-
미해결
스프링 단위 테스트 진행 및 통합 테스트 진행 문제 발생
안녕하세요스프링 강의를 듣고 공부한 내용을 연습삼아서 예제를 만들어보는데요. service 로직을 테스트하는데 오류가 걸려서 질문을 올립니다. 연습은 김영한 강사님의 스프링 강의를 참고하였습니다. --문제 DB를 적용하지 않은 MemoryRepository를 주입 후 searchById를 단위 테스트 진행시에는 성공하나, 전체 테스트를 진행하면 오류가 납니다. * 해당 테스트 부분 코드 * 단위 테스트 시 성공 * 전체 테스트 진행 시 오류 똑같이 객체를 생성해서 저장한 뒤, 해당 Id로 조회를 했으나 결과는 저장된 내용이 없다고 합니다. 저는 위 상황이 repository가 전체 테스트 진행시 리셋이 안됐다고 판단했습니다. 따라서 강의에서 배운대로 @AfterEach를 작성했지만, 여전히 오류에 걸리고 있습니다. 어느 부분을 놓치고 있는지 이유를 알 수 있을까요? (추가적으로 컨트롤러를 생성해서 실제로 구동할 때에는 문제가 없습니다.)
-
미해결코딩으로 학습하는 GoF의 디자인 패턴
안녕하세요 기선님 전략패턴 실무 적용에 있어서 궁금한점 질문합니다.
안녕하세요 기선님 전략패턴 강의를 듣고 프로젝트에 적용하고 있는데요 아래와 같은 어려움을 전략패턴으로 개선하고자 합니다. singleResult, listResult 에 따라 responseEntity를 생성하는 로직이 컨트롤러 method 마다 겹친다. 아래와 같은 방법으로 개선하고자 합니다. RestAPI spec에 맞는 httpResponse를 하기 위해.. org.springframework.http.ResponseEntity<T>와 spring hateoas를 사용하여 resultTemplate 이라는 큰 틀에 responseStrategy를 인터페이스로 두고 singleResult 전략과 listResult 전략을 만들어 각 전략에 맞는 로직을 수행하여 컨트롤러에서는 전략패턴을 통한 최종적인 responseEntity를 리턴하려 합니다. 궁금한 점 1. responseEntity 와 hateoas 를 전략에서 처리하는게 무리 일까요? 2. 이런 불편함을 개선하기 위한 더 좋은 디자인패턴이 있을까요? 3. 이런 로직으로 하게 된다면 결국엔 return type이 rawType(ResponseEntity)으로 IDE 딴에서 warning을 주는데 개선할 방법이 있을까요? 감사합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
MultipartFile을 String으로 형변환? 문자열로 출력 가능한가요??
안녕하세요. 한가지 궁금한 점이 있어서 글을 남기게 되었습니다. org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile@745ec3eb 위에 값은 List<MultipartFile> 안에 들어있는 값 중 하나인데 이거를 문자열로 출력이 가능한가요??? toString은 안되더라구요..! 도저히 혼자 해결하지 못하고 있어서 도움을 요청드립니다 ㅠㅠ 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
동적 파일 위치에 대해서 여쭤볼게 있습니다!
안녕하세요. 김영한 선생님의 로드맵대로 현재 HTTP 부분을 수강중인 수강생입니다. 한가지 궁금한 점이 있어서 질문을 남기게 되었습니다. /resources/static/img는 웹사이트에서 메인 이미지 등 고정되는 정적 이미지를 저장하는 곳으로 사용하고 있습니다. 그래서 /resources/static/images 이런식으로 웹사이트 내에서 업로드 되는 이미지를 저장시키면 서버를 다시 키거나, 해당 폴더를 리프레쉬해야 이미지를 불러올 수 있는 것을 확인하였습니다. 웹사이트에서 등록되는 수많은 동적 이미지들은 어디에 두는게 맞는건가요??? 답변부탁드립니다. 감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
실제 Proxy 주입 확인에 대해 질문있습니다.
/* MemberController*/ @Autowired public MemberController(MemberService memberService) { this.memberService = memberService; System.out.println("memberService = " + memberService.getClass()); // 프록시 조회해보기 } /* MemberService*/ public MemberService(MemberRepository memberRepository) { this.memberRepository = memberRepository; System.out.println("memberRepository = " + memberRepository.getClass()); // 프록시 조회해보기 } 안녕하세요! 프록시 조회에 대해서 질문드립니다!! 프록시를 조회하고 싶어서 print문을 써봤습니다.그런데 MemberService 프록시는 MemberController 생성자에 print문을 작성해주고 MemberRepository 프록시는 MemberService 생성자에 print문을 작성해주어 확인했는데, MemberController 프록시는 어디에 print문을 작성해서 확인해야 하나요? 두번째 질문은 출력 순서를 보면 1. AOP START 다음 2. 레포지토리가 출력되고 3. END 출력 4.그 다음에 서비스 프록시가 출력되는데, 순서가 왜 이렇게 되는지 궁금합니다. 스프링을 실행시키면 어떤 부분이 가장 먼저 실행되나요?? AOP START가 가장 먼저 출력되는 걸 보니 TimeTraceAop가 실행되고 그 다음에 MemberService가 실행되는 것인가요..?? 작동되는 순서를 전혀 모르겠습니다ㅠㅠㅠ SpringConfig이 먼저 실행되어 START에 SpringConfig.memberSerivce 메소드가 찍히는 것인가요?
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 MVC에서 핸들러 매핑
[질문 내용]안녕하세요 스프링mvc 학습 중 궁금한 점이 생겨 질문 올립니다. 스프링 mvc에서 디스패처 서블릿이 핸들러 매핑할때 @Controller @RequestMapping 이 붙어있는 "클래스"를 찾아서 핸들러로 매핑 한다고 이해 했습니다. 그렇다면 어댑터는 해당 핸들러의 @RequestMapping("[url경로]") 애노테이션이 붙어있는 "메소드"를 실행 시켜주는것인가요?? @RequestMapping 애노테이션이 붙어있는 "메소드"를 컨트롤러라고 부르는건가요..? 만약 클래스 레벨에 @RequestMapping("[url경로]")가 있고 해당 클래스의 메서드가(애노테이션이 붙지않은 순수 자바 메서드) 단 하나뿐이라면 요청이 왔을때에 클래스의 메서드가 실행 되는것일까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
thymeleaf를 사용할때 Controller와 RestController의 차이 질문이요
thymeleaf 템플릿을 사용할 때 @Controller 사용하면 String으로 반환해서 페이지로 이동하는데 @RestController를 사용하면 String으로 반환할 때페이지로 이동을 못합니다... 그 이유가 무엇이고 어떻게 해결하면 좋을까요? 참고로 hello.html은 templates에 있습니다.. @Controller public class PostController { @GetMapping("/test") public String Test(Model model){ model.addAttribute("data","테스트입니다."); return "hello"; } } 여기서 아래처럼 RestController를 사용하면 페이지를 이동못하고 hello만 반환한다. @RestController public class PostController { @GetMapping("/test") public String Test(Model model){ model.addAttribute("data","테스트입니다."); return "hello"; } } 감사합니다.
-
미해결
스프링과 스프링부트 학습 순서가 어떻게 되나요?
안녕하세요. 스프링과 스프링부트 학습 순서가 어떻게 되나요? 또 취업을 위해서는 스프링과 스프링부트 중 어디에 더 중점을 둬야하나요?