본문 바로가기
Spring Framework

Spring Framework 구조

by 쟈근꿈틀이 2022. 6. 20.
728x90

POJO(Plain Old Java Object): 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용 될 수 있는 방식으로 설계된 오브젝트


Spring DI ( Dependency Injection )

  • 스프링 컨테이너에 필요한 클래스들의 bean을 생성해 놓고 필요할 때 꺼내서 사용
  • 객체의 의존성을 직접(new) 연결하는게 아니라 spring(xml)이 연결
  • 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입
의존성 주입 방법

1.xml파일 내부에서 설정  2.자바 파일에서 Annotation을 사용


Spring IoC ( Inversion of Control )

  • 프로그램을 제어하는 패턴 중 하나
  • DI는 IoC패턴의 구현체 중 하나
  • 약한 결합을 이용하여 객체 간 의존 관계를 쉽게 변경할 수 있음
  • 개발자 대신 스프링 컨테이너가 필요에 따라 Bean들을 관리(제어)해주는 행위

따라서 Spring은 DI Framework 혹은 IoC Framework라고도 한다.


스프링 프레임워크 프로젝트 구조

프로젝트의 기본 구조와 설명[출처: https://devpad.tistory.com/24]

 

빌드
  • 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 그에 대한 결과물
  • 작성한 소스코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원 등(.xml, .jpg, .jar, .properties)을 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징 하는 과정 및 결과물(war파일을 톰캣 서버의 webapp 서버에 넣으면 해당 프로젝트를 사용할 수 있음)

빌드 도구란 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램이다.

Maven은 빌드 도구 중 하나로, 필요한 라이브러리를 Maven 설정 파일(pom.xml)에 정의해 놓으면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운받아 준다.

 

*<dependencies> 태그 안에 사용할 외부 라이브러리를 기입

출처: https://goddaehee.tistory.com/199 [갓대희의 작은공간:티스토리]

 

alt + F5 => 수정된 pom.xml에 맞게 메이븐 프로젝트 업데이트

 


 

<패키징>

해당 프로젝트의 target 폴더 안에 war파일이 생성된다. 버전이 다르면 다른 war파일로 인식된다.

 


 

servlet-context.xml 파일

<!-- Controller 어노테이션이 있는 클래스의 객체를 스프링 컨테이너가 자동으로 생성함 -->
<annotation-driven />

 

<!-- View Resolver는 prefix + 컨트롤러에서 반환한 jsp 파일명 + suffix에 접근하여 해당 jsp파일을 찾아 랜더링함   -->
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>

 

<!-- 어노테이션을 스캔할 패키지 설정 -->
<context:component-scan base-package="com.test.root" />

 

MVC 패턴

https://cocoon1787.tistory.com/733

 

[개발상식] MVC 패턴이란? (Model-View-Controller)

🚀 이번 포스팅은 개발자 면접에서 자주 나오는 질문 중의 하나인 "MVC패턴"에 대한 내용입니다. MVC패턴의 의미와 사용해야 하는 이유, 사용 예시 등등에 대해 알아보겠습니다. 💡 MVC 패턴이란?

cocoon1787.tistory.com

 

MVC2 모델

  1. Model : 데이터 처리하는 영역
  2. View : 화면을 구현하는 영역
  3. Controller : 요청 경로를 처리하는 영역

 

 

 

728x90