코딩 이야기

[2022-2] 웹프로젝트 - 221103 본문

University Study/웹프로젝트

[2022-2] 웹프로젝트 - 221103

always7767 2022. 11. 3. 10:50

1) 프레임워크 
- 구현된 기능을 안정적으로 실행하도록 제어해주는 구조를 가진 라이브러리
- 비 기능적(업무적) 요구사항(성능, 보안, 확장성, 안정성 등)을 만족하는 구조
- 프레임워크는 애플리케이션들의 공통점을 찾아 기반 구조를 제공하여 개발자들이 기반 구조를 구현하는데 들어가는 노력 절감하도록 함

2) 프레임워크를 사용하는 이유
- 비 기능적인 요소들을 초기 개발단계마다 구현해야 하는 불합리함을 극복
- 기능 요구사항에 집중할 수 있음
- 디자인 패턴과 마찬가지로 반복되는 문제 해결을 위해 특화된 솔루션을 제공

3) 스프링 프레임워크
- Java 기반 응용 프로그램 개발을 위한 경량의 오픈소스 프레임워크
- 2003년 6월 Rod Johnson이 발표
- 모든 Java 애플리케이션 개발에 사용할 수 있으며 Java EE 위의 웹 애플리케이션 개발에 주로 사용됨

4) 스프링 프레임워크 특징
- 경량의 컨테이너로써 자바 객체를 직접 관리
- POJO 방식의 프레임워크
- IoC/DI 지원
- AOP(Aspect Oriented Programming) 지원
- myBatis, Hibernate 등의 DB 라이브러리 지원

장점 단점
1) Java 코드를 줄일 수 있다.
2) 반복되는 작업을 줄일 수 있어 기능 개발에 집중할 수 있다.
3) 프로젝트 관리가 용이하다.
4) 다수의 개발자와 동시에 프로젝트를 수행하기가 용이하다.
1) 처음 프로젝트 세팅이 다소 복잡하다.
2) 개념을 제대로 숙지하지 못하면 코드 분석 조차하기 어렵다.

5) 스프링 프레임워크의 용어
- IOC (Inversion Of Control) : 제어 역전
→ 객체의 생성, 의존성 설정, 생명주기 관리까지 모든 객체에 대한 제어를 개발자가 하지 않고 대신 프레임워크가 맡아서 처리
→ 개발자가 코드의 흐름이나 객체 생성에 관련된 코드를 소스코드에 직접 작성하는 것이 아니라 프레임워크가 사용하는 파일에 정보를 주면 이를 토대로
      프레임워크가 객체를 생성, 반환하고 코드 동작 순서를 결정하게 된다는 의미
→ POJO의 생성, 초기화, 서비스, 소멸에 대한 권한 가짐

- DI
→ 의존성 주입이라는 OOP 방법 중 하나
→ 객체들 간 부품 조립으로 생각하는 것이 좋음
→ 스프링(ApplicationContext)이 관리하는 객체들을 빈(Bean)이라고 함
→ 각 클래스 간의 의존관계를 빈(bean) 설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것
개발자 역할 : 빈(bean) 설정 파일에서 의존관계가 필요하다는 정보 추가
컨테이너의 역할 : 프로그램 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입
빈들 간의 의존관계를 처리하는 방식 : xml 설정, annotation 설정, java 설정

 6) 스프링 실습을 위한 설치하기
- JDK 14 설치 (https://jdk.java.net/java-se-ri/14)
- Spring Tool Suite 3 설치 (https://github.com/spring-attic/toolsuite-distribution/wiki/Spring-Tool-Suite-3
→ Spring Tool Suite 4 보다는 실습을 위한 환경은 Spring Tool Suite 3가 더 나음.

7) 스프링 실습
- 위 6번 과정에서 Spring Tool Suite 3 설치 후 Spring 프로그램 실행
- File → New → Spring Legacy Project → Project name 입력 → Templates에서 Spring MVC Project 선택 → 
   Next 클릭 → Spring MVC Project 이름 지정 → Finsh 

'University Study > 웹프로젝트' 카테고리의 다른 글

[2022-2] 웹프로젝트 - 221124  (0) 2022.11.24
[2022-2] 웹프로젝트 - 221025  (0) 2022.10.25
[2022-2] 웹프로젝트 - 220920  (0) 2022.09.20
Comments