
백엔드 프레임워크 만들기 (개정판)
₩55,000
초급 / Java, 객체지향, 관점지향
4.4
(5)
프레임워크는 개발자에게 필요한 공통기능이 있는 그 자체로 실행 가능한 소프트웨어입니다.
초급
Java, 객체지향, 관점지향
스터디
모집완료
인프런 강의 프리뷰 참여자 모집합니다. (22일까지)
스터디
모집완료
인프런 강의 프리뷰 참여자를 모집합니다. (재업)
스터디
모집완료
인프런 강의 프리뷰 참여자를 모집합니다.
질문&답변
이제 막 자바 문법 배웠는데, 이 강의를 수강해도 괜찮을까요?
안녕하세요. 제로입니다.서버개발을 이야기 하셨는데 입력과 처리 그리고 출력이 있는 프로그램을 의미하시는거죠? 스프링은 공통기능이 잘 만들어져 있고 그 공통기능을 활용해 프로그램을 쉽게 만들 수 있는 프레임워크 입니다. 따라서 스프링의 개념, 스프링을 활용한 쉬운 프로그램 정도를 이해하면 되고응용하고 디버그 하면서 프로그램을 만드시는 걸 추천합니다. 객체지향은 내가 만든 소스코드를 다른사람이 쉽게 사용할 수 있게 해주는 개념입니다.상속, 다형성, 캡슐화, 정보은닉 그리고 이런 기법을 활용해 재사용이 쉬운 코드를 만들게 되는거죠. 하지만 입력과 처리 출력을 가진 프로그램이 반드시 객체지향적일 필요는 없습니다.쉽고 직관적인 절차지향적인 코드로 기능을 빠르게 구현 한 뒤재사용이 필요할때 객체지향적인 코드로 리펙토링 하는걸 추천합니다. 따라서 질문하신 분의 답변을 정리하면스프링은 개념정도만 알아두고스프링 환경에서 디버그가 가능한 샘플 프로그램을 확보 한 뒤 이를 응용해 절차지향적으로 프로그램을 만들어 보세요.그리고 필요할 때 객체지향적으로 리펙토링 하는 과정을 경험하시길 바랍니다. 그 다음 제 강의를 통해 낮은 결합도 높은 응집도를 가진 재사용이 쉬운 코드를 만드는 법을 배우시는걸 추천합니다.
질문&답변
섹션 2 의 심화 파트에 대한 (파일올리기) 질문이에요
안녕하세요. 제로입니다.심화과정의 코드는 8주차 소스코드를 기준으로 설명합니다.https://github.com/zeroshift01/code5/tree/master/inflearn08 심화 과정은7주차 까지 기본 과정 학습 후필요한 것 만 선택 수깅할 수 있도록 구성했습니다. 감사합니다.
질문&답변
MasterController에서 ResourceBundle.getBundle() 질문입니다!
안녕하세요. 제로입니다. ResourceBundle init = ResourceBundle.getBundle("com.code5.fw.init");동작 과정을 설명드리겠습니다. 우리가 프로그램을 개발할 때 사용하는 통합개발환경(IDE, 인텔리제이, 이클립스)은많은 기능을 제공하고 있는데 그 중 자주 사용하는 기능은 자원관리와 빌드 그리고 실행 기능 입니다. 자원관리는 내가 만든 소스코드를 쉽게 찾고 수정할 수 있게 해주고빌드는 만들어진 소스코드를 컴파일 하고 실행 가능한 위치에 복사시켜주는 기능입니다.실행은 빌드된 자원을 기준으로 실행하게 되구요. 물어보신 내용을 이해하려면 빌드와 실행을 이해하시면 됩니다. 자원관리를 통해 init.properties 는 만들어지고 내용이 수정되고빌드를 통해 init.properties 자원이 특정 위치로 복사됩니다.인텔리제이 프로젝트 구성을 보면 빌드패스가 있을텐데빌드 패스는 [프로젝트루트]/WEB-INF/classes 로 설정이 되어 있고빌드 대상인 init.properties 가 [프로젝트루트]/WEB-INF/classes/com/init.properties 로 복사된다고 보시면 됩니다.물론 자원관리 기능이 있는 IDE 에 init.properties 자원이 2개가 있으면 불편하기 때문에IDE 에선 빌드 디렉토리 [프로젝트루트]/WEB-INF/classes 는 조회되지 않습니다. 빌드가 잘 되었으니 아래 코드가 실행을 합니다.ResourceBundle init = ResourceBundle.getBundle("com.code5.fw.init");IDE 는 프로젝트 구성에 사용된 CLASSPATH 를 찾고 JVM 에 넘겨줍니다.그리고 JVM 은 ResourceBundle.getBundle("com.code5.fw.init"); 컴파일된 바이트 코드를 이해하고/com/code5/fw/init.properties 자원을 찾습니다.자원을 찾기 위해 CLASSPATH 의 정보를 결합 /com/code5/fw/init.properties 를 찾게 되는데 이미지로 캡쳐해 주신 디렉토리 중 첫번째(0) 디렉토리 와 /com/code5/fw/init.properties 를 결합 파일을 찾고 init.properties 를 읽게 되는 겁니다. 개발자가 가장 고민하는 것 중 하나는 내가 만든 소스코드를 어떻게 하면 잘 찾게 하는 것에 있는데ResourceBundle 클래스는 이를 위해 클래스패스를 활용한다고 보시면 됩니다. "Can't find bundle " 오류가 발생하면제일 먼저 클래스패스를 확인하고 클래스 패스 경로에 해당 properties 자원이 있는지 확인하면 됩니다. 질문 감사하구요. 도움이 되었길 바랍니다. * 질문을 잘못 이해 했네요. 빌드는 java 파일일경우 컴파일 후 복사돠고 java 파일이 아닐경우 복사만 되는 과정입니다.클래스는 복사되는데 프로퍼티파일이 없는 경우라 하면 인텔리제이 빌드 설정에서 복사 예외 자원이 있는지 확인해 보시겠어요.
질문&답변
m1 맥북 환경 구성 오류
혹시 사용 가능한 관계형 dbms 있으신가요?sqlite 특성때문에 M1 환경애서 제약이 있어사용가능한 RDBMS 가 있다면 그것에 맞게 환경 구성해 드리겠습니다.특정 was, 특정 dbms 에 의존적인(그 기능을 사용해야만) 프레임웍은 가치가 없는데해당부분에 대해 확장성을 보여 드리는 것도도움이 될 것 같습니다.
질문&답변
getRequestDispatcher() 질문드립니다.,
안녕하세요. 제로입니다.챕텨 1 MasterController.java 를 보면 아래 코드가 있습니다.그걸 기준으로 설명드릴께요.RequestDispatcher dispatcher = request.getRequestDispatcher(jspUrl); dispatcher.forward(request, response);- getRequestDispatcher() 가 포워딩 역할인지?코드를 그대로 읽어보면request 객체에 있는 getRequestDispatcher() 기능을 통해 dispatcher 객체를 가져온 뒤dispatcher 객체에 있는 forward() 기능을 사용함을 알 수 있습니다.그렇기 때문에 getRequestDispatcher() 는 포워딩을 하는게 아닌RequestDispatcher 클래스로 포장된(형태가 정해진)dispatcher 객체를 얻을 수 있는 기능입니다.실제 포워딩은 dispatcher 객체에 있는 forward() 기능을 통해 합니다.- 다른 서블릿에 넘기는지dispatcher.forward(request, response); 기능은 출력을 다른 서블릿으로 넘기는게 아닙니다.request, response 객체를 같은걸 쓰기 때문입니다.- 객체바인딩이라고 봐도 되는지이후 강의때 IOC 와 DI 를 설명할텐데거기에는 동적으로 클래스를 로드 하고 객체를 생성하기 위한 생성자(초기값)을 개발자의 코드가 아닌 데이터로 실행하는 걸 볼 수 있습니다.좀 어렵게 이야기 했는데객체바인딩은 개발자의 코드가 아닌 데이터로 객체를 만들어내는 과정이라 볼 수 있고그렇게 보면RequestDispatcher dispatcher = request.getRequestDispatcher(jspUrl)코드를 통해 만들어진 dispatcher 객체는 객체바인딩을 통해 만들어 졌다고 볼 수 있습니다.jspUrl 이 데이터 역할을 합니다.질문 주셔서 감사합니다.
질문&답변
혹시 강의 관련된 내용을 블로그에 정리해서 올려도 되나요?
안녕하세요. 제로입니다. CODE5 프레임워크의 소스코드는 MIT 라이센스를 따릅니다.따라서 출처만 적어주시면 소스코드를 그대로 사용해도 무방합니다.단 강의 컨텐츠의 저작권은 인프런에 있기 때문에캡쳐 등 내용을 그대로 올리시면 안되지만이해한 내용을 정리하는 2차 가공 컨텐츠는 괜찮습니다.머리속에 이해하는 지식 보다꺼내 남에게 설명하는 지식이 좀 더 가치가 있다고 믿기에만드는 블로그 응원하겠습니다.감사합니다.
질문&답변
인텔리제이 디버그 모드에서는 어떻게 쓰레드를 볼 수 있나요?
안녕하세요. 제로입니다.인텔리제이 특성인지는 모르겠지만디버그 모드에서 브레이크 포인트를 잡아야지 쓰레드 항목이 보입니다. 아래처럼MasterController.java 클래스의 service 메소드에 디버를 설정 한 뒤RunCode5 를 디버그 모드로 실행합니다. (사진) 이후 브라우저를 열어 서비스를 접속 하면 디버그 포인트가 잡히는데http://localhost:18080/waf/callList?findStr=abcd (사진) Debugger 아래 Frames 를 클릭하면 쓰레드 항목을 볼 수 있습니다. (사진)