성장일기 : 문과생의 개발 여정 (งᐖ)ว ( ᐛ )و

스프링 프레임워크 본문

백엔드개발/Spring

스프링 프레임워크

hyemi_flora 2024. 3. 14. 07:59

# 프레임워크 (Framework)

- Framework : 어떤 것을 구성하는 구조 또는 뼈대
- 프로젝트 개발에 효율적인 구조를 미리 만들어 놓은 것 (PPT 템플릿 같은 것)
- 기능을 미리 클래스나 인터페이스 등으로 만들어 제공하는 반제품
- 개발자는 이미 완성된 구조에 빈칸을 채우는 느낌으로 프로젝트를 진행 할 수 있다

- 프레임워크의 장점 : 이미 구조가 잡혀 있어서 프로젝트의 전체적인 구조에 대한 지식이 없는 초보 개발자들도 프로젝트에 투입할 수 있다는 장점 (비용절감)
- 일정 수준 이상의 품질이 항상 보장된다

# 스프링 프레임워크

- 자바 웹 애플리케이션 개발을 위한 오픈 소스 프레임워크
- 자바, JSP를 이용해 웹 애플리케이션 서버 개발을 효율적으로 진행하기 위한 프레임워크
- 다양한 디자인 패턴 및 기능들이 미리 구현되어 있기 때문에 효율적으로 개발을 진행할 수 있다
- 애플리케이션에서 사용되는 여러 빈(클래스 객체)을 스프링이 권한을 가지고 직접 관리한다

# 스프링의 메인 컨셉

1. POJO (Plain Old Java Object)
- JSP처럼 별도의 공부가 필요한 문법보다 Java의 문법을 선호한다
- 데이터 처리과정(백엔드)에 JSP코드가 섞이는 것은 바람직 하지 않으며 순수 JAVA코드로 작성되어야 한다
- 익숙하지 않은 별도의 API를 최소화하여 개발자들의 혼란을 방지한다

2. 의존성 주입 (DI, Dependency Injection)
- 생성자를 아예 사용하지 말자 (생성자로 인해 유지보수 비용이 증가한다)
- 프로젝트 내부의 생성자 사용을 모두 제거하여 객체간의 결합도를 낮추었다
       ※ 결합도가 높다 - 하나 고쳤는데 에러(빨간줄)이 많이 뜬다
       ※ 결합도가 낮다 - 하나 고쳤는데 아무 문제도 생기지 않고 잘 돌아간다...

- 스프링 특징

1. EBJ(스프링 이전에 사용한 프레임워크)보다 가볍고 배우기 쉽다
2. 제어역행(IoC, Inversion of Control)기술을 이용해 애플리케이션 간 느슨한 결합을 제어 서블릿이나 빈 등을 개발자가 코드에서 생성하지 않고 프레임워크가 직접 수행
3. 의존성 주입(DI, Dependency Injection 기능 클래스 객체를 개발자가 코드에서 생성하지 않고 프레임워크가 생성하여 지원
4. 관점지향(AOP, Aspect-Oriented Programming) 기능을 이용해 자원관리 핵심 기능 외 부수 기능들을 분리 구현함으로써 모듈성을 증가시키는 방법
5. 영속성과 관련된 다양한 서비스 지원
6. 수많은 라이브러리 연동기능

# 스프링 프로젝트의 기본구조

- src/main/java : 자바 코드를 작성하는 곳
- src/main/resources : 자바 코드를 실행할 때 필요한 자원을 저장하는 곳
- src/test/java : 작성한 자바 코드에 대한 테스트 코드를 작성하는 곳
- src/test/resources : 테스트 코드를 실행할 때 필요한 자원들을 저장하는 곳
- Maven Dependencies : 이 프로젝트가 의존하고 있는 다른 프로젝트들의 목록
- webapp/resources : 웹 서버에서 사용되는 정적 자원들을 보관하는 곳 
- webapp/WEB-INF/spring/root-conetxt.xml : 전역 초기화 파라미터들을 정의하는 곳
- webapp/WEB-INF/spring/appServlet/servlet-context.xml : appServlet에서 사용할 지역 초기화 파라미터들을 정의하는 곳
- webapp/WEB-INF/views :뷰 페이지들(.jsp)을 보관하는 곳
- webapp/WEB-INF/web.xml : 웹 서버 설정 파일
- pom.xml (Project Object Model) : 메이븐 설정 파일

# 스프링 주요기능
- Core : 다른 기능과 설정을 분리하기 위한 IoC 기능제공
- Context : 스프링의 기본기능, 애플리케이션의 각 기능을 하는 Bean에 대한 접근방법 제공
- DAO : JDBC 기능을 좀더 편리하게 사용할 수 있도록 함
- ORM : 하이버네이트나 마이바티스 같은 영속성 관련 프레임워크와 연동된 기능 제공
- AOP : 관점 지향 기능 제공
- Web : 웹 애플리케이션 개발에 필요한 기능 제공
- WebMVC : 스프링에서 MVC 구현에 관련된 기능 제공 MVC(Model View Controller)

'백엔드개발 > Spring' 카테고리의 다른 글

MVC 디자인 패턴, 모델 속 요소들  (0) 2024.05.22
SPRING Framework  (0) 2024.03.23
메이븐 (Maven)  (1) 2024.03.14
의존성 주입  (0) 2024.03.14
Spring - 설치 및 세팅  (1) 2024.03.14