본문 바로가기
Back/spring

spring 기본 개념

by 시월해 2021. 6. 22.

> Framework 란?

- 정보시스템을 개발 또는 운영할 때 필요한 기본 기능을 미리 구현해 놓은 것.

- 추가 기능을 개발하여 조립함으로써 전체 정보시스템을 완성할 수 있음.

 

http://www.egovframe.go.kr

 

표준프레임워크 포털 eGovFrame

전자정부 표준프레임워크 서비스 EGOVERNMENT STANDARD FRAMEWORK 지속적인 품질관리 및 고도화를 통해 경쟁력 향상기술지원 및 교육 등을 통한 확산 보급

www.egovframe.go.kr

 

기본 환경 셋팅이 어렵다.

셋팅을 50~60% 해놓은 뒤 기능만 올리면 된다.

 

> 장점


- 객체지향 원칙 적용

- 프로그램이 가벼움

- 톰캣 서버 사용 가능

- 단순하고 깔끔한 코드 작성

- 생산성과 품질 향상

- 유연성과 확장성 증대

- 코드가 짧아진다.

- 시간/노력이 감소된다.

 

> 단점

 

- 웹 애플리케이션만 적용된다

 

> 등장배경

 

- 자바 기반 엔터프라이즈 애플리케이션 개발의 복잡함을 간소화하기 위해서 개발된 프레임워크

- POJO 개념 도입 -> 컴포넌트간 낮은 결합도 -> 테스트, 재사용성, 유지보수성 향상

 

POJO? : 평범한 자바객체

- 구현(implements) 또는 확장(extends)하지 않은 순수한 자바객체 의미

- 특정 interface나 class로 부터 상속받지 않음

- 어떠한 자바 API도 임포트하지 않음 

- 다른 객체 접근을 위해서 스프링이 객체 주입(DI)   =>중요 개념

 

메인 클래스는 구현해놓은 클래스가 반드시 있어야만 실행이 된다. 이 경우 구현 클래스를 변경해야할 사항이 생기면 프로젝트 내의 모든 클래스를 변경해야한다. 이것을 강한 결합 관계라고 하는데, 결합 관계가 강할수록 유지 보수 비용이 증가하기 때문에 좋지 않다. 이 강한 결합도를 해결하기 위해 spring이 등장하게 되었다.

 

> 의존성 주입(Dependency Injection)

- POJO에서 외부 객체 접근을 위해 필요한 객체를 스프링에서 주입하는 의미

- 제3자가 객체 주입 -> '제어의 역전(IoC)’ 라고 표현

 

> SPRING 주요 전략

- 자바의 복잡함을 간소화하기 위한 전략.

1. POJO를 이용한 가볍고, 비 침투적인 개발. (interface, class, API 침투 차단)

2. DI와 인터페이스 기반 느슨한 결합도(클래스 약결합).

3. 애스펙트 지향 프로그래밍을 통한 공통 관심사 재사용

 

> SPRING FRAMEWORK 특징

① 스프링은 경량 컨테이너

- 스프링은 자바 기반 프레임워크(JavaEE에 비해서 경량)

- 자바 객체 생성, 소멸 등의 라이프 사이클 관리

 

② 스프링은 DI(Dependency Injection) 지원

- 설정 파일(xml)이나 annotation을 통해서 객체 간 의존관계 설정

- 확장성과 유지보수성 (▲)

 

③ 스프링은 AOP(Aspect Oriented Programming) 지원

- 모듈에서 공통으로 필요한 부분(트랜잭션, 로깅, 보안)을 관심(Aspect)으로 분리해 놓고 필요한 경우 적용

 

④ 스프링은 POJO(Plain Old Java Object) 지원

- 스프링 컨테이너에 저장되는 자바 객체는 특정한 인터페이스를 구현하거나 클래스를 상속받지 않음

- 평범한 JAVA 객체

 

⑤ 스프링은 DB처리와 관련된 다양한 API 지원

- Spring-JDBC, iBatis, myBatis, Hibernate, JPA 등 ORM(Object Relational Mapping) 처리를 위해 널리 사용되는 라이브러리의 연동 지원

- 엔터프라이즈 어플리케이션(JMS, 메일, 스케줄링 등) 개발에 필요한 다양한 API를 설정 파일과 annotation 을 통해서 손쉽게 사용 (Struts2, JSF와 같은 프레임워크와의 연동 지원)

 

> SPRING 설치 순서

1. https://spring.io/tools 사이트 이동 

2. 하단으로 내려서 Spring Tool Suite 3 wiki 링크 클릭

3. Spring Tool Suite 3.9.11 (New and Noteworthy)

4. https://download.springsource.com/release/STS/3.9.11.RELEASE/dist/e4.14/spring-tool-suite-3.9.11.RELEASE-e4.14.0-win32-x86_64.zip

5. 압축 푼 후 /sts-bundle/sts-3.9.11.RELEASE/STS.exe 실행

 

 

> SPRING 프로젝트 만들기

(현업에서는 Spring Starter Project를 많이 사용-스프링부트)

1. Package Explorer 오른쪽 클릭 -> New -> Spring Legacy Project 생성

2. Spring MVC Project 선택

3. 세 개 이상의 경로를 가진 패키지 생성(com.test.nonspring)

 

> Servers 설정

1. 기본적으로 같이 생성된 Servers 프로젝트는 삭제한다.

2. New -> Other -> Server -> Tomcat 9.0 설정

3. server.xml에서 63번라인에 포트번호를 8282로 변경

4. 상단 메뉴 window -> web browser -> chrome 선택

5.Run As -> Run On Server -> Tomcat  선택

 

> 기본 View 경로

src / webapp / WEB-INF / views / home.jsp

 

> 기본 Controller 경로

src/main/java / com.test.nonspring / HomeController.java