[SPRING]

카테고리 없음 2018. 5. 23. 09:40 |

마. 스프링의 디렉토리 구조

src/main/java - 자바 코드(Controller, Model, Service)

src/main/resources - 자바 코드에서 참조하는 리소스 파일들 sqlMapConfig.xml, mybatis의 mapper

src/test/java - 테스트 관련 코드

src/test/resources - 테스트 코드에서 참조하는 리소스 파일들

src/main/webapp - 웹 서비스 루트 디렉토리(외부에서 접근 가능)

src/main/webapp/resources - js,css,image 등의 웹 리소스 파일

src/main/webapp/WEB-INF/classes 컴파일된 클래스

src/main/webapp/WEB-INF/spring - 스프링의 환경설정 파일

src/main/webapp/WEB-INF/spring/root-context.xml - 서블릿과 관련되지 않은 모든 리소스에 대한 설정

src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml - 서블릿과 관련된 리소스에 대한 설정

src/main/webapp/WEB-INF/views - html, jsp 페이지

src/main/wedbapp/WEB-INF - 외부에서 접근 불가능(보안을 위해서) 컨트롤러를 경유해서 접근 가능

pom.xml - 메이븐에서 참조하는 설정 파일



바. 스프링의 주요 특징

- POJO(Plain Old Java Object) 기반의 구성 : 별도의 API가 필요하지 않은 일반적인 자바 코드를 이용하여 개발 가능

- 의존성 주입(DI)를 통한 객체 간의 관계 구성

- AOP(Aspect Oriented Programming) 지원 : 반복적인 코드를 줄이고, 개발자가 비즈니스 로직에만 집중할 수 있도록 지원함

- 편리한 MVC 구조

- WAS에 종속적이지 않은 개발 환경


1) loc(Inversion of Control. 제어의 역전) - 객체에 대한 제어권

- 기존에는 개발자에게 제어권이 있었음(new 연산자)

- 객체의 제어권을 스프링에게 넘김

- 인스턴스의 라이프 사이클(생성부터 소멸까지)을 개발자가 아닌 스프링 프레임워크가 담당


2) DI(Dependency Injection, 의존관계 주입)

- 객체 간의 의존성을 개발자가 설정하는 것이 아닌 스프링 컨테이너가 주입시켜 주는 기능

- 객체를 쉽게 확장하고 재사용할 수 있음


(가) 의존 관계

B의 코드가 변경되면 A의 코드도 변경되는 경우

A와 B는 의존관계가 있다.

A는 B에 의존한다


A

B

코드 변경 발생 

유연한 확장이 어려움 

강한 결합과 느슨한 결합 

 

B의 코드 변경이 A의 영향을 미치지 않도록 느슨한 설계 

 

A

B

코드 변경 불필요 

유연한 확장이 가능함 

 

핵심 기능의 변경이 쉬워짐 

강한 결합은 (결합도가 높으면) 유지보수를 어렵게 함 

 

한 곳의 수정 => 나비효과

 



(나) 강한 결합과 느슨한 결합



Posted by 너래쟁이
: