관리 메뉴

꿈 많은 사람의 이야기

스프링(spring) 프레임워크 개발 - 프로젝트 구조 및 설명 본문

spring(스프링) 프레임워크

스프링(spring) 프레임워크 개발 - 프로젝트 구조 및 설명

이수진의 블로그 이수진의 블로그 2018. 4. 2. 16:21

지난 포스팅에는 스프링(spring) 프레임워크 설치와 프로젝트 생성에 대해서 알아보았습니다.

이번 포스팅에서는 스프링 프레임워크를 간단히 살펴보겠습니다.


1. 스프링은 관점지향 프로그래밍(AOP, Aspect Oriented Programming)을 지원합니다.

트랜잭션, 로깅 등 여러 모듈 등을 비즈니스 로직과 분리될 수 있도록 도와줍니다.


2. 의존성 주입(DI, Dependency Injection)을 지원합니다. 객체간의 의존관계를 관리합니다.

어떤 객체가 필요로 하는 객체를 외부에 있는 다른 곳에서 필요로 하는 객체를 받습니다.


3. 제어 반전(IoC, Inversion of Controller)을 지원합니다. 객체의 생성부터 생명주기 관리까지 객체의 제어권이 프레임워크에 있습니다.


4. POJO(Plain Old Java Object) 방식입니다. 기존 라이브러리 지원이 용이합니다.


스프링의 가장 큰 특징은 이렇게 4가지입니다.


이러한 특징을 알아두고 가면 좋습니다.


이제 지난 포스팅에 이어서 마저 진행해보죠

시간이 지나면 에러가 떠 있던 것이 사라집니다.





이렇게요 ㅎㅎ

에러가 사라졌습니다.


이제 구조를 한 번 봐볼까요?





대략 이런 구조로 이어집니다.

src/main/java는 java 파일이 모여있는 디렉토리이며, 앞으로 만들 java 파일은 여기에 들어갑니다.

src/main/resources는 스프링 설정 파일이나, 쿼리가 저장됩니다.

servlet-context.xml과 root-context.xml은 서블릿(servlet)과 관련된 설정파일이고

아래는 Maven 관련 파일입니다.



앞서 Maven은 자동적으로 필요한 라이브러리를 받아온다고 말씀드렸습니다.

Maven Dependencies 폴더를 보면 아래와 같이



필요한 파일들이 받아져 있습니다.



지난 포스팅에서 사용했던 repository 폴더에도 마찬가지구요



이제 하나하나 더 살펴보죠

먼저 controller 입니다.



위 처럼 주석으로 설명도 달아놓았지만

맨 위 RequestMapping 어노테이션은 GET, POST 방식의 차이를 알려줍니다.

그리고 아래는 자바 문법이고 현재 시간을 가지고 옵니다.

그리고 model.addAttribute라는 부분인데요.

serverTime이라는 이름으로 formattedDate 변수의 값을 전달해줍니다!

어디로 전달해주냐?

return 문을 보면 home이라고 되어 있네요

이건 home.jsp로 이동하라는 것입니다.

서블릿 설정으로 자동으로 앞에 /WEB-INF/views가 붙고(prefix)

뒤에 .jsp가 붙습니다.(suffix)





그리고 home.jsp로 오면 위와 같이 되어있죠

serverTime으로 서버에서 값이 넘어온 것을 가지고 옵니다.



그리고 서블릿(servlet)파일인 servlet-context.xml을 보면

prefix, suffix로 위에서 말씀드린 /WEB-INF/views/와 .jsp 가 자동으로 붙는 것이 명시되어 있습니다.




그리고 이 부분은 자동으로 어노테이션을 인식하게 하는 역할입니다.



또한 web.xml이 있습니다.

WAS(Web Application Server, 여기서는 Tomcat)이 구동될 때 WEB-INF 디렉토리에 존재하는 web.xml을 읽고 그에 해당하는

애플리케이션 설정을 구상합니다. 즉 웹 애플리케이션의 설정을 위한 설정파일이죠


자 이제 실행해볼까요?

서버를 가동시키고

localhost:8080/본인프로젝트이름/

을 입력합니다.



그럼 위와 같이 나오게 됩니다~

잘 실행이 되죠

근데 저기 2018? 4? 2? 이런식으로 나오는데

인코딩 설정을 바꾸면 됩니다.


home.jsp로 가서


위와 같은 내용을 추가해줍니다.


그리고 다시 실행하면

제대로 나오죠!


다음 포스팅에 이어서 진행하겠습니다!


0 Comments
댓글쓰기 폼