TIL .프레임 워크와 Spring 프레임 워크

hyuko·2022년 10월 22일
0

Spring-Study

목록 보기
1/8

🔥 프레임 워크란?

뼈대나 근간을 이루는 코드들의 묶음이다.
개발자는 각 개개인의 능력차이가 큰 직업이고, 개발자의 구성에 따라
프로젝트 결과 역시 큰 차이를 낳는다.

이러한 상황에서 극복하기 위한 코드의 결과물이 바로 프레임 워크가 된 것이다.
프로그램의 기본 흐름이나 구조를 정하고 모든 팀원들이 이 구조에 
자신의 코드를 추가하는 방식으로 개발하게 된다.

프레임 워크의 장점

    개발에 필요한 구조를 이미 코드로 만들어 놓았기 때문에
    실력이 부족한 개발자라 하더라도 반쯤 완성한 상태에서
    필요한 부분을 조립하는 형태의 개발이 가능하다.
    
    회사의 입장에서는 프레임 워크를 사용하게 된다면 일정한 품질이
    보장되는 결과물을 얻을 수 있고, 개발자 입장에서는 완성된 구조에
    자신이 맡은 코드를 개발해서 넣기 때문에 개발 시간을 단축할 수 있다.
    
    

⭐ 스프링 프레임워크란?

    경량 프레임워크(Light-weight)
    예전 프레임 워크들은 다양한 경우를 처리할 수 있는 다양한 기능을 가지도록
    만들다 보니 하나의 기능을 위해서 너무 많은 구조가 필요했다.
    
    기술이 너무나 복잡하고 방대 했기 때문에, 전체를 이해하고 개발하기에는
    어려움이 많았다. 그래서 스프링 프레임워크가 등장을 했고, 특정 기능을 위주로
    간단한 JAR파일 등을 이용해서 모든 개발이 가능하도록 구성되어 있다.
    

스프링 프레임워크의 장점

    1. 복잡함에 반기를 들어서 만들어진 프레임워크이다.
    2. 프로젝트 전체 구조를 설계할 때 유용한 프레임워크
    3. 다른 프레임워크들의 포용(여러 프레임워크를 혼용해서 사용가능)
    4. 개발 생산성과 개발도구의 지원
    

스프링 프레임워크의 특징

- POJO (Plain Old Java Object) 기반의 구성

	오래된 방식의 간단한 자바 객체라는 의미이며, 
    JAVA 코드에서 일반적으로 객체를 구성하는 방식을 
    스프링 프레임워크에서 그대로 사용할 수 있다는 말이다.
		
- ⭐⭐ 의존성 주입(DI)을 통한 객체 간의 관계 구성

	의존성(Dependency)이란 하나의 객체가 다른 객체 없이
    제대로 된 역활을 할 수 없다는 것을 의미한다.
    예를 들어 A객체가 B객체 없이 동작이 불가능한 상황을 'A'가 'B'에
    의존적이다 라고 표현한다.
    
    ex) 레스토랑은 셰프없이 운영이 불가능하다 > 레스토랑이 셰프에 의존적이다.
    
    주입(Injection)은 말 그대로 외부에서 밀어 넣는 것을 의미한다.
    예를 들어 어떤 객체가 필요한 객체를 외부에서 밀어 넣는 것을 의미한다.
    주입을 받는 입장에서는 어떤 객체인지 신경 쓸 필요가 없고 
    어떤 객체에 의존하든 자신의 역활은 변하지 않게 된다.
    
    ex) 어떠한 환자가 병원을 찾아 병에대한 진단을 의사에게 받는다
    의사는 주사를 처방 한다. 
    주사에 어떠한 약물이 들었을 뿐 환자가 주사를 맞는 것에 어떠한 신경을 쓰지않는다.
    그렇다고 이 약물이 바뀐다하여 환자라는 사람이 의사가 되는 것은 아니다.
    
    ** 의존
    ⓐ →→→→→ ⓑ
    ( a라는 객체에서 b라는 객체를 직접 생성 )
    
    ** 의존성 주입
    ⓐ →→→ ??? ↔↔↔ ⓑ
    ( a는 b가 필요하다는 신호만 보내주고, b객체를 주입하는 것은 외부에서 이루어짐)
    
    ⭐ 의존성 주입방식을 사용하기 위해서는 ???라는 존재가 필요하게 된다.
    스프링 프레임워크에서는 ApplicationContext가 ???라는 존재이며,
    필요한 객체들을 생성하고, 필요한 객체들을 주입해주는 역활을 한다.
    
    따라서 개발자들은 기존의 프로그래밍과 달리 객체와 객체를 분리해서 생성하고,
    이러한 객체들을 엮는(Wiring)작업의 형태로 개발하게 된다.
    
    ApplicationContext가 관리하는 객체들을 '빈(Bean)'이라고 부르고,
    빈과 빈 사이의 의존 관계를 처리하는 방식으로는 XML방식, 어노테이션 설정,
    Java 설정 방식을 이용할 수 있다.

    
- AOP(Aspect-Oriented-programming) 지원
	
    관점 지향 프로그래밍,
    좋은 개발 환경에서는 개발자가 비지니스 로직에만 집중할 수 있게 한다.
    스프링 프레임워크는 반복적인 코드를 제거해줌으로써 핵심 비지니스 로직에만
    집중할 수 있는 방법을 제공한다.
    
    보안이나 로그, 트랜잭션, 예외처리와 같이 비지니스 로직은 아니지만, 
    반드시 처리가 필요한 부분을 횡단 관심사(cross-concern)이라고 한다.
    
    스프링 프레임워크는 이러한 횡단 관심사를 분리해서 제작하는 것이 가능하고
    횡단 관심사를 모듈로 분리하는 프로그래밍을 AOP라고 한다.
    
    이를 통해서 3가지의 이점이 생긴다.
    
    	1) 핵심 비지니스 로직에만 집중하여 코드 개발
        2) 각 프로젝트마다 다른 관심사 적용 시 코드 수정 최소화
        3) 원하는 관심사의 유지보수가 수월한 코드 구성 가능
        
- 편리한 MVC 구조

	[트랜잭션의 지원]
    	DB작업 시에 트랜잭션 관리를 매번 상황에 맞게 코드로 작성하지 않고, 
        어노테이션이나 XML로 트랜잭션 관리를 설정할 수 있다.
        
- WAS의 종속적이지 않은 개발 환경

	[단위 테스트]
    	전체 Application을 실행하지 않아도 기능별 단위 테스트가 용이하기 때문에
        버그를 줄이고 개발 시간을 단축할 수 있다.
        
    

    	

1일차를 마치며...

프레임 워크의 기본적인 정의와 특징 , 그리고 프레임 워크중 하나인 스프링 프레임워크를
배우면서 앞으로 코드를 치면서 각각의 특징과 장점과 단점들을 적어 갈 예정입니다.

스프링의 특징으로 의존성 주입이라던지, AOP개념은 익히 중요하다 들었던 바
여러 회차에 나누어 계속 공부할 예정 입니다.

오늘도 내일도 화이팅!
혹 잘못된 내용이 있거나 추가 되어야 할 내용이 있다면 언제든 댓글 부탁드립니다
개발 공부를 시작한지 1년정도 되어가는 코린이입니다!

profile
백엔드 개발자 준비중

0개의 댓글