Spring

Spring 이란?

JUNGKEUNG 2021. 7. 14. 17:56

스프링이란?


JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용한다. JAVA로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀이라 할 수 있다. JAVA의 활용도가 높아졌고 따라서 프로젝트 규모도 커지게 되었다. JAVA에서 JSP, MyBatis, JPA 등 여러가지 기술을 사용하는데 이 기술을 Spring을 이용하여 좀더 편하게 사용할수 있는것이다.

Spring은 중복코드의 사용률을 줄여주고, 비즈니스 로직을 더 간단하게 해줄수 있다. 그리고 오픈소스를 좀더 효율적으로 가져다 쓰기도 좋다.

결론적으로 Spring은 JAVA 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임 워크이다

  • 스프링은 자바 언어 기반의 프레임워크
  • 자바 언어의 가장 큰 특징 - 객체 지향 언어
  • 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
  • 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크

 

 

컨테이너란?


  • 객체의 생성, 관리를 담당하고, 객체를 운용하는 데 필요한 기능을 제공한다.
  • 스프링에서 컨테이너 역할을 하는 것은 ?
    •  BeanFactory
    • ApplicationContext (BeanFactory 상속)
  • 두 컨테이너의 차이점은?
    • BeanFactory
      • applicationContext.xml (스프링 설정 파일) 에 등록된 bean 객체를 생성 및 관리
      • 클라이언트로부터 요청이 들어올 때만 객체를 생성한다.
    • ApplicationContext
      • BeanFactory의 객체 생성 및 관리 + 트랜잭션 관리 / 메시지 기반의 다국어처리 지원
      • 컨테이너가 구동되는 시점에 bean에 등록된 클래스를 객체화 한다.
      • GenericXmlApplicationContext -> ApplicationContext를 구현한 대표 클래스

 

 

 

프레임워크의 장점과 단점


장점 - 개발 시간을 줄일 수 있고 오류로부터 자유로울 수 있다.

단점 - 프레임워크에 너무 의존하면 개발 능력이 떨어져서 프레임워크 없이 개발하는 것이 힘들어진다.

 

 

 

특징


IoC( Inversion of Control) 제어의 역행

제어의 주체가 개발자가 아닌 프레임워크라는 뜻으로 때에 따라 프레임워크가 작성된 코드를 호출하는 기술 객체의 생명주기의 관리까지 모든 객체에 대한 제어권을 프레임워크가 가진다.

DI (Dependency Injection) 의존 주입

의존성 객체를 개발자가 생성하지 않고 클래스를 Bean으로 등록해놓으면 Bean으로 등록된 객체를 프레임 워크가 찾아서 알아서 주입해주는 기술

AOP (Aspect Oriented Programming)

각 코드마다 공통된 관심사를 분리하여 모듈화하는 프로그래밍 기법

객체 지향적으로 프로그래밍을 했음에도 로그, 트랜잭션, 성능확인 등 공통적인 관심사가 중복되는 문제점을 해결하기 위해 프록시 패턴을 사용하여 코드를 분리하여 관리하는 기술

 

 

 

의존성이란?


현재 객체가 다른 객체와 상호작용하고 있다면 다른 객체들은 현재 객체의 의존이라고한다.

 

 

 

싱글톤 패턴


인스턴스를 하나만 만들어 사용하기 위한 패턴

  • 해당 클래스의 인스턴스가 하나만 만들어진다.
  • 클래스에서 자신의 단 하나 뿐인 인스턴스를 관리하도록 만든다.
  • 어디서든 그 인스턴스에 접근할 수 있도록 한다.

 

 

 

싱클톤 패턴 사용하는 이유


  • 싱클톤 패턴을 사용하면 같은 인스턴스를 계속해서 참조하기 때문에 객체 생성 횟수를 줄일 수 있고, 이는 곧 메모리 공간을 절약해 주는 이점이 된다.
  • 객체 생성이 줄어 코드라인 수가 감소하여 가독성이 높아진다.
  • 프로그램 덩치가 점점커지다 보면 전역으로 선언한 클래스 객체가 햇갈리기 시작하고, 여러 사람이 공동작업을 하는 경우 생성해 놓은 클래스 객체를 또 생성해서 서로 다른 클래스를 작업하는 일도 발생하여 전역변수와 지역변수가 뒤죽박죽 되어 다른 쪽에서 올바른 값을 셋팅했는데 그 값이 안들어 가는 경우가 발생하는데, 싱클턴 패턴은 구조부터 이러한 가능성을 완전이 없애버린다.
  • 싱클톤 패턴은 거의 전역변수와 다름 없으며, 이는 장점이자 단점이다.
    • 전역변수와의 차이는 프로그램이 실행 되자 마자 메모리에 쌓이지만, 싱클톤 패턴을 사용하면 프로그램 중간에 인스턴스를 사용할때 만들어져 메모리가 쌓인다

 

 

 

POJO


EJB 등에서 사용되는 Java Bean이 아닌 Getter와 Setter로 구성된 가장 순수한 형태의 기본 클래스

"POJO는 getter 와 setter를 가진 단순한 자바 오브젝트"가 아니라 "getter와 setter를 가진 가장 단순한 자바 오브젝트는 POJO"다.

이전에는 원하는 엔터프라이즈 기술이 있다면 그 기술을 사용할 객체를 만들어서 사용하였다.

'Spring' 카테고리의 다른 글

JpaReporitory vs EntityManager  (0) 2021.11.23
엔티티 설계 주의점  (0) 2021.11.21
Maven vs Gradle  (0) 2021.11.05
Spring boot S3 업로드, 수정, 삭제  (0) 2021.06.18
JAR vs WAR  (0) 2021.06.18