요즘 JAVA 기본기의 중요성을 다시 새삼스럽게 깨닫게 되었다.
2학년 이후로 JAVA 언어를 거의 사용하지 않았기 때문이다..........
spring? 진짜 완전 초보이다. 그래서 전자정부 프레임워크를 사용하는데 엄청 애를 먹고 있다.
너무 나 자신에게 화가 난다.😤후..
폴더와 파일이 너무 많고 처음 보는 이름에 각각의 폴더/파일 들이 어떤 역할을 하는지!!! 모르겠다....😤😤
그래서 오늘은 프로젝트를 하나하나씩 분석을 해보도록 하겠습니다!
* 이 글이 저처럼 '전자 정부 프레임워크' 를 처음 사용하는 분들에게 조금이라도 도움이 되었으면 합니다.
( 구글링 ..또 구글링 하면서 정리한 글 입니다. 잘못된 부분이 있을 수 도 있으니..참고바랍니다:) )
완전히 이해는 못하더라도 아~~ 이 폴더(디렉토리)는 이러이러 해서 존재하구나~ 이런 기능을 하는 구나~
정도만 이해하셔도 👍👍 엄청난 발전이라고 생각합니다.
프로젝트 분석 구조는 사진 -> 설명 순으로 진행하겠습니다.😤✍
프로젝트 분석하기
프로젝트 이름
프로젝트 생성시 지정한 이름이 표시된다.
src/main/java
앞으로 만들게 될 java 파일은 모두 src/main/java 에 들어 간다고 보면 된다.
자바(.java) 파일이 모여있는 곳입니다. 패키지로 잘 분리해서 자바 클래스를 생성해 사용하면 됩니다.
스프링에서 이미 MVC 패턴의 서블릿 구조를 잡아주기 때문에 따로 서블릿을 만들 필요 없이 스프링 구조에 맞춰 클래스 파일들을 작성해주면 됩니다.
src/main/java/egovframework.example.cmmn ...
자 이부분이 내가 제일 몰라서 답답했던 부분이다. 도대체 src/main/java 안에 이것들은 왜 있는걸까?
찾아본 결과 우선 cmmn 은 common 즉 '공통' 의 약어이다. 말 그대로 우리가 만들고자 하는 프로젝트에 공통적으로 쓰이는 기능들을 만들어 담아 둔 폴더라고 보면 된다.
다시 말해, 모든 컨트롤러에 전역으로 적용되는 initBInd를 정의하거나,
예외상황이 생겼을시 어떻게 할지를 전역으로 설정하거나,
게시판 같이 페이지를 넘어가는 기능 등.. 공통(전체)에 적용되는 부분을 여기서 관장한다고 보면 될것 같다.
한 마디로 , 이부분은 아직 건들지 않아도 된다. 나중에 숙달이 된다면 그때 시도해보자.
컨트롤러(Controller)
src/main/java/egovframework.example.sample.web
ㄴ EgovSampleController.java
controller ! 무엇인가 제어하는것? 맞다. 사람으로 치면 두뇌에 해당하는 중요한 곳이다.
앞으로 사용자가 요청이 들어왔을때, 그 요청을 어떻게 처리할지 정의하는 곳 ==> controller라고 한다.
ex) 예약, 고객 이 있다면
예약 Controller
고객 Controller
이렇게 예약에 대한 모든 기능 / 고객에 대한 모든 기능을 Controller에 담아둔다.
즉, 어떻게 작동할지 조작을 제어하는 곳이다.
자 그러면 이제 Controller 파일을 직접 분석해보자!
첫줄에 보면 package 하고 egovframework.example.sample.web; 이라고 되어있는데 이놈은 진짜 별거 아니다.
바로 파란색 화살표를 따라가보면 이 컨트롤러 파일이 있던 폴더의 이름이다. (=파일이 속해있는 패키지 디렉토리 경로)
이제 부터 문제다.. 갑자기 import가 급 많아졌다. 머리가 지끈거린다. import (== 뭔가를 넣어주는것)
흠..그러니까 컨트롤러에 필요한 기능들을 import 해서 넣어주는거다. 그럼 우리가 구현해서 import해서 넣어주냐??..
그건 미친짓이다.? ㅇㅇ 전자정부프레임워크 에 저 import 기능들이 포함되어 있기 때문에 쉽게 말해서
"똑똑,, 이 놈좀 여기에 가져다 쓰겠습니다" ? 라고 이해하면 될것같다.
조금 스크롤을 내려보니 @가 등장한다.. 이놈을 어노테이션(Annotation)이라고 하는데
@를 이제부터 보면 얜! 이라고 부르자
의미는 "얜! 이런 성격을 가지고 있어! " 라고 알려주는것!!
==> 아래 데이터가 어떤 데이터인지 설명해주는 데이터라고 보면 된다.
65번 줄에 @controller가 있으니까 바로밑에 public class EgovSampleController 는 controller 라는 성격을 가진 친구라고 설명하고 있다고 볼 수 있는것이다.
컴퓨터는 내가 앞서 controller 에 대한 설명을 @controller 로 "아! 컨트롤러구나~" 하고 한번에 알아 먹는다.(진짜 대단한 놈이다😮)
66번째 줄에 public class EgovSampleController { 는 pubic class 를 의미하며, 여기서 EgovSampleController 는 이 컨트롤러의 이름이다. 이건 지금 해당 파일명과 동일해야한다.
69, 73 77 줄에 내가 네모칸으로 해둔 @Resource 는 그러면 어떤 의미일까 ?
앞에 설명했듯이 private EgovSampleService는 resource 라는 형태(성격)을 가진 친구!라고 해석 할 수 있다!
그럼 그뒤에 (name ="sampleservice")는 Resource의 이름은 sampleservice 라는 놈이고 이놈과 연결 시킨다라는 의미를 가지고 있다.
private EgovSampleService sampleService 부분은 EgovSampleSerivce가 자료형 , 여기서 사용할 이름이 sampleService라고 선언한다.
즉, @Resource (어노테이이션) 이놈을 이용해 연결된 sampleService라는 객체의 데이터를 받았다라고 보면 된다.
서비스
src/main/resources
자바 클래스에서 사용하는 리소스를 보관하는 곳입니다. DB 연결을 위한 자원, 의존성 주입(DI)을 위한 xml 파일 등
자바 코드 외 모든 자원은 이곳에 넣어주면 됩니다.
src/test (java/resources)
같은 역할이지만 테스트를 위한 자바 코드와 리소스를 보관하는 곳입니다.
(위 사진을 보면 아시다시피 사용을 하지 않아서 정확한 분석이 힘듭니다.. 추후 업데이트 하겠습니다)
Maven Dependencies
메이븐에서 자동으로 관리해주는 라이브러리 폴더입니다. "pom.xml"에 작성된 라이브러리들을 자동으로 다운 받아 관리해줍니다. 빌드툴을 사용함으로써 개발자가 직접 관리해주지 않아도 되는 영역이 되었습니다.
src
ㄴ main / test
Web에 관련된 자원이 담겨있는 루트 폴더입니다. 하위 폴더에 웹과 관련된 모든 자원들이 분류되어 있습니다. main 폴더 안에 모두 들어가고, test 폴더는 말 그대로 테스트를 위한 공간입니다.
(저는 test 폴더를 이용하지 않아 test하위 폴더는 없습니다.)
WEB-INF
웹에 필요한 코드 파일과 컴파일된 파일, 그리고 여러 환경설정 파일들이 보관되는 곳입니다. 보안이 중요한 파일들이기 때문에 외부 사용자가 직접 접근할 수 없으며 컨트롤러(정확히는 핸들러)를 통해 내부적으로만 접근할 수 있는 폴더입니다.
Maven 이란?
-자바 프로젝트를 위한 통합 빌드 툴 (Build Tool)
-프로젝트, 라이브러리, 의존관리를 자동 관리해주는 프로젝트 관리 도구
(메이븐을 사용할 경우 개발자가 라이브러리 관리를 따로 하지 않아도 된다는 큰 이점)
-빌드 과정의 프레임워크이자 자동화 시스템
'웹 개발자 준비 과정🐳 > 전자정부프레임워크' 카테고리의 다른 글
전자정부프레임워크_ Sample_SQL.xml 파일 분석하기. (2) | 2022.09.27 |
---|---|
정규식에 대해 알아보기 [JS] (1) | 2022.09.21 |
전자정부프레임워크 실행안될 때 해결방법 (+바로 꺼짐현상) (1) | 2022.09.19 |
'mariaDB/(mysql)'와 '전자정부프레임워크' 연동 + jar 파일 추가하는 법😎 (0) | 2022.09.19 |
전자정부프레임워크 & 아파치 톰캣 서버 연결 => 실행해보기 (0) | 2022.09.15 |